diff --git a/packages/app_center/lib/snapd/snap_data.freezed.dart b/packages/app_center/lib/snapd/snap_data.freezed.dart index 97d2064b0..bf2ac41ca 100644 --- a/packages/app_center/lib/snapd/snap_data.freezed.dart +++ b/packages/app_center/lib/snapd/snap_data.freezed.dart @@ -76,6 +76,9 @@ abstract class $SnapDataCopyWith<$Res> { Snap? storeSnap, String? selectedChannel, String? activeChangeId}); + + $SnapCopyWith<$Res>? get localSnap; + $SnapCopyWith<$Res>? get storeSnap; } /// @nodoc @@ -120,6 +123,30 @@ class _$SnapDataCopyWithImpl<$Res, $Val extends SnapData> as String?, ) as $Val); } + + @override + @pragma('vm:prefer-inline') + $SnapCopyWith<$Res>? get localSnap { + if (_value.localSnap == null) { + return null; + } + + return $SnapCopyWith<$Res>(_value.localSnap!, (value) { + return _then(_value.copyWith(localSnap: value) as $Val); + }); + } + + @override + @pragma('vm:prefer-inline') + $SnapCopyWith<$Res>? get storeSnap { + if (_value.storeSnap == null) { + return null; + } + + return $SnapCopyWith<$Res>(_value.storeSnap!, (value) { + return _then(_value.copyWith(storeSnap: value) as $Val); + }); + } } /// @nodoc @@ -136,6 +163,11 @@ abstract class _$$SnapDataImplCopyWith<$Res> Snap? storeSnap, String? selectedChannel, String? activeChangeId}); + + @override + $SnapCopyWith<$Res>? get localSnap; + @override + $SnapCopyWith<$Res>? get storeSnap; } /// @nodoc diff --git a/packages/app_center/lib/snapd/snap_page.dart b/packages/app_center/lib/snapd/snap_page.dart index 0a550a653..901a1c686 100644 --- a/packages/app_center/lib/snapd/snap_page.dart +++ b/packages/app_center/lib/snapd/snap_page.dart @@ -109,7 +109,7 @@ class _SnapView extends StatelessWidget { children: [ if (snapData.snap.website?.isNotEmpty ?? false) '${l10n.snapPageDeveloperWebsiteLabel}', - if ((snapData.snap.contact?.isNotEmpty ?? false) && + if ((snapData.snap.contact.isNotEmpty) && snapData.snap.publisher != null) '${l10n.snapPageContactPublisherLabel(snapData.snap.publisher!.displayName)}', ] @@ -649,7 +649,7 @@ class _ChannelDropdownEntry extends StatelessWidget { channelEntry.key, channelEntry.value.version, DateFormat.yMd().format(channelEntry.value.releasedAt), - ].map((e) => Text(e, maxLines: 1)).toList(), + ].nonNulls.map((e) => Text(e, maxLines: 1)).toList(), ), ), ], diff --git a/packages/app_center/pubspec.yaml b/packages/app_center/pubspec.yaml index 9733f3f98..0d701a2a4 100644 --- a/packages/app_center/pubspec.yaml +++ b/packages/app_center/pubspec.yaml @@ -40,7 +40,10 @@ dependencies: riverpod_annotation: ^2.3.5 shimmer: ^3.0.0 snapcraft_launcher: ^0.1.0 - snapd: ^0.4.14 + snapd: + git: + url: https://github.com/spydon/snapd.dart + ref: refactor/use-freezed snowball_stemmer: ^0.1.0 ubuntu_localizations: ^0.3.6 ubuntu_logger: ^0.1.1 diff --git a/packages/app_center/test/app_card_test.dart b/packages/app_center/test/app_card_test.dart index 5f30819e6..301e3ba3b 100644 --- a/packages/app_center/test/app_card_test.dart +++ b/packages/app_center/test/app_card_test.dart @@ -2,7 +2,6 @@ import 'package:app_center/widgets/widgets.dart'; import 'package:app_center_ratings_client/app_center_ratings_client.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:snapd/snapd.dart'; import 'package:ubuntu_service/ubuntu_service.dart'; import 'test_utils.dart'; @@ -14,10 +13,17 @@ const snapRating = Rating( ratingsBand: RatingsBand.good, ); -const snap = Snap( +final snap = createSnap( name: 'testsnap', id: 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD', summary: 'Its a summary!', + revision: '', + version: '', + channel: '', + base: '', + contact: '', + description: '', + type: '', ); void main() { diff --git a/packages/app_center/test/games_page_test.dart b/packages/app_center/test/games_page_test.dart index 02ca35a64..c38b7b482 100644 --- a/packages/app_center/test/games_page_test.dart +++ b/packages/app_center/test/games_page_test.dart @@ -22,34 +22,36 @@ void main() { tearDown(resetAllServices); final mockSearchProvider = createMockSnapSearchProvider({ - const SnapSearchParameters(query: 'testsn'): const [ - Snap(name: 'testsnap', title: 'Test Snap', downloadSize: 3), - Snap(name: 'testsnap2', title: 'Another Test Snap', downloadSize: 1), - Snap(name: 'testsnap3', title: 'Yet Another Test Snap', downloadSize: 2), + const SnapSearchParameters(query: 'testsn'): [ + createSnap(name: 'testsnap', title: 'Test Snap', downloadSize: 3), + createSnap( + name: 'testsnap2', title: 'Another Test Snap', downloadSize: 1), + createSnap( + name: 'testsnap3', title: 'Yet Another Test Snap', downloadSize: 2), ], const SnapSearchParameters( category: SnapCategoryEnum.games, - ): const [ - Snap( + ): [ + createSnap( name: 'testsnap4', title: 'A Cool Game', summary: 'This is a really cool game', downloadSize: 2, media: [ - SnapMedia(type: 'screenshot', url: 'https://example.com'), + const SnapMedia(type: 'screenshot', url: 'https://example.com'), ], ), - Snap( + createSnap( name: 'testsnap5', summary: 'This is another really cool game', downloadSize: 3, media: [ - SnapMedia(type: 'screenshot', url: 'https://example.com'), + const SnapMedia(type: 'screenshot', url: 'https://example.com'), ], ), ], - const SnapSearchParameters(category: SnapCategoryEnum.education): const [ - Snap(name: 'educational-snap', title: 'Educational Snap'), + const SnapSearchParameters(category: SnapCategoryEnum.education): [ + createSnap(name: 'educational-snap', title: 'Educational Snap'), ], }); diff --git a/packages/app_center/test/manage_model_test.dart b/packages/app_center/test/manage_model_test.dart index f9ae7462c..4d39c2721 100644 --- a/packages/app_center/test/manage_model_test.dart +++ b/packages/app_center/test/manage_model_test.dart @@ -1,13 +1,15 @@ import 'package:app_center/manage/manage_model.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:snapd/snapd.dart'; import 'test_utils.dart'; void main() { test('no updates available', () async { final snapd = registerMockSnapdService( - installedSnaps: const [Snap(name: 'firefox'), Snap(name: 'thunderbird')], + installedSnaps: [ + createSnap(name: 'firefox'), + createSnap(name: 'thunderbird') + ], ); final updatesModel = createMockUpdatesModel(); final model = ManageModel(snapd: snapd, updatesModel: updatesModel); @@ -15,13 +17,16 @@ void main() { expect( model.nonRefreshableSnaps, - equals(const [Snap(name: 'firefox'), Snap(name: 'thunderbird')]), + equals([createSnap(name: 'firefox'), createSnap(name: 'thunderbird')]), ); expect(model.refreshableSnaps, isEmpty); }); test('update available', () async { final snapd = registerMockSnapdService( - installedSnaps: const [Snap(name: 'firefox'), Snap(name: 'thunderbird')], + installedSnaps: [ + createSnap(name: 'firefox'), + createSnap(name: 'thunderbird') + ], ); final updatesModel = createMockUpdatesModel(refreshableSnapNames: ['firefox']); @@ -30,8 +35,11 @@ void main() { expect( model.nonRefreshableSnaps, - equals(const [Snap(name: 'thunderbird')]), + equals([createSnap(name: 'thunderbird')]), + ); + expect( + model.refreshableSnaps, + equals([createSnap(name: 'firefox')]), ); - expect(model.refreshableSnaps, equals(const [Snap(name: 'firefox')])); }); } diff --git a/packages/app_center/test/manage_page_test.dart b/packages/app_center/test/manage_page_test.dart index b0a9e468c..ef2af9adc 100644 --- a/packages/app_center/test/manage_page_test.dart +++ b/packages/app_center/test/manage_page_test.dart @@ -15,14 +15,14 @@ import 'package:yaru_test/yaru_test.dart'; import 'test_utils.dart'; void main() { - const nonRefreshableSnaps = [ - Snap( + final nonRefreshableSnaps = [ + createSnap( name: 'testsnap', title: 'Test Snap', version: '1.0', channel: 'latest/stable', ), - Snap( + createSnap( name: 'testsnap2', title: 'Another Test Snap', version: '1.5', @@ -30,7 +30,7 @@ void main() { ), ]; final refreshableSnaps = [ - Snap( + createSnap( name: 'testsnap3', title: 'Snap with an update', version: '2.0', @@ -240,9 +240,12 @@ void main() { isBusy: true, ); final mockChange = SnapdChange( + id: '', spawnTime: DateTime(1970), kind: 'refresh-snap', - tasks: [SnapdTask(progress: const SnapdTaskProgress(done: 1, total: 4))], + tasks: [ + const SnapdTask(id: '', progress: SnapdTaskProgress(done: 1, total: 4)), + ], ); await tester.pumpApp( (_) => ProviderScope( @@ -298,7 +301,7 @@ void main() { ), ), activeChangeProvider.overrideWith( - (_, __) => SnapdChange(spawnTime: DateTime(1970)), + (_, __) => SnapdChange(id: '', spawnTime: DateTime(1970)), ), updatesModelProvider.overrideWith((_) => mockUpdatesModel), ], diff --git a/packages/app_center/test/multisnap_model_test.dart b/packages/app_center/test/multisnap_model_test.dart index ffa06204c..f3e83e1f8 100644 --- a/packages/app_center/test/multisnap_model_test.dart +++ b/packages/app_center/test/multisnap_model_test.dart @@ -6,10 +6,10 @@ import 'package:snapd/snapd.dart'; import 'test_utils.dart'; -final storeSnap = Snap( +final storeSnap = createSnap( name: 'testsnap', title: 'Testsnap', - publisher: const SnapPublisher(displayName: 'testPublisher'), + publisher: const SnapPublisher(id: '', displayName: 'testPublisher'), version: '1.0.0', website: 'https://example.com', confinement: SnapConfinement.strict, diff --git a/packages/app_center/test/ratings_model_test.dart b/packages/app_center/test/ratings_model_test.dart index d41447655..e9d1c5341 100644 --- a/packages/app_center/test/ratings_model_test.dart +++ b/packages/app_center/test/ratings_model_test.dart @@ -3,13 +3,12 @@ import 'package:app_center_ratings_client/app_center_ratings_client.dart'; import 'package:clock/clock.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; -import 'package:snapd/snapd.dart'; import 'package:ubuntu_service/ubuntu_service.dart'; import 'test_utils.dart'; void main() { - const snap = Snap( + final snap = createSnap( name: 'firefox', id: 'firefox', revision: '42', diff --git a/packages/app_center/test/search_field_test.dart b/packages/app_center/test/search_field_test.dart index 4491eda24..7cec55ab4 100644 --- a/packages/app_center/test/search_field_test.dart +++ b/packages/app_center/test/search_field_test.dart @@ -6,7 +6,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; -import 'package:snapd/snapd.dart'; import 'test_utils.dart'; @@ -18,10 +17,10 @@ class MockStringCallback extends Mock implements StringCallback {} void main() { final mockSnapSearchProvider = createMockSnapSearchProvider({ - const SnapSearchParameters(query: 'testsn'): const [ - Snap(name: 'testsnap', title: 'Test Snap'), - Snap(name: 'testsnap2', title: 'Another Test Snap'), - ], + const SnapSearchParameters(query: 'testsn'): [ + createSnap(name: 'testsnap', title: 'Test Snap'), + createSnap(name: 'testsnap2', title: 'Another Test Snap'), + ] }); final mockDebSearchProvider = createMockDebSearchProvider({ diff --git a/packages/app_center/test/search_page_test.dart b/packages/app_center/test/search_page_test.dart index d0418b99c..d5c906ec1 100644 --- a/packages/app_center/test/search_page_test.dart +++ b/packages/app_center/test/search_page_test.dart @@ -7,7 +7,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:mockito/mockito.dart'; -import 'package:snapd/snapd.dart'; import 'package:ubuntu_service/ubuntu_service.dart'; import 'package:ubuntu_widgets/ubuntu_widgets.dart'; @@ -26,23 +25,26 @@ void main() { tearDown(resetAllServices); final mockSearchProvider = createMockSnapSearchProvider({ - const SnapSearchParameters(query: 'testsn'): const [ - Snap(name: 'testsnap', title: 'Test Snap', downloadSize: 3), - Snap(name: 'testsnap2', title: 'Another Test Snap', downloadSize: 1), - Snap(name: 'testsnap3', title: 'Yet Another Test Snap', downloadSize: 2), + const SnapSearchParameters(query: 'testsn'): [ + createSnap(name: 'testsnap', title: 'Test Snap', downloadSize: 3), + createSnap( + name: 'testsnap2', title: 'Another Test Snap', downloadSize: 1), + createSnap( + name: 'testsnap3', title: 'Yet Another Test Snap', downloadSize: 2), ], const SnapSearchParameters( query: 'testsn', category: SnapCategoryEnum.development, - ): const [ - Snap(name: 'testsnap3', title: 'Yet Another Test Snap', downloadSize: 2), + ): [ + createSnap( + name: 'testsnap3', title: 'Yet Another Test Snap', downloadSize: 2), ], - const SnapSearchParameters(category: SnapCategoryEnum.education): const [ - Snap(name: 'educational-snap', title: 'Educational Snap'), + const SnapSearchParameters(category: SnapCategoryEnum.education): [ + createSnap(name: 'educational-snap', title: 'Educational Snap'), ], - const SnapSearchParameters(category: SnapCategoryEnum.gameDev): const [ - Snap(name: 'game-engine', title: 'Game Engine'), - Snap(name: 'image-processor', title: 'Image Processor'), + const SnapSearchParameters(category: SnapCategoryEnum.gameDev): [ + createSnap(name: 'game-engine', title: 'Game Engine'), + createSnap(name: 'image-processor', title: 'Image Processor'), ], }); final multiSnapModel = MockMultiSnapModel(); diff --git a/packages/app_center/test/snap_launcher_test.dart b/packages/app_center/test/snap_launcher_test.dart index f3b9acb3b..fb61bc481 100644 --- a/packages/app_center/test/snap_launcher_test.dart +++ b/packages/app_center/test/snap_launcher_test.dart @@ -6,11 +6,12 @@ import 'package:snapcraft_launcher/snapcraft_launcher.dart'; import 'package:snapd/snapd.dart'; import 'snap_launcher_test.mocks.dart'; +import 'test_utils.dart'; @GenerateMocks([PrivilegedDesktopLauncher]) void main() { test('launcher unavailable', () { - const snap = Snap(name: ''); + final snap = createSnap(name: ''); final launcher = MockPrivilegedDesktopLauncher(); when(launcher.isAvailable).thenReturn(false); @@ -19,11 +20,11 @@ void main() { }); test('desktop snap', () { - const snap = Snap( + final snap = createSnap( name: 'desktopsnap', type: 'app', apps: [ - SnapApp( + const SnapApp( snap: 'desktopsnap', name: 'desktopsnapapp', desktopFile: '/foo/bar/desktopsnapapp.desktop', @@ -42,7 +43,7 @@ void main() { }); test('non-desktop snap', () { - const snap = Snap(name: 'nondesktopsnap'); + final snap = createSnap(name: 'nondesktopsnap'); final launcher = MockPrivilegedDesktopLauncher(); when(launcher.isAvailable).thenReturn(true); diff --git a/packages/app_center/test/snap_model_test.dart b/packages/app_center/test/snap_model_test.dart index 5eeb23bf9..18bd40ad1 100644 --- a/packages/app_center/test/snap_model_test.dart +++ b/packages/app_center/test/snap_model_test.dart @@ -9,10 +9,10 @@ import 'package:ubuntu_service/ubuntu_service.dart'; import 'test_utils.dart'; -const localSnap = Snap( +final localSnap = createSnap( name: 'testsnap', title: 'Testsnap', - publisher: SnapPublisher(displayName: 'testPublisher'), + publisher: const SnapPublisher(id: '', displayName: 'testPublisher'), version: '2.0.0', website: 'https://example.com', confinement: SnapConfinement.classic, @@ -22,10 +22,10 @@ const localSnap = Snap( channel: 'latest/edge', ); -final storeSnap = Snap( +final storeSnap = createSnap( name: 'testsnap', title: 'Testsnap', - publisher: const SnapPublisher(displayName: 'testPublisher'), + publisher: const SnapPublisher(id: '', displayName: 'testPublisher'), version: '1.0.0', website: 'https://example.com', confinement: SnapConfinement.strict, @@ -218,7 +218,7 @@ void main() { localSnap: localSnap, storeSnap: storeSnap, changes: [ - SnapdChange(spawnTime: DateTime(1970), ready: true), + SnapdChange(id: '', spawnTime: DateTime(1970), ready: true), ], ); @@ -274,16 +274,17 @@ void main() { final testCases = [ ( name: 'no tasks', - change: SnapdChange(spawnTime: DateTime(1970)), + change: SnapdChange(id: '', spawnTime: DateTime(1970)), expectedProgress: 0.0, ), ( name: '60% completed', change: SnapdChange( + id: '', spawnTime: DateTime(1970), - tasks: [ - SnapdTask(progress: const SnapdTaskProgress(done: 2, total: 3)), - SnapdTask(progress: const SnapdTaskProgress(done: 4, total: 7)), + tasks: const [ + SnapdTask(id: '', progress: SnapdTaskProgress(done: 2, total: 3)), + SnapdTask(id: '', progress: SnapdTaskProgress(done: 4, total: 7)), ], ), expectedProgress: 0.6, diff --git a/packages/app_center/test/snap_page_test.dart b/packages/app_center/test/snap_page_test.dart index 8da17f06e..d66e6e499 100644 --- a/packages/app_center/test/snap_page_test.dart +++ b/packages/app_center/test/snap_page_test.dart @@ -23,10 +23,10 @@ const snapRating = Rating( ratingsBand: RatingsBand.good, ); -final localSnap = Snap( +final localSnap = createSnap( name: 'testsnap', title: 'Testsnap', - publisher: const SnapPublisher(displayName: 'testPublisher'), + publisher: const SnapPublisher(id: '', displayName: 'testPublisher'), version: '2.0.0', revision: '42', website: 'https://example.com', @@ -39,10 +39,10 @@ final localSnap = Snap( id: 'r4LxMVp7zWramXsJQAKdamxy6TAWlaDD', ); -final storeSnap = Snap( +final storeSnap = createSnap( name: 'testsnap', title: 'Testsnap', - publisher: const SnapPublisher(displayName: 'testPublisher'), + publisher: const SnapPublisher(id: '', displayName: 'testPublisher'), version: '1.0.0', revision: '42', website: 'https://example.com', diff --git a/packages/app_center/test/snapd_cache_test.mocks.dart b/packages/app_center/test/snapd_cache_test.mocks.dart index 4d3d6c515..c7e88d57c 100644 --- a/packages/app_center/test/snapd_cache_test.mocks.dart +++ b/packages/app_center/test/snapd_cache_test.mocks.dart @@ -83,6 +83,15 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { _i1.throwOnMissingStub(this); } + @override + set userAgent(String? _userAgent) => super.noSuchMethod( + Invocation.setter( + #userAgent, + _userAgent, + ), + returnValueForMissingStub: null, + ); + @override bool get allowInteraction => (super.noSuchMethod( Invocation.getter(#allowInteraction), @@ -98,15 +107,6 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { returnValueForMissingStub: null, ); - @override - set userAgent(String? value) => super.noSuchMethod( - Invocation.setter( - #userAgent, - value, - ), - returnValueForMissingStub: null, - ); - @override _i3.Future loadAuthorization({String? path}) => (super.noSuchMethod( Invocation.method( @@ -192,15 +192,15 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { ) as _i3.Future>); @override - _i3.Future> getCategories() => + _i3.Future> getCategories() => (super.noSuchMethod( Invocation.method( #getCategories, [], ), - returnValue: _i3.Future>.value( - <_i2.SnapdCategoryDetails>[]), - ) as _i3.Future>); + returnValue: _i3.Future>.value( + <_i2.SnapCategoryDetails>[]), + ) as _i3.Future>); @override _i3.Future<_i2.SnapdConnectionsResponse> getConnections({ @@ -356,6 +356,24 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { returnValue: _i3.Future>.value(<_i2.Snap>[]), ) as _i3.Future>); + @override + _i3.Future> getAssertions({ + String? assertion, + Map? params, + }) => + (super.noSuchMethod( + Invocation.method( + #getAssertions, + [], + { + #assertion: assertion, + #params: params, + }, + ), + returnValue: + _i3.Future>.value({}), + ) as _i3.Future>); + @override _i3.Future<_i2.SnapdLoginResponse> login( String? email, @@ -386,13 +404,14 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { ) as _i3.Future<_i2.SnapdLoginResponse>); @override - _i3.Future logout(int? id) => (super.noSuchMethod( + _i3.Future logout(int? id) => (super.noSuchMethod( Invocation.method( #logout, [id], ), - returnValue: _i3.Future.value(), - ) as _i3.Future); + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); @override _i3.Future install( diff --git a/packages/app_center/test/snapd_watcher_test.mocks.dart b/packages/app_center/test/snapd_watcher_test.mocks.dart index 8f52259a0..744a33c0c 100644 --- a/packages/app_center/test/snapd_watcher_test.mocks.dart +++ b/packages/app_center/test/snapd_watcher_test.mocks.dart @@ -83,6 +83,15 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { _i1.throwOnMissingStub(this); } + @override + set userAgent(String? _userAgent) => super.noSuchMethod( + Invocation.setter( + #userAgent, + _userAgent, + ), + returnValueForMissingStub: null, + ); + @override bool get allowInteraction => (super.noSuchMethod( Invocation.getter(#allowInteraction), @@ -98,15 +107,6 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { returnValueForMissingStub: null, ); - @override - set userAgent(String? value) => super.noSuchMethod( - Invocation.setter( - #userAgent, - value, - ), - returnValueForMissingStub: null, - ); - @override _i3.Future loadAuthorization({String? path}) => (super.noSuchMethod( Invocation.method( @@ -192,15 +192,15 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { ) as _i3.Future>); @override - _i3.Future> getCategories() => + _i3.Future> getCategories() => (super.noSuchMethod( Invocation.method( #getCategories, [], ), - returnValue: _i3.Future>.value( - <_i2.SnapdCategoryDetails>[]), - ) as _i3.Future>); + returnValue: _i3.Future>.value( + <_i2.SnapCategoryDetails>[]), + ) as _i3.Future>); @override _i3.Future<_i2.SnapdConnectionsResponse> getConnections({ @@ -356,6 +356,24 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { returnValue: _i3.Future>.value(<_i2.Snap>[]), ) as _i3.Future>); + @override + _i3.Future> getAssertions({ + String? assertion, + Map? params, + }) => + (super.noSuchMethod( + Invocation.method( + #getAssertions, + [], + { + #assertion: assertion, + #params: params, + }, + ), + returnValue: + _i3.Future>.value({}), + ) as _i3.Future>); + @override _i3.Future<_i2.SnapdLoginResponse> login( String? email, @@ -386,13 +404,14 @@ class MockSnapdClient extends _i1.Mock implements _i2.SnapdClient { ) as _i3.Future<_i2.SnapdLoginResponse>); @override - _i3.Future logout(int? id) => (super.noSuchMethod( + _i3.Future logout(int? id) => (super.noSuchMethod( Invocation.method( #logout, [id], ), - returnValue: _i3.Future.value(), - ) as _i3.Future); + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) as _i3.Future); @override _i3.Future install( diff --git a/packages/app_center/test/test_utils.dart b/packages/app_center/test/test_utils.dart index d141b69a9..8fdf666fc 100644 --- a/packages/app_center/test/test_utils.dart +++ b/packages/app_center/test/test_utils.dart @@ -197,25 +197,17 @@ MockSnapdService registerMockSnapdService({ .thenAnswer((_) async => changes ?? []); when(service.watchChange(any)).thenAnswer( (_) => Stream.fromIterable( - changes ?? [SnapdChange(spawnTime: DateTime(1970), ready: true)], + changes ?? [SnapdChange(id: '', spawnTime: DateTime(1970), ready: true)], ), ); when(service.abortChange(any)) - .thenAnswer((_) async => SnapdChange(spawnTime: DateTime.now())); - when( - service.installMany( - any, - ), - ).thenAnswer((_) async => 'id'); - when(service.getStoreSnaps(any)).thenAnswer( - (_) => Stream.value( - List.generate( - storeSnapsCount!, - (index) => storeSnap!, - growable: false, - ), - ), - ); + .thenAnswer((_) async => SnapdChange(id: '', spawnTime: DateTime.now())); + when(service.installMany( + any, + )).thenAnswer((_) async => 'id'); + when(service.getStoreSnaps(any)).thenAnswer((_) => Stream.value( + List.generate(storeSnapsCount!, (index) => storeSnap!, + growable: false))); registerMockService(service); return service; } @@ -394,6 +386,7 @@ MockPackageKitService createMockPackageKitService({ return packageKit; } +// TODO: Move down to dummy class @GenerateMocks([Vote]) Vote createMockVote() { final model = MockVote(); @@ -404,3 +397,73 @@ Vote createMockVote() { MultiSnapModel, ]) class _Dummy {} // ignore: unused_element + +Snap createSnap({ + String? id, + String? name, + String? revision, + String? version, + String? channel, + String? base, + String? contact, + String? description, + String? type, + List? apps, + List? categories, + Map? channels, + List? commonIds, + SnapConfinement? confinement, + bool? devmode, + int? downloadSize, + DateTime? hold, + DateTime? installDate, + int? installedSize, + bool? jailmode, + String? license, + List? media, + String? mountedFrom, + bool? private, + SnapPublisher? publisher, + SnapStatus? status, + String? storeUrl, + String? summary, + String? title, + String? trackingChannel, + List? tracks, + String? website, +}) { + return Snap( + id: id ?? '', + name: name ?? '', + revision: revision ?? '', + version: version ?? '', + channel: channel ?? '', + contact: contact ?? '', + description: description ?? '', + type: type ?? '', + base: base, + apps: apps ?? [], + categories: categories ?? [], + channels: channels ?? {}, + commonIds: commonIds ?? [], + confinement: confinement ?? SnapConfinement.strict, + devmode: devmode ?? false, + downloadSize: downloadSize, + hold: hold, + installDate: installDate, + installedSize: installedSize, + jailmode: jailmode ?? false, + license: license, + media: media ?? [], + mountedFrom: mountedFrom, + private: private ?? false, + publisher: publisher, + status: status ?? SnapStatus.unknown, + storeUrl: storeUrl, + summary: summary ?? '', + title: title, + trackingChannel: trackingChannel, + tracks: tracks ?? [], + website: website, + ); +} diff --git a/packages/app_center/test/test_utils.mocks.dart b/packages/app_center/test/test_utils.mocks.dart index 81857836e..f0643100c 100644 --- a/packages/app_center/test/test_utils.mocks.dart +++ b/packages/app_center/test/test_utils.mocks.dart @@ -660,6 +660,15 @@ class MockSnapdService extends _i1.Mock implements _i2.SnapdService { _i1.throwOnMissingStub(this); } + @override + set userAgent(String? _userAgent) => super.noSuchMethod( + Invocation.setter( + #userAgent, + _userAgent, + ), + returnValueForMissingStub: null, + ); + @override bool get allowInteraction => (super.noSuchMethod( Invocation.getter(#allowInteraction), @@ -675,15 +684,6 @@ class MockSnapdService extends _i1.Mock implements _i2.SnapdService { returnValueForMissingStub: null, ); - @override - set userAgent(String? value) => super.noSuchMethod( - Invocation.setter( - #userAgent, - value, - ), - returnValueForMissingStub: null, - ); - @override _i9.FileSystem get defaultFileSystem => (super.noSuchMethod( Invocation.getter(#defaultFileSystem), @@ -788,15 +788,15 @@ class MockSnapdService extends _i1.Mock implements _i2.SnapdService { ) as _i12.Future>); @override - _i12.Future> getCategories() => + _i12.Future> getCategories() => (super.noSuchMethod( Invocation.method( #getCategories, [], ), - returnValue: _i12.Future>.value( - <_i4.SnapdCategoryDetails>[]), - ) as _i12.Future>); + returnValue: _i12.Future>.value( + <_i4.SnapCategoryDetails>[]), + ) as _i12.Future>); @override _i12.Future<_i4.SnapdConnectionsResponse> getConnections({ @@ -952,6 +952,24 @@ class MockSnapdService extends _i1.Mock implements _i2.SnapdService { returnValue: _i12.Future>.value(<_i4.Snap>[]), ) as _i12.Future>); + @override + _i12.Future> getAssertions({ + String? assertion, + Map? params, + }) => + (super.noSuchMethod( + Invocation.method( + #getAssertions, + [], + { + #assertion: assertion, + #params: params, + }, + ), + returnValue: + _i12.Future>.value({}), + ) as _i12.Future>); + @override _i12.Future<_i4.SnapdLoginResponse> login( String? email, @@ -982,13 +1000,14 @@ class MockSnapdService extends _i1.Mock implements _i2.SnapdService { ) as _i12.Future<_i4.SnapdLoginResponse>); @override - _i12.Future logout(int? id) => (super.noSuchMethod( + _i12.Future logout(int? id) => (super.noSuchMethod( Invocation.method( #logout, [id], ), - returnValue: _i12.Future.value(), - ) as _i12.Future); + returnValue: _i12.Future.value(), + returnValueForMissingStub: _i12.Future.value(), + ) as _i12.Future); @override _i12.Future install( diff --git a/packages/app_center/test/updates_model_test.dart b/packages/app_center/test/updates_model_test.dart index a182098c0..6b9a52657 100644 --- a/packages/app_center/test/updates_model_test.dart +++ b/packages/app_center/test/updates_model_test.dart @@ -15,7 +15,7 @@ void main() { }); test('updates available', () async { final service = registerMockSnapdService( - refreshableSnaps: [const Snap(name: 'firefox')], + refreshableSnaps: [createSnap(name: 'firefox')], ); final model = UpdatesModel(service); await model.refresh(); @@ -25,7 +25,7 @@ void main() { test('update all', () async { final service = registerMockSnapdService( - refreshableSnaps: [const Snap(name: 'firefox')], + refreshableSnaps: [createSnap(name: 'firefox')], ); final model = UpdatesModel(service); await model.refresh(); @@ -56,7 +56,7 @@ void main() { }); test('update all', () async { final service = registerMockSnapdService( - refreshableSnaps: [const Snap(name: 'firefox')], + refreshableSnaps: [createSnap(id: '', name: 'firefox')], ); final model = UpdatesModel(service); when(service.refreshMany(any)).thenThrow( diff --git a/pubspec.yaml b/pubspec.yaml index 718ff011c..033f4f72f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,4 +4,4 @@ environment: sdk: '>=3.1.0 <4.0.0' dev_dependencies: - melos: ^3.2.0 + melos: ^6.1.0