Skip to content

Commit

Permalink
♻️ chore(chat): Add chat bloc test. Update dependencies in pubspec.ya…
Browse files Browse the repository at this point in the history
…ml and pubspec.lock files.

Signed-off-by: Dmytro Turskyi <dmytro.turskyi@gmail.com>
  • Loading branch information
Turskyi committed Jun 27, 2024
1 parent 1e9daa2 commit 370ed43
Show file tree
Hide file tree
Showing 5 changed files with 153 additions and 39 deletions.
1 change: 1 addition & 0 deletions lib/application_services/blocs/chat_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ class ChatBloc extends Bloc<ChatEvent, ChatState> {
AiMessageUpdated(messages: state.messages, language: state.language),
);
});

on<SubmitFeedbackEvent>((
SubmitFeedbackEvent event,
Emitter<ChatState> emit,
Expand Down
108 changes: 98 additions & 10 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "8.1.4"
bloc_test:
dependency: "direct main"
description:
name: bloc_test
sha256: "165a6ec950d9252ebe36dc5335f2e6eb13055f33d56db0eeb7642768849b43d2"
url: "https://pub.dev"
source: hosted
version: "9.1.7"
boolean_selector:
dependency: transitive
description:
Expand Down Expand Up @@ -161,6 +169,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.1"
coverage:
dependency: transitive
description:
name: coverage
sha256: "3945034e86ea203af7a056d98e98e42a5518fff200d6e8e6647e1886b07e936e"
url: "https://pub.dev"
source: hosted
version: "1.8.0"
crypto:
dependency: transitive
description:
Expand All @@ -177,6 +193,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.3.6"
diff_match_patch:
dependency: transitive
description:
name: diff_match_patch
sha256: "2efc9e6e8f449d0abe15be240e2c2a3bcd977c8d126cfd70598aee60af35c0a4"
url: "https://pub.dev"
source: hosted
version: "0.4.1"
dio:
dependency: "direct main"
description:
Expand Down Expand Up @@ -493,6 +517,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.5"
mocktail:
dependency: "direct main"
description:
name: mocktail
sha256: "890df3f9688106f25755f26b1c60589a92b3ab91a22b8b224947ad041bf172d8"
url: "https://pub.dev"
source: hosted
version: "1.0.4"
nested:
dependency: transitive
description:
Expand All @@ -501,6 +533,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
node_preamble:
dependency: transitive
description:
name: node_preamble
sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db"
url: "https://pub.dev"
source: hosted
version: "2.0.2"
package_config:
dependency: transitive
description:
Expand Down Expand Up @@ -725,14 +765,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.1"
shelf_packages_handler:
dependency: transitive
description:
name: shelf_packages_handler
sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
shelf_static:
dependency: transitive
description:
name: shelf_static
sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e
url: "https://pub.dev"
source: hosted
version: "1.1.2"
shelf_web_socket:
dependency: transitive
description:
name: shelf_web_socket
sha256: "073c147238594ecd0d193f3456a5fe91c4b0abbcc68bf5cd95b36c4e194ac611"
sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
version: "1.0.4"
sky_engine:
dependency: transitive
description: flutter
Expand All @@ -754,6 +810,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.3.4"
source_map_stack_trace:
dependency: transitive
description:
name: source_map_stack_trace
sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
source_maps:
dependency: transitive
description:
name: source_maps
sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703"
url: "https://pub.dev"
source: hosted
version: "0.10.12"
source_span:
dependency: transitive
description:
Expand Down Expand Up @@ -802,6 +874,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test:
dependency: transitive
description:
name: test
sha256: "7ee446762c2c50b3bd4ea96fe13ffac69919352bd3b4b17bac3f3465edc58073"
url: "https://pub.dev"
source: hosted
version: "1.25.2"
test_api:
dependency: transitive
description:
Expand All @@ -810,6 +890,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.0"
test_core:
dependency: transitive
description:
name: test_core
sha256: "2bc4b4ecddd75309300d8096f781c0e3280ca1ef85beda558d33fcbedc2eead4"
url: "https://pub.dev"
source: hosted
version: "0.6.0"
timing:
dependency: transitive
description:
Expand Down Expand Up @@ -874,22 +962,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.5.1"
web_socket:
web_socket_channel:
dependency: transitive
description:
name: web_socket
sha256: "24301d8c293ce6fe327ffe6f59d8fd8834735f0ec36e4fd383ec7ff8a64aa078"
name: web_socket_channel
sha256: "58c6666b342a38816b2e7e50ed0f1e261959630becd4c879c4f26bfa14aa5a42"
url: "https://pub.dev"
source: hosted
version: "0.1.5"
web_socket_channel:
version: "2.4.5"
webkit_inspection_protocol:
dependency: transitive
description:
name: web_socket_channel
sha256: a2d56211ee4d35d9b344d9d4ce60f362e4f5d1aafb988302906bd732bc731276
name: webkit_inspection_protocol
sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572"
url: "https://pub.dev"
source: hosted
version: "3.0.0"
version: "1.2.1"
win32:
dependency: transitive
description:
Expand Down
2 changes: 2 additions & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ dependencies:
bloc: ^8.1.4
# Set to specific version when this error is gone: "Because every version of flutter_test from sdk depends on collection 1.18.0 and laozi_ai depends on collection ^1.19.0, flutter_test from sdk is forbidden.
# So, because laozi_ai depends on flutter_test from sdk, version solving failed."
bloc_test: ^9.1.7
collection: any
dio: ^5.4.3+1
feedback: ^3.1.0
Expand All @@ -50,6 +51,7 @@ dependencies:
# Set to specific version when this error is gone: "Because every version of flutter_test from sdk depends on meta 1.12.0 and laozi_ai depends on meta ^1.15.0, flutter_test from sdk is forbidden.
# So, because laozi_ai depends on flutter_test from sdk, version solving failed.".
meta: any
mocktail: ^1.0.4
package_info_plus: ^8.0.0
path_provider: ^2.1.3
retrofit: ^4.1.0
Expand Down
52 changes: 52 additions & 0 deletions test/chat_bloc_test.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import 'package:bloc_test/bloc_test.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:laozi_ai/application_services/blocs/chat_bloc.dart';
import 'package:laozi_ai/domain_services/chat_repository.dart';
import 'package:laozi_ai/domain_services/email_repository.dart';
import 'package:laozi_ai/domain_services/settings_repository.dart';
import 'package:laozi_ai/entities/enums/language.dart';
import 'package:mocktail/mocktail.dart';

// Create mock classes for the repositories.
class MockChatRepository extends Mock implements ChatRepository {}

class MockSettingsRepository extends Mock implements SettingsRepository {}

class MockEmailRepository extends Mock implements EmailRepository {}

void main() {
// Define the mock instances.
late MockChatRepository mockChatRepository;
late MockSettingsRepository mockSettingsRepository;
late MockEmailRepository mockEmailRepository;

// Initialize the mock instances before each test.
setUp(() {
mockChatRepository = MockChatRepository();
mockSettingsRepository = MockSettingsRepository();
mockEmailRepository = MockEmailRepository();
});

// Define the test for LoadHomeEvent.
blocTest<ChatBloc, ChatState>(
'emits [ChatInitial] when LoadHomeEvent is added',
build: () {
// Set up the mock method calls
when(() => mockSettingsRepository.getLanguage()).thenReturn(Language.en);
// Return the ChatBloc with the mocked dependencies
return ChatBloc(
mockChatRepository,
mockSettingsRepository,
mockEmailRepository,
);
},
act: (ChatBloc bloc) => bloc.add(const LoadHomeEvent()),
expect: () => <TypeMatcher<ChatInitial>>[
isA<ChatInitial>().having(
(ChatInitial state) => state.language,
'language',
Language.en,
),
],
);
}
29 changes: 0 additions & 29 deletions test/widget_test.dart

This file was deleted.

0 comments on commit 370ed43

Please sign in to comment.