Nikolas Rimikis
1 year ago
1 changed files with 84 additions and 0 deletions
@ -0,0 +1,84 @@
|
||||
import 'package:mocktail/mocktail.dart'; |
||||
import 'package:neon/settings.dart'; |
||||
import 'package:neon/src/settings/models/option.dart'; |
||||
import 'package:neon/src/settings/models/storage.dart'; |
||||
import 'package:test/test.dart'; |
||||
|
||||
// ignore: missing_override_of_must_be_overridden |
||||
class OptionMock extends Mock implements Option {} |
||||
|
||||
class Collection extends NextcloudAppOptions { |
||||
Collection(final List<Option> options) : super(const AppStorage(StorageKeys.apps)) { |
||||
super.options = options; |
||||
} |
||||
} |
||||
|
||||
enum Keys implements Storable { |
||||
key1._('key1'), |
||||
key2._('key2'); |
||||
|
||||
const Keys._(this.value); |
||||
|
||||
@override |
||||
final String value; |
||||
} |
||||
|
||||
void main() { |
||||
group('OptionsCollection', () { |
||||
final option1 = OptionMock(); |
||||
final option2 = OptionMock(); |
||||
final collection = Collection([ |
||||
option1, |
||||
option2, |
||||
]); |
||||
|
||||
test('reset', () { |
||||
collection.reset(); |
||||
|
||||
verify(option1.reset).called(1); |
||||
verify(option2.reset).called(1); |
||||
}); |
||||
|
||||
test('dispose', () { |
||||
collection.dispose(); |
||||
|
||||
verify(option1.dispose).called(1); |
||||
verify(option2.dispose).called(1); |
||||
}); |
||||
|
||||
test('export', () { |
||||
when(() => option1.key).thenReturn(Keys.key1); |
||||
when(option1.serialize).thenReturn('value1'); |
||||
when(() => option1.enabled).thenReturn(true); |
||||
|
||||
when(() => option2.key).thenReturn(Keys.key2); |
||||
when(option2.serialize).thenReturn('value2'); |
||||
when(() => option2.enabled).thenReturn(false); |
||||
|
||||
const json = { |
||||
'app': {'key1': 'value1'}, |
||||
}; |
||||
|
||||
final export = collection.export(); |
||||
|
||||
expect(Map.fromEntries([export]), equals(json)); |
||||
}); |
||||
|
||||
test('import', () { |
||||
when(() => option1.key).thenReturn(Keys.key1); |
||||
when(() => option2.key).thenReturn(Keys.key2); |
||||
|
||||
const json = { |
||||
'app': { |
||||
'key1': 'value1', |
||||
'key2': null, |
||||
}, |
||||
}; |
||||
|
||||
collection.import(json); |
||||
|
||||
verify(() => option1.load('value1')).called(1); |
||||
verify(option2.reset).called(1); |
||||
}); |
||||
}); |
||||
} |
Loading…
Reference in new issue