some fixes
This commit is contained in:
@@ -1,11 +1,9 @@
|
||||
import 'dart:io';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:app_boilerplate/data/firebase/firebase_service.dart';
|
||||
import 'package:app_boilerplate/data/firebase/models/firebase_config.dart';
|
||||
import 'package:app_boilerplate/data/local/local_storage_service.dart';
|
||||
import 'package:app_boilerplate/data/local/models/item.dart';
|
||||
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
|
||||
@@ -307,4 +305,3 @@ void main() {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:app_boilerplate/data/immich/immich_service.dart';
|
||||
import 'package:app_boilerplate/data/immich/models/immich_asset.dart';
|
||||
import 'package:app_boilerplate/data/immich/models/upload_response.dart';
|
||||
import 'package:app_boilerplate/data/local/local_storage_service.dart';
|
||||
import 'package:app_boilerplate/data/local/models/item.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
@@ -318,7 +316,10 @@ void main() {
|
||||
if (path == '/api/search/metadata') {
|
||||
return Response(
|
||||
statusCode: 500,
|
||||
data: {'error': 'Internal server error', 'message': 'Internal server error'},
|
||||
data: {
|
||||
'error': 'Internal server error',
|
||||
'message': 'Internal server error'
|
||||
},
|
||||
requestOptions: RequestOptions(path: path),
|
||||
);
|
||||
}
|
||||
@@ -445,7 +446,8 @@ void main() {
|
||||
|
||||
// Assert
|
||||
expect(cached.length, equals(2));
|
||||
expect(cached.map((a) => a.id).toList(), containsAll(['asset-1', 'asset-2']));
|
||||
expect(cached.map((a) => a.id).toList(),
|
||||
containsAll(['asset-1', 'asset-2']));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -2,9 +2,6 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:app_boilerplate/data/nostr/nostr_service.dart';
|
||||
import 'package:app_boilerplate/data/nostr/models/nostr_keypair.dart';
|
||||
import 'package:app_boilerplate/data/nostr/models/nostr_event.dart';
|
||||
import 'package:app_boilerplate/data/nostr/models/nostr_relay.dart';
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
void main() {
|
||||
group('NostrService - Keypair Generation', () {
|
||||
@@ -303,4 +300,3 @@ void main() {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -3,10 +3,8 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||
import 'package:app_boilerplate/data/session/session_service.dart';
|
||||
import 'package:app_boilerplate/data/session/models/user.dart';
|
||||
import 'package:app_boilerplate/data/local/local_storage_service.dart';
|
||||
import 'package:app_boilerplate/data/local/models/item.dart';
|
||||
import 'package:app_boilerplate/data/sync/sync_engine.dart';
|
||||
|
||||
void main() {
|
||||
// Initialize Flutter bindings and sqflite for testing
|
||||
@@ -48,7 +46,7 @@ void main() {
|
||||
} catch (_) {
|
||||
// Ignore cleanup errors
|
||||
}
|
||||
|
||||
|
||||
// Clean up temporary directory
|
||||
if (await tempDir.exists()) {
|
||||
await tempDir.delete(recursive: true);
|
||||
@@ -123,14 +121,14 @@ void main() {
|
||||
test('logout - clears cache when clearCache is true', () async {
|
||||
// Arrange
|
||||
await sessionService.login(id: 'user1', username: 'user1');
|
||||
|
||||
|
||||
// Add some data to storage
|
||||
final item = Item(
|
||||
id: 'item1',
|
||||
data: {'test': 'data'},
|
||||
);
|
||||
await localStorage.insertItem(item);
|
||||
|
||||
|
||||
// Verify data exists
|
||||
final itemsBefore = await localStorage.getAllItems();
|
||||
expect(itemsBefore.length, equals(1));
|
||||
@@ -148,7 +146,7 @@ void main() {
|
||||
test('logout - preserves cache when clearCache is false', () async {
|
||||
// Arrange
|
||||
await sessionService.login(id: 'user1', username: 'user1');
|
||||
|
||||
|
||||
// Add some data to storage
|
||||
final item = Item(
|
||||
id: 'item1',
|
||||
@@ -191,10 +189,11 @@ void main() {
|
||||
expect(newUser.id, equals('user2'));
|
||||
});
|
||||
|
||||
test('switchSession - clears previous user data when clearCache is true', () async {
|
||||
test('switchSession - clears previous user data when clearCache is true',
|
||||
() async {
|
||||
// Arrange
|
||||
await sessionService.login(id: 'user1', username: 'user1');
|
||||
|
||||
|
||||
// Add data for user1
|
||||
final item1 = Item(
|
||||
id: 'item1',
|
||||
@@ -216,10 +215,12 @@ void main() {
|
||||
expect(items.length, equals(0));
|
||||
});
|
||||
|
||||
test('switchSession - preserves previous user data when clearCache is false', () async {
|
||||
test(
|
||||
'switchSession - preserves previous user data when clearCache is false',
|
||||
() async {
|
||||
// Arrange
|
||||
await sessionService.login(id: 'user1', username: 'user1');
|
||||
|
||||
|
||||
// Add data for user1
|
||||
final item1 = Item(
|
||||
id: 'item1',
|
||||
@@ -304,12 +305,12 @@ void main() {
|
||||
test('cache clearing - clears all items on logout', () async {
|
||||
// Arrange
|
||||
await sessionService.login(id: 'user1', username: 'user1');
|
||||
|
||||
|
||||
// Add multiple items
|
||||
await localStorage.insertItem(Item(id: 'item1', data: {'test': '1'}));
|
||||
await localStorage.insertItem(Item(id: 'item2', data: {'test': '2'}));
|
||||
await localStorage.insertItem(Item(id: 'item3', data: {'test': '3'}));
|
||||
|
||||
|
||||
final itemsBefore = await localStorage.getAllItems();
|
||||
expect(itemsBefore.length, equals(3));
|
||||
|
||||
@@ -323,4 +324,3 @@ void main() {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ import 'package:app_boilerplate/data/nostr/models/nostr_keypair.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
import 'dart:convert';
|
||||
|
||||
void main() {
|
||||
// Initialize Flutter bindings and sqflite for testing
|
||||
@@ -511,4 +510,3 @@ Dio _createMockDio({
|
||||
|
||||
return dio;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ import 'dart:async';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:app_boilerplate/ui/relay_management/relay_management_controller.dart';
|
||||
import 'package:app_boilerplate/data/nostr/nostr_service.dart';
|
||||
import 'package:app_boilerplate/data/nostr/models/nostr_relay.dart';
|
||||
import 'package:app_boilerplate/data/sync/sync_engine.dart';
|
||||
import 'package:app_boilerplate/data/local/local_storage_service.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
@@ -141,7 +140,7 @@ void main() {
|
||||
// Swallow any unhandled errors - connection failures are expected
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
// Verify the health check completed
|
||||
expect(controller.isCheckingHealth, isFalse);
|
||||
// Relay should still be in the list (even if disconnected)
|
||||
@@ -157,10 +156,10 @@ void main() {
|
||||
final result = await controllerWithoutSync.triggerManualSync();
|
||||
expect(result, isFalse);
|
||||
expect(controllerWithoutSync.error, isNotNull);
|
||||
expect(controllerWithoutSync.error, contains('Sync engine not configured'));
|
||||
expect(
|
||||
controllerWithoutSync.error, contains('Sync engine not configured'));
|
||||
|
||||
controllerWithoutSync.dispose();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@ import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:app_boilerplate/ui/relay_management/relay_management_screen.dart';
|
||||
import 'package:app_boilerplate/ui/relay_management/relay_management_controller.dart';
|
||||
import 'package:app_boilerplate/data/nostr/nostr_service.dart';
|
||||
import 'package:app_boilerplate/data/nostr/models/nostr_relay.dart';
|
||||
import 'package:app_boilerplate/data/sync/sync_engine.dart';
|
||||
import 'package:app_boilerplate/data/local/local_storage_service.dart';
|
||||
import 'package:path/path.dart' as path;
|
||||
@@ -72,7 +71,8 @@ void main() {
|
||||
}
|
||||
|
||||
group('RelayManagementScreen', () {
|
||||
testWidgets('displays empty state when no relays', (WidgetTester tester) async {
|
||||
testWidgets('displays empty state when no relays',
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
|
||||
expect(find.text('No relays configured'), findsOneWidget);
|
||||
@@ -95,7 +95,8 @@ void main() {
|
||||
expect(find.text('Disconnected'), findsNWidgets(2));
|
||||
});
|
||||
|
||||
testWidgets('adds relay when Add button is pressed', (WidgetTester tester) async {
|
||||
testWidgets('adds relay when Add button is pressed',
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
|
||||
// Find and enter relay URL
|
||||
@@ -131,7 +132,8 @@ void main() {
|
||||
expect(find.byIcon(Icons.error), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('removes relay when delete button is pressed', (WidgetTester tester) async {
|
||||
testWidgets('removes relay when delete button is pressed',
|
||||
(WidgetTester tester) async {
|
||||
controller.addRelay('wss://relay.example.com');
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
await tester.pump();
|
||||
@@ -159,14 +161,16 @@ void main() {
|
||||
expect(find.byIcon(Icons.health_and_safety), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('displays manual sync button when sync engine is configured', (WidgetTester tester) async {
|
||||
testWidgets('displays manual sync button when sync engine is configured',
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
|
||||
expect(find.text('Manual Sync'), findsOneWidget);
|
||||
expect(find.byIcon(Icons.sync), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('shows loading state during health check', (WidgetTester tester) async {
|
||||
testWidgets('shows loading state during health check',
|
||||
(WidgetTester tester) async {
|
||||
controller.addRelay('wss://relay.example.com');
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
await tester.pump();
|
||||
@@ -178,12 +182,13 @@ void main() {
|
||||
|
||||
// Check for loading indicator (may be brief)
|
||||
expect(find.byType(CircularProgressIndicator), findsWidgets);
|
||||
|
||||
|
||||
// Wait for health check to complete
|
||||
await tester.pumpAndSettle();
|
||||
});
|
||||
|
||||
testWidgets('shows error message when present', (WidgetTester tester) async {
|
||||
testWidgets('shows error message when present',
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
|
||||
// Trigger an error by adding invalid URL
|
||||
@@ -198,7 +203,8 @@ void main() {
|
||||
expect(find.textContaining('Invalid relay URL'), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets('dismisses error when close button is pressed', (WidgetTester tester) async {
|
||||
testWidgets('dismisses error when close button is pressed',
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(createTestWidget());
|
||||
|
||||
// Trigger an error
|
||||
@@ -234,4 +240,3 @@ void main() {
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user