chore: 1.5.1 (#387)
* lint(persistence): Apply team linter Signed-off-by: Sahil Kumar <[email protected]> * style: flutter format Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): Add tests for channel dao Signed-off-by: Sahil Kumar <[email protected]> * refactor(persistence): remove dummy comments Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): Add test for channel query dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for connection event dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for member dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for message dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for pinned message dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for reaction dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for read dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): minor improvement in update function tests Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for user dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for list converter Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for map converter Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for message sending status converter Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for channel mapper Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add test for event mapper Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for member mapper Signed-off-by: Sahil Kumar <[email protected]> * remove useless dependencies * test(persistence): add tests for message mapper Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for pinned message mapper Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for reaction mapper Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for read mapper Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for user mapper Signed-off-by: Sahil Kumar <[email protected]> * refactor(persistence): remove redundant UsersTable getter from ConnectionEventDao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests for stream chat persistence client Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add tests moor chat database Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add moor schemas for future migration tests Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add clear queryCache test in channel query dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add getThreadMessagesByParentId along with pagination test in message, pinned message dao. Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add getMessagesByCid along with pagination test in message, pinned message dao. Signed-off-by: Sahil Kumar <[email protected]> * update ci * apply locale to jiffy * fix test * test(persistence): add getMessagesByCid along with quotedMessage test in message, pinned message dao. Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add extra checks in getMessagesByCid along with pagination test in message, pinned message dao. Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add return channel with pagination applies test in channel query dao Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): improve message mapper, pinned message mapper test Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add client constructor test in stream chat persistence client Signed-off-by: Sahil Kumar <[email protected]> * test(persistence): add coverage:ignore-file for entities and db/shared directory Signed-off-by: Sahil Kumar <[email protected]> * skip pub publish --dry-run for develop branch Signed-off-by: Sahil Kumar <[email protected]> * add remove from coverage script Signed-off-by: Sahil Kumar <[email protected]> * fix Signed-off-by: Sahil Kumar <[email protected]> * fix Signed-off-by: Sahil Kumar <[email protected]> * fix Signed-off-by: Sahil Kumar <[email protected]> * fix Signed-off-by: Sahil Kumar <[email protected]> * fix locale * fix message input _parseExistingMessage * fix(UI-Kit): Show selected attachment file as file in message input widget Signed-off-by: Sahil Kumar <[email protected]> * fix: ws disconnection (#345) * update ws removing custom implementation; fixed disconnection while connecting * add test * feat: Apply team lints to core package (#334) * Add analyzer file to core package * Apply team lint rules to core package * clean up analyzer warnings in stream chat flutter * remove unused line * add ignore * sync analysis options * [Core -> MessageWidget] Fix variable dynamic types Signed-off-by: Sahil Kumar <[email protected]> Co-authored-by: Salvatore Giordano <[email protected]> Co-authored-by: Sahil Kumar <[email protected]> * test: add tests for stream chat flutter core (#354) * test(core): add tests for channels bloc Signed-off-by: Sahil Kumar <[email protected]> * test(core): refactor some tests due to changes in channels bloc Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for channel list core Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for users bloc, minor improvements Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for user list core, minor improvements Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for message search bloc, refactor Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for message search list core, refactor Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for lazy load scroll view Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for stream chat core Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for message list core Signed-off-by: Sahil Kumar <[email protected]> * test(core): add tests for stream channel Signed-off-by: Sahil Kumar <[email protected]> * Fix merge conflicts Signed-off-by: Sahil Kumar <[email protected]> * flutter format Signed-off-by: Sahil Kumar <[email protected]> * fixes Signed-off-by: Sahil Kumar <[email protected]> * update workflow Signed-off-by: Sahil Kumar <[email protected]> * chore(core): fix analyzer issues Signed-off-by: Sahil Kumar <[email protected]> * chore(ui-kit): fix analyzer issues Signed-off-by: Sahil Kumar <[email protected]> * refactor(ui-kit): update giphy interaction (#361) * refactor(ui-kit): update giphy interaction Signed-off-by: Sahil Kumar <[email protected]> * fix overflow Co-authored-by: Salvatore Giordano <[email protected]> * fix: Fixed sendingbutton.outside case (#355) * fix: Fixed sendingbutton.outside case * fix: Fixed all actionbutton cases * fix review Co-authored-by: Salvatore Giordano <[email protected]> * fix(ui-kit): fix accessibility text size scaling in message widget Signed-off-by: Sahil Kumar <[email protected]> * fix(ui-kit): fix message widget long username overflow Signed-off-by: Sahil Kumar <[email protected]> * fix(ui-kit): fix message input dm checkbox accessibility scaling issue Signed-off-by: Sahil Kumar <[email protected]> * feat: exposed textbuilder callback (#367) * exposed textbuilder callback * exposed textbuilder callback * fixes Signed-off-by: Sahil Kumar <[email protected]> * check if user.mutes is null * check if user.mutes is null * fixes #370: remove all controls on full screen media if message is of type ephemeral (#373) * fix: fix channel list pagination spinner (#375) Signed-off-by: Sahil Kumar <[email protected]> * fix: attachments upload when size exceeds (#377) * fix: Fixed file upload error * fix: Fixed file upload error * fix coverage script Signed-off-by: Sahil Kumar <[email protected]> * fix: message input (#382) * feat: Added mentions suffix builder * feat: Added builders for mentions and theme element for message input expanded button * refactor: refactored PR to suit other style * fix: fixes trailing commas and changes names * doc: added documentation to new elements * doc: added documentation to new elements * bump version * add meta dep to core * sort deps Co-authored-by: Sahil Kumar <[email protected]> Co-authored-by: Neevash Ramdial (Nash) <[email protected]> Co-authored-by: Deven Joshi <[email protected]>
This commit is contained in:
co-authored by
Sahil Kumar
Neevash Ramdial
Deven Joshi
parent
aeb6da8d38
commit
87ca818a9a
@@ -1,3 +1,7 @@
|
||||
## 1.5.1
|
||||
|
||||
- Minor fixes and improvements
|
||||
|
||||
## 1.5.0
|
||||
|
||||
- Minor fixes and improvements
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
analyzer:
|
||||
exclude:
|
||||
exclude:
|
||||
- lib/**/*.g.dart
|
||||
- lib/**/*.freezed.dart
|
||||
- example/*
|
||||
- test/*
|
||||
linter:
|
||||
rules:
|
||||
linter:
|
||||
rules:
|
||||
- always_use_package_imports
|
||||
- avoid_empty_else
|
||||
- avoid_relative_lib_imports
|
||||
@@ -14,7 +14,6 @@ linter:
|
||||
- cancel_subscriptions
|
||||
- close_sinks
|
||||
- control_flow_in_finally
|
||||
- diagnostic_describe_all_properties
|
||||
- empty_statements
|
||||
- hash_and_equals
|
||||
- invariant_booleans
|
||||
@@ -33,7 +32,6 @@ linter:
|
||||
- use_key_in_widget_constructors
|
||||
- valid_regexps
|
||||
- always_declare_return_types
|
||||
- always_put_required_named_parameters_first
|
||||
- always_require_non_null_named_parameters
|
||||
- annotate_overrides
|
||||
- avoid_bool_literals_in_conditional_expressions
|
||||
|
||||
@@ -146,7 +146,7 @@ class Channel {
|
||||
|
||||
/// Channel extra data
|
||||
Map<String, dynamic> get extraData =>
|
||||
state?._channelState?.channel?.extraData;
|
||||
state?._channelState?.channel?.extraData ?? _extraData;
|
||||
|
||||
/// Channel extra data as a stream
|
||||
Stream<Map<String, dynamic>> get extraDataStream =>
|
||||
@@ -1210,9 +1210,10 @@ class ChannelClientState {
|
||||
this._channel,
|
||||
ChannelState channelState,
|
||||
//ignore: unnecessary_parenthesis
|
||||
) : _debouncedUpdatePersistenceChannelState = ((ChannelState state) {
|
||||
_channel?._client?.chatPersistenceClient?.updateChannelState(state);
|
||||
}).debounced(const Duration(seconds: 1)) {
|
||||
) : _debouncedUpdatePersistenceChannelState = ((ChannelState state) =>
|
||||
_channel?._client?.chatPersistenceClient
|
||||
?.updateChannelState(state))
|
||||
.debounced(const Duration(seconds: 1)) {
|
||||
retryQueue = RetryQueue(
|
||||
channel: _channel,
|
||||
logger: Logger('RETRY QUEUE ${_channel.cid}'),
|
||||
@@ -1597,7 +1598,7 @@ class ChannelClientState {
|
||||
|
||||
bool _countMessageAsUnread(Message message) {
|
||||
final userId = _channel.client.state?.user?.id;
|
||||
final userIsMuted = _channel.client.state.user.mutes.firstWhere(
|
||||
final userIsMuted = _channel.client.state?.user?.mutes?.firstWhere(
|
||||
(m) => m.user?.id == message.user.id,
|
||||
orElse: () => null,
|
||||
) !=
|
||||
|
||||
@@ -104,4 +104,25 @@ class PaginationParams {
|
||||
lessThan: lessThan ?? this.lessThan,
|
||||
lessThanOrEqual: lessThanOrEqual ?? this.lessThanOrEqual,
|
||||
);
|
||||
|
||||
@override
|
||||
int get hashCode =>
|
||||
runtimeType.hashCode ^
|
||||
limit.hashCode ^
|
||||
offset.hashCode ^
|
||||
greaterThan.hashCode ^
|
||||
greaterThanOrEqual.hashCode ^
|
||||
lessThan.hashCode ^
|
||||
lessThanOrEqual.hashCode;
|
||||
|
||||
@override
|
||||
bool operator ==(covariant PaginationParams other) =>
|
||||
identical(this, other) ||
|
||||
runtimeType == other.runtimeType &&
|
||||
limit == other.limit &&
|
||||
offset == other.offset &&
|
||||
greaterThan == other.greaterThan &&
|
||||
greaterThanOrEqual == other.greaterThanOrEqual &&
|
||||
lessThan == other.lessThan &&
|
||||
lessThanOrEqual == other.lessThanOrEqual;
|
||||
}
|
||||
|
||||
@@ -6,9 +6,6 @@ import 'package:logging/logging.dart';
|
||||
import 'package:meta/meta.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
import 'package:stream_chat/src/api/connection_status.dart';
|
||||
import 'package:stream_chat/src/api/web_socket_channel_stub.dart'
|
||||
if (dart.library.html) 'web_socket_channel_html.dart'
|
||||
if (dart.library.io) 'web_socket_channel_io.dart';
|
||||
import 'package:stream_chat/src/models/event.dart';
|
||||
import 'package:stream_chat/src/models/user.dart';
|
||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||
@@ -36,7 +33,7 @@ class WebSocket {
|
||||
this.connectPayload,
|
||||
this.handler,
|
||||
this.logger,
|
||||
this.connectFunc = connectWebSocket,
|
||||
this.connectFunc,
|
||||
this.reconnectionMonitorInterval = 1,
|
||||
this.healthCheckInterval = 20,
|
||||
this.reconnectionMonitorTimeout = 40,
|
||||
@@ -121,9 +118,9 @@ class WebSocket {
|
||||
WebSocketChannel _channel;
|
||||
Timer _healthCheck, _reconnectionMonitor;
|
||||
DateTime _lastEventAt;
|
||||
bool _manuallyDisconnected = false,
|
||||
_connecting = false,
|
||||
_reconnecting = false;
|
||||
bool _manuallyDisconnected = false;
|
||||
bool _connecting = false;
|
||||
bool _reconnecting = false;
|
||||
|
||||
Event _decodeEvent(String source) => Event.fromJson(json.decode(source));
|
||||
|
||||
@@ -143,7 +140,8 @@ class WebSocket {
|
||||
|
||||
logger.info('connecting to $_path');
|
||||
|
||||
_channel = connectFunc(_path);
|
||||
_channel =
|
||||
connectFunc?.call(_path) ?? WebSocketChannel.connect(Uri.parse(_path));
|
||||
_channel.stream.listen(
|
||||
(data) {
|
||||
final jsonData = json.decode(data);
|
||||
@@ -177,6 +175,10 @@ class WebSocket {
|
||||
}
|
||||
|
||||
void _onData(data) {
|
||||
if (_manuallyDisconnected) {
|
||||
return;
|
||||
}
|
||||
|
||||
final event = _decodeEvent(data);
|
||||
logger.info('received new event: $data');
|
||||
|
||||
@@ -302,6 +304,10 @@ class WebSocket {
|
||||
|
||||
/// Disconnects the WS and releases eventual resources
|
||||
Future<void> disconnect() async {
|
||||
_connecting = false;
|
||||
if (!_connectionCompleter.isCompleted) {
|
||||
_connectionCompleter.complete();
|
||||
}
|
||||
if (_manuallyDisconnected) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -738,7 +738,8 @@ class StreamChatClient {
|
||||
await _chatPersistenceClient?.updateChannelQueries(
|
||||
filter,
|
||||
channels.map((c) => c.channel.cid).toList(),
|
||||
paginationParams?.offset == null || paginationParams.offset == 0,
|
||||
clearQueryCache:
|
||||
paginationParams?.offset == null || paginationParams.offset == 0,
|
||||
);
|
||||
|
||||
state.channels = updateData.key;
|
||||
|
||||
@@ -100,10 +100,9 @@ abstract class ChatPersistenceClient {
|
||||
/// the list of matching rows will be deleted
|
||||
Future<void> updateChannelQueries(
|
||||
Map<String, dynamic> filter,
|
||||
List<String> cids,
|
||||
// ignore: avoid_positional_boolean_parameters
|
||||
bool clearQueryCache,
|
||||
);
|
||||
List<String> cids, {
|
||||
bool clearQueryCache = false,
|
||||
});
|
||||
|
||||
/// Remove a message by [messageId]
|
||||
Future<void> deleteMessageById(String messageId) =>
|
||||
|
||||
@@ -121,6 +121,46 @@ class Event {
|
||||
_$EventToJson(this),
|
||||
topLevelFields,
|
||||
);
|
||||
|
||||
/// Creates a copy of [Event] with specified attributes overridden.
|
||||
Event copyWith({
|
||||
String type,
|
||||
String cid,
|
||||
String channelId,
|
||||
String channelType,
|
||||
String connectionId,
|
||||
DateTime createdAt,
|
||||
OwnUser me,
|
||||
User user,
|
||||
Message message,
|
||||
EventChannel channel,
|
||||
Member member,
|
||||
Reaction reaction,
|
||||
int totalUnreadCount,
|
||||
int unreadChannels,
|
||||
bool online,
|
||||
String parentId,
|
||||
Map<String, dynamic> extraData,
|
||||
}) =>
|
||||
Event(
|
||||
type: type ?? this.type,
|
||||
cid: cid ?? this.cid,
|
||||
connectionId: connectionId ?? this.connectionId,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
me: me ?? this.me,
|
||||
user: user ?? this.user,
|
||||
message: message ?? this.message,
|
||||
totalUnreadCount: totalUnreadCount ?? this.totalUnreadCount,
|
||||
unreadChannels: unreadChannels ?? this.unreadChannels,
|
||||
reaction: reaction ?? this.reaction,
|
||||
online: online ?? this.online,
|
||||
channel: channel ?? this.channel,
|
||||
member: member ?? this.member,
|
||||
channelId: channelId ?? this.channelId,
|
||||
channelType: channelType ?? this.channelType,
|
||||
parentId: parentId ?? this.parentId,
|
||||
extraData: extraData ?? this.extraData,
|
||||
);
|
||||
}
|
||||
|
||||
/// The channel embedded in the event object
|
||||
|
||||
@@ -27,4 +27,16 @@ class Read {
|
||||
|
||||
/// Serialize to json
|
||||
Map<String, dynamic> toJson() => _$ReadToJson(this);
|
||||
|
||||
/// Creates a copy of [Read] with specified attributes overridden.
|
||||
Read copyWith({
|
||||
DateTime lastRead,
|
||||
User user,
|
||||
int unreadMessages,
|
||||
}) =>
|
||||
Read(
|
||||
lastRead: lastRead ?? this.lastRead,
|
||||
user: user ?? this.user,
|
||||
unreadMessages: unreadMessages ?? this.unreadMessages,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -100,4 +100,28 @@ class User {
|
||||
/// Serialize to json
|
||||
Map<String, dynamic> toJson() =>
|
||||
Serialization.moveFromExtraDataToRoot(_$UserToJson(this), topLevelFields);
|
||||
|
||||
/// Creates a copy of [User] with specified attributes overridden.
|
||||
User copyWith({
|
||||
String id,
|
||||
String role,
|
||||
DateTime createdAt,
|
||||
DateTime updatedAt,
|
||||
DateTime lastActive,
|
||||
bool online,
|
||||
Map<String, dynamic> extraData,
|
||||
bool banned,
|
||||
List<String> teams,
|
||||
}) =>
|
||||
User(
|
||||
id: id ?? this.id,
|
||||
role: role ?? this.role,
|
||||
createdAt: createdAt ?? this.createdAt,
|
||||
updatedAt: updatedAt ?? this.updatedAt,
|
||||
lastActive: lastActive ?? this.lastActive,
|
||||
online: online ?? this.online,
|
||||
extraData: extraData ?? this.extraData,
|
||||
banned: banned ?? this.banned,
|
||||
teams: teams ?? this.teams,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@ import 'package:stream_chat/src/client.dart';
|
||||
/// Current package version
|
||||
/// Used in [StreamChatClient] to build the `x-stream-client` header
|
||||
// ignore: constant_identifier_names
|
||||
const PACKAGE_VERSION = '1.5.0';
|
||||
const PACKAGE_VERSION = '1.5.1';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
name: stream_chat
|
||||
homepage: https://getstream.io/
|
||||
description: The official Dart client for Stream Chat, a service for building chat applications.
|
||||
version: 1.5.0
|
||||
version: 1.5.1
|
||||
repository: https://github.com/GetStream/stream-chat-flutter
|
||||
issue_tracker: https://github.com/GetStream/stream-chat-flutter/issues
|
||||
|
||||
@@ -20,7 +20,7 @@ dependencies:
|
||||
mime: ^0.9.7
|
||||
rxdart: ^0.25.0
|
||||
uuid: ^2.2.2
|
||||
web_socket_channel: ^1.1.0
|
||||
web_socket_channel: ^1.2.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^1.10.0
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
import 'package:test/test.dart';
|
||||
import 'package:stream_chat/src/api/web_socket_channel_stub.dart';
|
||||
|
||||
void main() {
|
||||
test('src/api/web_socket_stub_test', () {
|
||||
expect(
|
||||
() => connectWebSocket('fakeurl'), throwsA(isA<UnimplementedError>()));
|
||||
});
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:test/test.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:stream_chat/src/api/connection_status.dart';
|
||||
@@ -8,6 +7,7 @@ import 'package:stream_chat/src/api/websocket.dart';
|
||||
import 'package:stream_chat/src/models/event.dart';
|
||||
import 'package:stream_chat/src/models/user.dart';
|
||||
import 'package:stream_chat/stream_chat.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'package:web_socket_channel/web_socket_channel.dart';
|
||||
|
||||
class Functions {
|
||||
@@ -47,10 +47,9 @@ void main() {
|
||||
|
||||
final mockWSChannel = MockWSChannel();
|
||||
|
||||
final StreamController<String> streamController =
|
||||
StreamController<String>.broadcast();
|
||||
final streamController = StreamController<String>.broadcast();
|
||||
|
||||
final computedUrl =
|
||||
const computedUrl =
|
||||
'wss://baseurl/connect?test=true&json=%7B%22payload%22%3A%22test%22%2C%22user_details%22%3A%7B%22id%22%3A%22testid%22%7D%7D';
|
||||
|
||||
when(connectFunc(computedUrl)).thenAnswer((_) => mockWSChannel);
|
||||
@@ -60,7 +59,7 @@ void main() {
|
||||
});
|
||||
|
||||
final timer = Timer.periodic(
|
||||
Duration(milliseconds: 100),
|
||||
const Duration(milliseconds: 100),
|
||||
(_) => streamController.sink.add('{}'),
|
||||
);
|
||||
|
||||
@@ -160,6 +159,42 @@ void main() {
|
||||
|
||||
return connect;
|
||||
});
|
||||
test('should close correctly the controller while connecting', () async {
|
||||
final handleFunc = MockFunctions().handleFunc;
|
||||
|
||||
final ConnectWebSocket connectFunc = MockFunctions().connectFunc;
|
||||
|
||||
final ws = WebSocket(
|
||||
baseUrl: 'baseurl',
|
||||
user: User(id: 'testid'),
|
||||
logger: Logger('ws'),
|
||||
connectParams: {'test': 'true'},
|
||||
connectPayload: {'payload': 'test'},
|
||||
handler: handleFunc,
|
||||
connectFunc: connectFunc,
|
||||
);
|
||||
|
||||
final mockWSChannel = MockWSChannel();
|
||||
|
||||
final StreamController<String> streamController =
|
||||
StreamController<String>.broadcast();
|
||||
|
||||
final computedUrl =
|
||||
'wss://baseurl/connect?test=true&json=%7B%22payload%22%3A%22test%22%2C%22user_details%22%3A%7B%22id%22%3A%22testid%22%7D%7D';
|
||||
|
||||
when(connectFunc(computedUrl)).thenAnswer((_) => mockWSChannel);
|
||||
when(mockWSChannel.sink).thenAnswer((_) => MockWSSink());
|
||||
when(mockWSChannel.stream).thenAnswer((_) {
|
||||
return streamController.stream;
|
||||
});
|
||||
|
||||
ws.connect();
|
||||
await ws.disconnect();
|
||||
streamController.add('{}');
|
||||
|
||||
verify(connectFunc(computedUrl)).called(1);
|
||||
verifyNever(handleFunc(any));
|
||||
});
|
||||
|
||||
test('should run correctly health check', () async {
|
||||
final handleFunc = MockFunctions().handleFunc;
|
||||
|
||||
Reference in New Issue
Block a user