cleanup and added unit tests

This commit is contained in:
verboomp
2026-01-27 14:09:12 +01:00
parent 3d456128b1
commit e4b2dd0462
42 changed files with 1467 additions and 977 deletions

View File

@@ -1,14 +1,17 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:fotodocumentation/controller/customer_controller.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:http/http.dart' as http;
import 'package:mockito/annotations.dart';
import 'package:mockito/mockito.dart';
import 'package:fotodocumentation/controller/customer_controller.dart';
import 'package:fotodocumentation/controller/login_controller.dart';
import 'package:fotodocumentation/controller/picture_controller.dart';
import 'package:fotodocumentation/l10n/app_localizations.dart';
import 'package:fotodocumentation/pages/ui_utils/dialog/snackbar_utils.dart';
import 'package:fotodocumentation/pages/ui_utils/header_utils.dart';
import 'package:fotodocumentation/utils/login_credentials.dart';
import 'package:fotodocumentation/utils/jwt_token_storage.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:fotodocumentation/utils/global_router.dart';
import 'test_utils.mocks.dart';
@@ -20,6 +23,7 @@ void setScreenSize(WidgetTester tester, int width, int height) {
MockLoginCredentials getDefaultLoginCredentials() {
var mockLoginCredentials = MockLoginCredentials();
when(mockLoginCredentials.isLoggedIn).thenReturn(true);
return mockLoginCredentials;
}
@@ -58,9 +62,9 @@ Future<void> pumpAppConfig(WidgetTester tester, String initialLocation) async {
// dart run build_runner build
@GenerateMocks([
LoginCredentials,
LoginController,
CustomerController,
HeaderUtils,
SnackbarUtils,
PictureController,
JwtTokenStorage,
http.Client,
])

View File

@@ -3,20 +3,22 @@
// Do not manually edit this file.
// ignore_for_file: no_leading_underscores_for_library_prefixes
import 'dart:async' as _i11;
import 'dart:convert' as _i12;
import 'dart:typed_data' as _i13;
import 'dart:ui' as _i6;
import 'dart:async' as _i7;
import 'dart:convert' as _i14;
import 'dart:typed_data' as _i15;
import 'dart:ui' as _i5;
import 'package:flutter/material.dart' as _i2;
import 'package:fotodocumentation/pages/ui_utils/dialog/snackbar_utils.dart'
as _i9;
import 'package:fotodocumentation/pages/ui_utils/header_utils.dart' as _i7;
import 'package:fotodocumentation/utils/jwt_token_storage.dart' as _i10;
import 'package:fotodocumentation/utils/login_credentials.dart' as _i4;
import 'package:http/http.dart' as _i3;
import 'package:fotodocumentation/controller/customer_controller.dart' as _i9;
import 'package:fotodocumentation/controller/login_controller.dart' as _i6;
import 'package:fotodocumentation/controller/picture_controller.dart' as _i11;
import 'package:fotodocumentation/dto/customer_dto.dart' as _i10;
import 'package:fotodocumentation/dto/jwt_token_pair_dto.dart' as _i8;
import 'package:fotodocumentation/dto/picture_dto.dart' as _i12;
import 'package:fotodocumentation/utils/jwt_token_storage.dart' as _i13;
import 'package:fotodocumentation/utils/login_credentials.dart' as _i3;
import 'package:http/http.dart' as _i2;
import 'package:mockito/mockito.dart' as _i1;
import 'package:mockito/src/dummies.dart' as _i5;
import 'package:mockito/src/dummies.dart' as _i4;
// ignore_for_file: type=lint
// ignore_for_file: avoid_redundant_argument_values
@@ -33,22 +35,8 @@ import 'package:mockito/src/dummies.dart' as _i5;
// ignore_for_file: subtype_of_sealed_class
// ignore_for_file: invalid_use_of_internal_member
class _FakeWidget_0 extends _i1.SmartFake implements _i2.Widget {
_FakeWidget_0(
Object parent,
Invocation parentInvocation,
) : super(
parent,
parentInvocation,
);
@override
String toString({_i2.DiagnosticLevel? minLevel = _i2.DiagnosticLevel.info}) =>
super.toString();
}
class _FakeResponse_1 extends _i1.SmartFake implements _i3.Response {
_FakeResponse_1(
class _FakeResponse_0 extends _i1.SmartFake implements _i2.Response {
_FakeResponse_0(
Object parent,
Invocation parentInvocation,
) : super(
@@ -57,9 +45,9 @@ class _FakeResponse_1 extends _i1.SmartFake implements _i3.Response {
);
}
class _FakeStreamedResponse_2 extends _i1.SmartFake
implements _i3.StreamedResponse {
_FakeStreamedResponse_2(
class _FakeStreamedResponse_1 extends _i1.SmartFake
implements _i2.StreamedResponse {
_FakeStreamedResponse_1(
Object parent,
Invocation parentInvocation,
) : super(
@@ -71,7 +59,7 @@ class _FakeStreamedResponse_2 extends _i1.SmartFake
/// A class which mocks [LoginCredentials].
///
/// See the documentation for Mockito's code generation for more information.
class MockLoginCredentials extends _i1.Mock implements _i4.LoginCredentials {
class MockLoginCredentials extends _i1.Mock implements _i3.LoginCredentials {
MockLoginCredentials() {
_i1.throwOnMissingStub(this);
}
@@ -79,18 +67,33 @@ class MockLoginCredentials extends _i1.Mock implements _i4.LoginCredentials {
@override
String get fullname => (super.noSuchMethod(
Invocation.getter(#fullname),
returnValue: _i5.dummyValue<String>(
returnValue: _i4.dummyValue<String>(
this,
Invocation.getter(#fullname),
),
) as String);
@override
bool get isLoggedIn => (super.noSuchMethod(
Invocation.getter(#isLoggedIn),
returnValue: false,
) as bool);
@override
bool get hasListeners => (super.noSuchMethod(
Invocation.getter(#hasListeners),
returnValue: false,
) as bool);
@override
void setLoggedIn(bool? loggedIn) => super.noSuchMethod(
Invocation.method(
#setLoggedIn,
[loggedIn],
),
returnValueForMissingStub: null,
);
@override
void logout() => super.noSuchMethod(
Invocation.method(
@@ -101,7 +104,7 @@ class MockLoginCredentials extends _i1.Mock implements _i4.LoginCredentials {
);
@override
void addListener(_i6.VoidCallback? listener) => super.noSuchMethod(
void addListener(_i5.VoidCallback? listener) => super.noSuchMethod(
Invocation.method(
#addListener,
[listener],
@@ -110,7 +113,7 @@ class MockLoginCredentials extends _i1.Mock implements _i4.LoginCredentials {
);
@override
void removeListener(_i6.VoidCallback? listener) => super.noSuchMethod(
void removeListener(_i5.VoidCallback? listener) => super.noSuchMethod(
Invocation.method(
#removeListener,
[listener],
@@ -137,85 +140,115 @@ class MockLoginCredentials extends _i1.Mock implements _i4.LoginCredentials {
);
}
/// A class which mocks [HeaderUtils].
/// A class which mocks [LoginController].
///
/// See the documentation for Mockito's code generation for more information.
class MockHeaderUtils extends _i1.Mock implements _i7.HeaderUtils {
MockHeaderUtils() {
class MockLoginController extends _i1.Mock implements _i6.LoginController {
MockLoginController() {
_i1.throwOnMissingStub(this);
}
@override
_i2.Widget titleWidget(String? text) => (super.noSuchMethod(
_i7.Future<({_i8.JwtTokenPairDto? jwtTokenPairDto})> authenticate(
String? username,
String? password,
) =>
(super.noSuchMethod(
Invocation.method(
#titleWidget,
[text],
#authenticate,
[
username,
password,
],
),
returnValue: _FakeWidget_0(
this,
Invocation.method(
#titleWidget,
[text],
),
returnValue: _i7.Future<({_i8.JwtTokenPairDto? jwtTokenPairDto})>.value(
(jwtTokenPairDto: null)),
) as _i7.Future<({_i8.JwtTokenPairDto? jwtTokenPairDto})>);
@override
_i7.Future<bool> refreshAccessToken() => (super.noSuchMethod(
Invocation.method(
#refreshAccessToken,
[],
),
) as _i2.Widget);
returnValue: _i7.Future<bool>.value(false),
) as _i7.Future<bool>);
@override
_i7.Future<bool> isUsingJwtAuth() => (super.noSuchMethod(
Invocation.method(
#isUsingJwtAuth,
[],
),
returnValue: _i7.Future<bool>.value(false),
) as _i7.Future<bool>);
}
/// A class which mocks [SnackbarUtils].
/// A class which mocks [CustomerController].
///
/// See the documentation for Mockito's code generation for more information.
class MockSnackbarUtils extends _i1.Mock implements _i9.SnackbarUtils {
MockSnackbarUtils() {
class MockCustomerController extends _i1.Mock
implements _i9.CustomerController {
MockCustomerController() {
_i1.throwOnMissingStub(this);
}
@override
void showSnackbar(
_i2.BuildContext? context,
String? msg,
bool? warning,
_i7.Future<List<_i10.CustomerListDto>> getAll(
String? query,
String? startsWith,
) =>
super.noSuchMethod(
(super.noSuchMethod(
Invocation.method(
#showSnackbar,
#getAll,
[
context,
msg,
warning,
query,
startsWith,
],
),
returnValueForMissingStub: null,
);
returnValue: _i7.Future<List<_i10.CustomerListDto>>.value(
<_i10.CustomerListDto>[]),
) as _i7.Future<List<_i10.CustomerListDto>>);
@override
void showSnackbarPopup(
_i2.BuildContext? context,
String? msg,
bool? warning,
) =>
super.noSuchMethod(
_i7.Future<_i10.CustomerDto?> get({required int? id}) => (super.noSuchMethod(
Invocation.method(
#showSnackbarPopup,
[
context,
msg,
warning,
],
#get,
[],
{#id: id},
),
returnValueForMissingStub: null,
);
returnValue: _i7.Future<_i10.CustomerDto?>.value(),
) as _i7.Future<_i10.CustomerDto?>);
}
/// A class which mocks [PictureController].
///
/// See the documentation for Mockito's code generation for more information.
class MockPictureController extends _i1.Mock implements _i11.PictureController {
MockPictureController() {
_i1.throwOnMissingStub(this);
}
@override
_i7.Future<bool> delete(_i12.PictureDto? dto) => (super.noSuchMethod(
Invocation.method(
#delete,
[dto],
),
returnValue: _i7.Future<bool>.value(false),
) as _i7.Future<bool>);
}
/// A class which mocks [JwtTokenStorage].
///
/// See the documentation for Mockito's code generation for more information.
class MockJwtTokenStorage extends _i1.Mock implements _i10.JwtTokenStorage {
class MockJwtTokenStorage extends _i1.Mock implements _i13.JwtTokenStorage {
MockJwtTokenStorage() {
_i1.throwOnMissingStub(this);
}
@override
_i11.Future<void> saveTokens(
_i7.Future<void> saveTokens(
String? accessToken,
String? refreshToken,
) =>
@@ -227,69 +260,69 @@ class MockJwtTokenStorage extends _i1.Mock implements _i10.JwtTokenStorage {
refreshToken,
],
),
returnValue: _i11.Future<void>.value(),
returnValueForMissingStub: _i11.Future<void>.value(),
) as _i11.Future<void>);
returnValue: _i7.Future<void>.value(),
returnValueForMissingStub: _i7.Future<void>.value(),
) as _i7.Future<void>);
@override
_i11.Future<String?> getAccessToken() => (super.noSuchMethod(
_i7.Future<String?> getAccessToken() => (super.noSuchMethod(
Invocation.method(
#getAccessToken,
[],
),
returnValue: _i11.Future<String?>.value(),
) as _i11.Future<String?>);
returnValue: _i7.Future<String?>.value(),
) as _i7.Future<String?>);
@override
_i11.Future<String?> getRefreshToken() => (super.noSuchMethod(
_i7.Future<String?> getRefreshToken() => (super.noSuchMethod(
Invocation.method(
#getRefreshToken,
[],
),
returnValue: _i11.Future<String?>.value(),
) as _i11.Future<String?>);
returnValue: _i7.Future<String?>.value(),
) as _i7.Future<String?>);
@override
_i11.Future<void> clearTokens() => (super.noSuchMethod(
_i7.Future<void> clearTokens() => (super.noSuchMethod(
Invocation.method(
#clearTokens,
[],
),
returnValue: _i11.Future<void>.value(),
returnValueForMissingStub: _i11.Future<void>.value(),
) as _i11.Future<void>);
returnValue: _i7.Future<void>.value(),
returnValueForMissingStub: _i7.Future<void>.value(),
) as _i7.Future<void>);
@override
_i11.Future<bool> hasTokens() => (super.noSuchMethod(
_i7.Future<bool> hasTokens() => (super.noSuchMethod(
Invocation.method(
#hasTokens,
[],
),
returnValue: _i11.Future<bool>.value(false),
) as _i11.Future<bool>);
returnValue: _i7.Future<bool>.value(false),
) as _i7.Future<bool>);
@override
_i11.Future<void> updateAccessToken(String? accessToken) =>
_i7.Future<void> updateAccessToken(String? accessToken) =>
(super.noSuchMethod(
Invocation.method(
#updateAccessToken,
[accessToken],
),
returnValue: _i11.Future<void>.value(),
returnValueForMissingStub: _i11.Future<void>.value(),
) as _i11.Future<void>);
returnValue: _i7.Future<void>.value(),
returnValueForMissingStub: _i7.Future<void>.value(),
) as _i7.Future<void>);
}
/// A class which mocks [Client].
///
/// See the documentation for Mockito's code generation for more information.
class MockClient extends _i1.Mock implements _i3.Client {
class MockClient extends _i1.Mock implements _i2.Client {
MockClient() {
_i1.throwOnMissingStub(this);
}
@override
_i11.Future<_i3.Response> head(
_i7.Future<_i2.Response> head(
Uri? url, {
Map<String, String>? headers,
}) =>
@@ -299,7 +332,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
[url],
{#headers: headers},
),
returnValue: _i11.Future<_i3.Response>.value(_FakeResponse_1(
returnValue: _i7.Future<_i2.Response>.value(_FakeResponse_0(
this,
Invocation.method(
#head,
@@ -307,10 +340,10 @@ class MockClient extends _i1.Mock implements _i3.Client {
{#headers: headers},
),
)),
) as _i11.Future<_i3.Response>);
) as _i7.Future<_i2.Response>);
@override
_i11.Future<_i3.Response> get(
_i7.Future<_i2.Response> get(
Uri? url, {
Map<String, String>? headers,
}) =>
@@ -320,7 +353,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
[url],
{#headers: headers},
),
returnValue: _i11.Future<_i3.Response>.value(_FakeResponse_1(
returnValue: _i7.Future<_i2.Response>.value(_FakeResponse_0(
this,
Invocation.method(
#get,
@@ -328,14 +361,14 @@ class MockClient extends _i1.Mock implements _i3.Client {
{#headers: headers},
),
)),
) as _i11.Future<_i3.Response>);
) as _i7.Future<_i2.Response>);
@override
_i11.Future<_i3.Response> post(
_i7.Future<_i2.Response> post(
Uri? url, {
Map<String, String>? headers,
Object? body,
_i12.Encoding? encoding,
_i14.Encoding? encoding,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -347,7 +380,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
#encoding: encoding,
},
),
returnValue: _i11.Future<_i3.Response>.value(_FakeResponse_1(
returnValue: _i7.Future<_i2.Response>.value(_FakeResponse_0(
this,
Invocation.method(
#post,
@@ -359,14 +392,14 @@ class MockClient extends _i1.Mock implements _i3.Client {
},
),
)),
) as _i11.Future<_i3.Response>);
) as _i7.Future<_i2.Response>);
@override
_i11.Future<_i3.Response> put(
_i7.Future<_i2.Response> put(
Uri? url, {
Map<String, String>? headers,
Object? body,
_i12.Encoding? encoding,
_i14.Encoding? encoding,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -378,7 +411,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
#encoding: encoding,
},
),
returnValue: _i11.Future<_i3.Response>.value(_FakeResponse_1(
returnValue: _i7.Future<_i2.Response>.value(_FakeResponse_0(
this,
Invocation.method(
#put,
@@ -390,14 +423,14 @@ class MockClient extends _i1.Mock implements _i3.Client {
},
),
)),
) as _i11.Future<_i3.Response>);
) as _i7.Future<_i2.Response>);
@override
_i11.Future<_i3.Response> patch(
_i7.Future<_i2.Response> patch(
Uri? url, {
Map<String, String>? headers,
Object? body,
_i12.Encoding? encoding,
_i14.Encoding? encoding,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -409,7 +442,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
#encoding: encoding,
},
),
returnValue: _i11.Future<_i3.Response>.value(_FakeResponse_1(
returnValue: _i7.Future<_i2.Response>.value(_FakeResponse_0(
this,
Invocation.method(
#patch,
@@ -421,14 +454,14 @@ class MockClient extends _i1.Mock implements _i3.Client {
},
),
)),
) as _i11.Future<_i3.Response>);
) as _i7.Future<_i2.Response>);
@override
_i11.Future<_i3.Response> delete(
_i7.Future<_i2.Response> delete(
Uri? url, {
Map<String, String>? headers,
Object? body,
_i12.Encoding? encoding,
_i14.Encoding? encoding,
}) =>
(super.noSuchMethod(
Invocation.method(
@@ -440,7 +473,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
#encoding: encoding,
},
),
returnValue: _i11.Future<_i3.Response>.value(_FakeResponse_1(
returnValue: _i7.Future<_i2.Response>.value(_FakeResponse_0(
this,
Invocation.method(
#delete,
@@ -452,10 +485,10 @@ class MockClient extends _i1.Mock implements _i3.Client {
},
),
)),
) as _i11.Future<_i3.Response>);
) as _i7.Future<_i2.Response>);
@override
_i11.Future<String> read(
_i7.Future<String> read(
Uri? url, {
Map<String, String>? headers,
}) =>
@@ -465,7 +498,7 @@ class MockClient extends _i1.Mock implements _i3.Client {
[url],
{#headers: headers},
),
returnValue: _i11.Future<String>.value(_i5.dummyValue<String>(
returnValue: _i7.Future<String>.value(_i4.dummyValue<String>(
this,
Invocation.method(
#read,
@@ -473,10 +506,10 @@ class MockClient extends _i1.Mock implements _i3.Client {
{#headers: headers},
),
)),
) as _i11.Future<String>);
) as _i7.Future<String>);
@override
_i11.Future<_i13.Uint8List> readBytes(
_i7.Future<_i15.Uint8List> readBytes(
Uri? url, {
Map<String, String>? headers,
}) =>
@@ -486,25 +519,25 @@ class MockClient extends _i1.Mock implements _i3.Client {
[url],
{#headers: headers},
),
returnValue: _i11.Future<_i13.Uint8List>.value(_i13.Uint8List(0)),
) as _i11.Future<_i13.Uint8List>);
returnValue: _i7.Future<_i15.Uint8List>.value(_i15.Uint8List(0)),
) as _i7.Future<_i15.Uint8List>);
@override
_i11.Future<_i3.StreamedResponse> send(_i3.BaseRequest? request) =>
_i7.Future<_i2.StreamedResponse> send(_i2.BaseRequest? request) =>
(super.noSuchMethod(
Invocation.method(
#send,
[request],
),
returnValue:
_i11.Future<_i3.StreamedResponse>.value(_FakeStreamedResponse_2(
_i7.Future<_i2.StreamedResponse>.value(_FakeStreamedResponse_1(
this,
Invocation.method(
#send,
[request],
),
)),
) as _i11.Future<_i3.StreamedResponse>);
) as _i7.Future<_i2.StreamedResponse>);
@override
void close() => super.noSuchMethod(