mirror of
https://github.com/hanskokx/arcane_framework.git
synced 2026-05-14 18:39:05 +02:00
cb224560dc
Signed-off-by: Hans Kokx <hans.d.kokx@gmail.com>
90 lines
2.4 KiB
Dart
90 lines
2.4 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();
|
|
},
|
|
),
|
|
),
|
|
);
|
|
});
|
|
|
|
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 {}
|