mirror of
https://github.com/hanskokx/arcane_framework.git
synced 2026-05-14 10:29:06 +02:00
ac82e93b9d
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>
98 lines
2.5 KiB
Dart
98 lines
2.5 KiB
Dart
import "package:arcane_framework/arcane_framework.dart";
|
|
import "package:flutter/material.dart";
|
|
import "package:flutter_test/flutter_test.dart";
|
|
|
|
void main() {
|
|
group("ArcaneServiceProvider", () {
|
|
late List<ArcaneService> testServices;
|
|
|
|
setUp(() {
|
|
testServices = [
|
|
MockArcaneService(),
|
|
AnotherMockService(),
|
|
];
|
|
});
|
|
|
|
testWidgets("provides services to widget tree", (tester) async {
|
|
await tester.pumpWidget(
|
|
ArcaneApp(
|
|
services: testServices,
|
|
child: Builder(
|
|
builder: (context) {
|
|
final provider = ArcaneServiceProvider.of(context);
|
|
expect(provider.serviceInstances, equals(testServices));
|
|
return const SizedBox();
|
|
},
|
|
),
|
|
),
|
|
);
|
|
});
|
|
|
|
testWidgets("serviceOfType extension returns correct service",
|
|
(tester) async {
|
|
await tester.pumpWidget(
|
|
ArcaneApp(
|
|
services: testServices,
|
|
child: Builder(
|
|
builder: (context) {
|
|
final service = context.serviceOfType<MockArcaneService>();
|
|
expect(service, isNotNull);
|
|
expect(service, isA<MockArcaneService>());
|
|
return const SizedBox();
|
|
},
|
|
),
|
|
),
|
|
);
|
|
});
|
|
|
|
testWidgets("serviceOfType returns null for unregistered service",
|
|
(tester) async {
|
|
await tester.pumpWidget(
|
|
ArcaneApp(
|
|
services: testServices,
|
|
child: Builder(
|
|
builder: (context) {
|
|
final service = context.serviceOfType<UnregisteredService>();
|
|
expect(service, isNull);
|
|
return const SizedBox();
|
|
},
|
|
),
|
|
),
|
|
);
|
|
});
|
|
|
|
test("of() throws when no provider is found", () {
|
|
final context = MockBuildContext();
|
|
expect(
|
|
() => ArcaneServiceProvider.of(context),
|
|
throwsException,
|
|
);
|
|
});
|
|
|
|
testWidgets("updateShouldNotify always returns true", (tester) async {
|
|
final provider = ArcaneServiceProvider(
|
|
serviceInstances: testServices,
|
|
child: const SizedBox(),
|
|
);
|
|
|
|
expect(
|
|
provider.updateShouldNotify(
|
|
ArcaneServiceProvider(
|
|
serviceInstances: testServices,
|
|
child: const SizedBox(),
|
|
),
|
|
),
|
|
true,
|
|
);
|
|
});
|
|
});
|
|
}
|
|
|
|
class MockArcaneService extends ArcaneService {}
|
|
|
|
class AnotherMockService extends ArcaneService {}
|
|
|
|
class UnregisteredService extends ArcaneService {}
|
|
|
|
class MockBuildContext extends Fake implements BuildContext {}
|