69 lines
2.4 KiB
Dart
69 lines
2.4 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:rmtpocketwatcher/services/update_service.dart';
|
|
|
|
void main() {
|
|
group('UpdateService', () {
|
|
late UpdateService updateService;
|
|
|
|
setUp(() {
|
|
updateService = UpdateService();
|
|
});
|
|
|
|
test('version extraction works correctly', () {
|
|
// Test version extraction
|
|
expect(updateService.extractVersionFromTag('v1.2.3'), equals('1.2.3'));
|
|
expect(updateService.extractVersionFromTag('1.2.3'), equals('1.2.3'));
|
|
expect(updateService.extractVersionFromTag('v2.0.0'), equals('2.0.0'));
|
|
});
|
|
|
|
test('newer version detection works correctly', () {
|
|
expect(updateService.isNewerVersion('1.2.4', '1.2.3'), isTrue);
|
|
expect(updateService.isNewerVersion('1.3.0', '1.2.9'), isTrue);
|
|
expect(updateService.isNewerVersion('2.0.0', '1.9.9'), isTrue);
|
|
expect(updateService.isNewerVersion('1.2.3', '1.2.3'), isFalse);
|
|
expect(updateService.isNewerVersion('1.2.2', '1.2.3'), isFalse);
|
|
expect(updateService.isNewerVersion('1.1.9', '1.2.0'), isFalse);
|
|
});
|
|
|
|
test('platform asset detection works', () {
|
|
final assets = [
|
|
ReleaseAsset(
|
|
name: 'rmtPocketWatcher-windows-x64.exe',
|
|
downloadUrl: 'https://example.com/windows.exe',
|
|
size: 1024,
|
|
contentType: 'application/octet-stream',
|
|
),
|
|
ReleaseAsset(
|
|
name: 'rmtPocketWatcher-macos.dmg',
|
|
downloadUrl: 'https://example.com/macos.dmg',
|
|
size: 2048,
|
|
contentType: 'application/octet-stream',
|
|
),
|
|
ReleaseAsset(
|
|
name: 'rmtPocketWatcher-linux.appimage',
|
|
downloadUrl: 'https://example.com/linux.appimage',
|
|
size: 3072,
|
|
contentType: 'application/octet-stream',
|
|
),
|
|
];
|
|
|
|
final updateInfo = UpdateInfo(
|
|
currentVersion: '1.0.0',
|
|
latestVersion: '1.1.0',
|
|
releaseUrl: 'https://example.com/release',
|
|
releaseName: 'Test Release',
|
|
releaseNotes: 'Test notes',
|
|
publishedAt: DateTime.now(),
|
|
assets: assets,
|
|
);
|
|
|
|
// This test would need to mock the platform detection
|
|
// For now, just verify the asset list is properly structured
|
|
expect(updateInfo.assets.length, equals(3));
|
|
expect(updateInfo.assets.first.name, contains('windows'));
|
|
});
|
|
});
|
|
}
|
|
|
|
// Note: The methods extractVersionFromTag and isNewerVersion are now public
|
|
// and marked with @visibleForTesting for testing purposes |