mirror of
https://github.com/hanskokx/arcane_framework.git
synced 2026-05-14 10:29:06 +02:00
[UNTESTED] Fixes notifiers and adds some additional methods. Adds tests.
Changes: // ArcaneEnvironment breaking: context.read<ArcaneEnvironment>() -> ArcaneEnvironment.of(context) breaking: context.read<ArcaneEnvironment>().state -> ArcaneEnvironment.of(context).environment; // Feature flag service added: reset() // Logging service added: registerInterface() added: unregisterInterfaces() added: unregisterAllInterfaces() // ArcaneReactiveTheme fixed: currentMode, dark, light now actually emit new values when changed added: getters for lightTheme, darkTheme, and systemTheme TODO: test systemTheme Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
import "package:arcane_framework/arcane_framework.dart";
|
||||
import "package:flutter_test/flutter_test.dart";
|
||||
|
||||
void main() {
|
||||
group("ArcaneFeatureFlags", () {
|
||||
late ArcaneFeatureFlags featureFlags;
|
||||
|
||||
setUp(() {
|
||||
featureFlags = ArcaneFeatureFlags.I;
|
||||
});
|
||||
|
||||
test("singleton instance is consistent", () {
|
||||
expect(identical(ArcaneFeatureFlags.I, featureFlags), true);
|
||||
});
|
||||
|
||||
group("feature management", () {
|
||||
setUp(() {
|
||||
Arcane.features.reset();
|
||||
});
|
||||
test("enableFeature adds feature to enabled list", () {
|
||||
featureFlags.enableFeature(MockFeature.test);
|
||||
expect(featureFlags.enabledFeatures, contains(MockFeature.test));
|
||||
expect(featureFlags.isEnabled(MockFeature.test), true);
|
||||
});
|
||||
|
||||
test("disableFeature removes feature from enabled list", () {
|
||||
featureFlags.enableFeature(MockFeature.test);
|
||||
featureFlags.disableFeature(MockFeature.test);
|
||||
expect(featureFlags.enabledFeatures, isNot(contains(MockFeature.test)));
|
||||
expect(featureFlags.isDisabled(MockFeature.test), true);
|
||||
});
|
||||
|
||||
test("enabling already enabled feature has no effect", () {
|
||||
featureFlags.enableFeature(MockFeature.test);
|
||||
final initialCount = featureFlags.enabledFeatures.length;
|
||||
featureFlags.enableFeature(MockFeature.test);
|
||||
expect(featureFlags.enabledFeatures.length, equals(initialCount));
|
||||
});
|
||||
|
||||
test("disabling already disabled feature has no effect", () {
|
||||
final initialCount = featureFlags.enabledFeatures.length;
|
||||
featureFlags.disableFeature(MockFeature.test);
|
||||
expect(featureFlags.enabledFeatures.length, equals(initialCount));
|
||||
});
|
||||
});
|
||||
|
||||
group("notifications", () {
|
||||
test("enableFeature notifies listeners", () {
|
||||
var notified = false;
|
||||
featureFlags.addListener(() => notified = true);
|
||||
featureFlags.enableFeature(MockFeature.test);
|
||||
expect(notified, true);
|
||||
});
|
||||
|
||||
test("disableFeature notifies listeners", () {
|
||||
featureFlags.enableFeature(MockFeature.test);
|
||||
var notified = false;
|
||||
featureFlags.addListener(() => notified = true);
|
||||
featureFlags.disableFeature(MockFeature.test);
|
||||
expect(notified, true);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
enum MockFeature {
|
||||
test,
|
||||
another,
|
||||
}
|
||||
Reference in New Issue
Block a user