mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-05-25 15:32:12 +00:00
86 lines
2.6 KiB
Dart
86 lines
2.6 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:twonly/globals.dart';
|
|
import 'package:twonly/src/utils/keyvalue.dart';
|
|
|
|
void main() {
|
|
late Directory tempDir;
|
|
|
|
setUp(() {
|
|
tempDir = Directory.systemTemp.createTempSync('twonly_keyvalue_test_');
|
|
AppEnvironment.initTesting(
|
|
customCacheDir: tempDir.path,
|
|
customSupportDir: tempDir.path,
|
|
);
|
|
});
|
|
|
|
tearDown(() {
|
|
if (tempDir.existsSync()) {
|
|
try {
|
|
tempDir.deleteSync(recursive: true);
|
|
} catch (_) {}
|
|
}
|
|
});
|
|
|
|
group('KeyValueStore Tests', () {
|
|
test('get returns null for non-existent key', () async {
|
|
final result = await KeyValueStore.get('non_existent');
|
|
expect(result, isNull);
|
|
});
|
|
|
|
test('put stores value and get retrieves it correctly', () async {
|
|
const key = 'test_key';
|
|
final value = {'name': 'twonly', 'version': 1};
|
|
|
|
await KeyValueStore.put(key, value);
|
|
|
|
final retrieved = await KeyValueStore.get(key);
|
|
expect(retrieved, isNotNull);
|
|
expect(retrieved?['name'], equals('twonly'));
|
|
expect(retrieved?['version'], equals(1));
|
|
});
|
|
|
|
test('delete removes stored value successfully', () async {
|
|
const key = 'delete_key';
|
|
final value = {'data': 'to_be_deleted'};
|
|
|
|
await KeyValueStore.put(key, value);
|
|
expect(await KeyValueStore.get(key), isNotNull);
|
|
|
|
await KeyValueStore.delete(key);
|
|
expect(await KeyValueStore.get(key), isNull);
|
|
});
|
|
|
|
test('delete on non-existent key completes without error', () async {
|
|
await expectLater(KeyValueStore.delete('non_existent'), completes);
|
|
});
|
|
|
|
test('put overwrites existing value', () async {
|
|
const key = 'overwrite_key';
|
|
final initialValue = {'status': 'initial'};
|
|
final updatedValue = {'status': 'updated'};
|
|
|
|
await KeyValueStore.put(key, initialValue);
|
|
var retrieved = await KeyValueStore.get(key);
|
|
expect(retrieved?['status'], equals('initial'));
|
|
|
|
await KeyValueStore.put(key, updatedValue);
|
|
retrieved = await KeyValueStore.get(key);
|
|
expect(retrieved?['status'], equals('updated'));
|
|
});
|
|
|
|
test('get handles corrupted JSON file gracefully by deleting it', () async {
|
|
const key = 'corrupt_key';
|
|
final file = File('${tempDir.path}/keyvalue/$key.json');
|
|
await file.parent.create(recursive: true);
|
|
await file.writeAsString('invalid json content');
|
|
|
|
expect(file.existsSync(), isTrue);
|
|
|
|
final retrieved = await KeyValueStore.get(key);
|
|
expect(retrieved, isNull);
|
|
expect(file.existsSync(), isFalse);
|
|
});
|
|
});
|
|
}
|