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,144 @@
|
||||
import "package:arcane_framework/arcane_framework.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_test/flutter_test.dart";
|
||||
import "package:mockito/annotations.dart";
|
||||
import "package:mockito/mockito.dart";
|
||||
|
||||
import "authentication_service_test.mocks.dart";
|
||||
|
||||
@GenerateMocks([
|
||||
ArcaneAuthInterface,
|
||||
ArcaneEnvironmentProvider,
|
||||
])
|
||||
void main() {
|
||||
late ArcaneAuthInterface mockInterface;
|
||||
|
||||
group("ArcaneAuthenticationService", () {
|
||||
setUp(() async {
|
||||
// Initialize mocks
|
||||
mockInterface = MockArcaneAuthInterface();
|
||||
|
||||
// Initialize the service
|
||||
await ArcaneAuthenticationService.I.reset();
|
||||
|
||||
// Set up default mock behaviors
|
||||
when(mockInterface.login(input: anyNamed("input"))).thenAnswer(
|
||||
(_) async => Result.ok(null),
|
||||
);
|
||||
when(mockInterface.logout()).thenAnswer(
|
||||
(_) async => Result.ok(null),
|
||||
);
|
||||
when(mockInterface.init()).thenAnswer(
|
||||
(_) async {},
|
||||
);
|
||||
|
||||
await ArcaneAuthenticationService.I.registerInterface(mockInterface);
|
||||
});
|
||||
|
||||
testWidgets("login with success", (WidgetTester tester) async {
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: ArcaneEnvironmentProvider(
|
||||
environment: Environment.normal,
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
final result = await ArcaneAuthenticationService.I.login(
|
||||
input: {"username": "test"},
|
||||
);
|
||||
expect(result.isSuccess, true);
|
||||
expect(
|
||||
ArcaneAuthenticationService.I.status,
|
||||
equals(AuthenticationStatus.authenticated),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets("login with failure", (WidgetTester tester) async {
|
||||
// Reset the mock behavior for this specific test
|
||||
when(mockInterface.login(input: anyNamed("input")))
|
||||
.thenAnswer((_) async => Result.error("error"));
|
||||
|
||||
final result = await ArcaneAuthenticationService.I
|
||||
.login(input: {"username": "test"});
|
||||
expect(result.isFailure, true);
|
||||
expect(
|
||||
ArcaneAuthenticationService.I.status,
|
||||
equals(AuthenticationStatus.unauthenticated),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets("logout with success", (WidgetTester tester) async {
|
||||
ArcaneAuthenticationService.I.setAuthenticated();
|
||||
final result = await ArcaneAuthenticationService.I.logOut();
|
||||
expect(result.isSuccess, true);
|
||||
expect(
|
||||
ArcaneAuthenticationService.I.status,
|
||||
equals(AuthenticationStatus.unauthenticated),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets("setDebug enables debug mode", (WidgetTester tester) async {
|
||||
late BuildContext capturedContext;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: ArcaneEnvironmentProvider(
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
capturedContext = context;
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.pump();
|
||||
ArcaneEnvironment.of(capturedContext).enableDebugMode();
|
||||
await tester.pump();
|
||||
expect(
|
||||
ArcaneEnvironment.of(capturedContext).environment,
|
||||
equals(Environment.debug),
|
||||
);
|
||||
});
|
||||
|
||||
testWidgets("setNormal disables debug mode", (WidgetTester tester) async {
|
||||
late BuildContext capturedContext;
|
||||
|
||||
await tester.pumpWidget(
|
||||
MaterialApp(
|
||||
home: ArcaneEnvironmentProvider(
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
capturedContext = context;
|
||||
return Container();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
await tester.pump();
|
||||
ArcaneEnvironment.of(capturedContext).enableDebugMode();
|
||||
await tester.pump();
|
||||
|
||||
expect(
|
||||
ArcaneEnvironment.of(capturedContext).environment,
|
||||
equals(Environment.debug),
|
||||
);
|
||||
|
||||
ArcaneEnvironment.of(capturedContext).disableDebugMode();
|
||||
await tester.pump();
|
||||
|
||||
expect(
|
||||
ArcaneEnvironment.of(capturedContext).environment,
|
||||
equals(Environment.normal),
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user