Skip to content

Commit

Permalink
chore: Update to latest snapd client
Browse files Browse the repository at this point in the history
  • Loading branch information
spydon committed Jun 25, 2024
1 parent 0e2f15d commit 2233e8f
Show file tree
Hide file tree
Showing 20 changed files with 310 additions and 134 deletions.
32 changes: 32 additions & 0 deletions packages/app_center/lib/snapd/snap_data.freezed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,9 @@ abstract class $SnapDataCopyWith<$Res> {
Snap? storeSnap,
String? selectedChannel,
String? activeChangeId});

$SnapCopyWith<$Res>? get localSnap;
$SnapCopyWith<$Res>? get storeSnap;
}

/// @nodoc
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down
4 changes: 2 additions & 2 deletions packages/app_center/lib/snapd/snap_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class _SnapView extends StatelessWidget {
children: [
if (snapData.snap.website?.isNotEmpty ?? false)
'<a href="${snapData.snap.website}">${l10n.snapPageDeveloperWebsiteLabel}</a>',
if ((snapData.snap.contact?.isNotEmpty ?? false) &&
if ((snapData.snap.contact.isNotEmpty) &&
snapData.snap.publisher != null)
'<a href="${snapData.snap.contact}">${l10n.snapPageContactPublisherLabel(snapData.snap.publisher!.displayName)}</a>',
]
Expand Down Expand Up @@ -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(),
),
),
],
Expand Down
5 changes: 4 additions & 1 deletion packages/app_center/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 8 additions & 2 deletions packages/app_center/test/app_card_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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() {
Expand Down
24 changes: 13 additions & 11 deletions packages/app_center/test/games_page_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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'),
],
});

Expand Down
20 changes: 14 additions & 6 deletions packages/app_center/test/manage_model_test.dart
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
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);
await model.init();

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']);
Expand All @@ -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')]));
});
}
15 changes: 9 additions & 6 deletions packages/app_center/test/manage_page_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,22 @@ 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',
channel: 'latest/candidate',
),
];
final refreshableSnaps = [
Snap(
createSnap(
name: 'testsnap3',
title: 'Snap with an update',
version: '2.0',
Expand Down Expand Up @@ -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(
Expand Down Expand Up @@ -298,7 +301,7 @@ void main() {
),
),
activeChangeProvider.overrideWith(
(_, __) => SnapdChange(spawnTime: DateTime(1970)),
(_, __) => SnapdChange(id: '', spawnTime: DateTime(1970)),
),
updatesModelProvider.overrideWith((_) => mockUpdatesModel),
],
Expand Down
4 changes: 2 additions & 2 deletions packages/app_center/test/multisnap_model_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
3 changes: 1 addition & 2 deletions packages/app_center/test/ratings_model_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down
9 changes: 4 additions & 5 deletions packages/app_center/test/search_field_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -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({
Expand Down
26 changes: 14 additions & 12 deletions packages/app_center/test/search_page_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -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();
Expand Down
9 changes: 5 additions & 4 deletions packages/app_center/test/snap_launcher_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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',
Expand All @@ -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);

Expand Down
Loading

0 comments on commit 2233e8f

Please sign in to comment.