remove, refactor old tests

Signed-off-by: Sahil Kumar <[email protected]>
This commit is contained in:
Sahil Kumar
2021-06-04 16:27:37 +05:30
parent dbb98811ab
commit b64aa70b73
17 changed files with 28 additions and 4316 deletions
File diff suppressed because it is too large Load Diff
@@ -1,11 +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(
() => openConnection('fakeurl'),
throwsA(isA<UnimplementedError>()),
);
});
}
@@ -1,348 +0,0 @@
import 'dart:async';
import 'package:logging/logging.dart';
import 'package:mocktail/mocktail.dart';
import 'package:stream_chat/src/ws/connection_status.dart';
import 'package:stream_chat/src/ws/websocket.dart';
import 'package:stream_chat/src/core/models/event.dart';
import 'package:stream_chat/src/core/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 {
WebSocketChannel connectFunc(
String? url, {
Iterable<String>? protocols,
}) =>
WebSocketChannel.connect(Uri());
void handleFunc(Event event) {}
}
class MockFunctions extends Mock implements Functions {}
class MockWSChannel extends Mock implements WebSocketChannel {}
class MockWSSink extends Mock implements WebSocketSink {}
class FakeEvent extends Fake implements Event {}
void main() {
group('src/api/websocket', () {
setUpAll(() {
registerFallbackValue<Event>(FakeEvent());
});
test('should connect with correct parameters', () async {
final connectFunc = MockFunctions().connectFunc;
final ws = WebSocket(
baseUrl: 'baseurl',
user: User(id: 'testid'),
_logger: Logger('ws'),
connectParams: {'test': 'true'},
connectPayload: {'payload': 'test'},
handler: print,
connectFunc: connectFunc,
);
final mockWSChannel = MockWSChannel();
final streamController = StreamController<String>.broadcast();
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);
when(() => mockWSChannel.sink).thenAnswer((_) => MockWSSink());
when(() => mockWSChannel.stream).thenAnswer(
(_) => streamController.stream,
);
final timer = Timer.periodic(
const Duration(milliseconds: 100),
(_) => streamController.sink.add('{}'),
);
await ws.connect();
verify(() => connectFunc(computedUrl)).called(1);
expect(ws.connectionStatus, ConnectionStatus.connected);
await streamController.close();
timer.cancel();
});
});
test('should connect with correct parameters and handle events', () async {
final handleFunc = MockFunctions().handleFunc;
final 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 = StreamController<String>.broadcast();
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);
when(() => mockWSChannel.sink).thenAnswer((_) => MockWSSink());
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
final connect = ws.connect().then((_) {
streamController.sink.add('{}');
return Future.delayed(const Duration(milliseconds: 200));
}).then((value) {
verify(() => connectFunc(computedUrl)).called(1);
verify(() => handleFunc(any())).called(greaterThan(0));
return streamController.close();
});
streamController.sink.add('{}');
return connect;
});
test('should close correctly the controller', () async {
final handleFunc = MockFunctions().handleFunc;
final 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 = StreamController<String>.broadcast();
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';
final mockWSSink = MockWSSink();
when(() => mockWSChannel.sink).thenAnswer((_) => mockWSSink);
when(() => mockWSSink.close(any(), any())).thenAnswer((_) async => null);
when(() => connectFunc(computedUrl)).thenAnswer((_) => mockWSChannel);
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
final connect = ws.connect().then((_) {
streamController.sink.add('{}');
return Future.delayed(const Duration(milliseconds: 200));
}).then((value) {
verify(() => connectFunc(computedUrl)).called(1);
verify(() => handleFunc(any())).called(greaterThan(0));
return streamController.close();
});
streamController.sink.add('{}');
return connect;
});
test('should close correctly the controller while connecting', () async {
final handleFunc = MockFunctions().handleFunc;
final 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 = StreamController<String>.broadcast();
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';
final mockWSSink = MockWSSink();
when(() => mockWSChannel.sink).thenAnswer((_) => mockWSSink);
when(() => mockWSSink.close(any(), any())).thenAnswer((_) async => null);
when(() => connectFunc(computedUrl)).thenAnswer((_) => mockWSChannel);
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
ws.connect();
await ws.disconnect();
streamController.add('{}');
verify(() => connectFunc(computedUrl)).called(1);
verifyNever(() => handleFunc(any()));
addTearDown(streamController.close);
});
test('should run correctly health check', () async {
final handleFunc = MockFunctions().handleFunc;
final 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 mockWSSink = MockWSSink();
final streamController = StreamController<String>.broadcast();
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);
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
when(() => mockWSChannel.sink).thenAnswer((_) => mockWSSink);
when(() => mockWSSink.close(any(), any())).thenAnswer((_) async => null);
final timer = Timer.periodic(
const Duration(milliseconds: 1000),
(_) => streamController.sink.add('{}'),
);
final connect = ws.connect().then((_) {
streamController.sink.add('{}');
return Future.delayed(const Duration(milliseconds: 200));
}).then((value) async {
verify(() => mockWSSink.add("{'type': 'health.check'}"))
.called(greaterThan(0));
timer.cancel();
await streamController.close();
return mockWSSink.close();
});
streamController.sink.add('{}');
return connect;
});
test('should run correctly reconnection check', () async {
final handleFunc = MockFunctions().handleFunc;
final connectFunc = MockFunctions().connectFunc;
Logger.root.level = Level.ALL;
final ws = WebSocket(
baseUrl: 'baseurl',
user: User(id: 'testid'),
_logger: Logger('ws'),
connectParams: {'test': 'true'},
connectPayload: {'payload': 'test'},
handler: handleFunc,
connectFunc: connectFunc,
reconnectionMonitorTimeout: 1,
);
final mockWSChannel = MockWSChannel();
final mockWSSink = MockWSSink();
var streamController = StreamController<String>.broadcast();
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);
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
when(() => mockWSChannel.sink).thenAnswer((_) => mockWSSink);
when(() => mockWSSink.close(any(), any())).thenAnswer((_) async => null);
final connect = ws.connect().then((_) {
streamController.sink.add('{}');
streamController.close();
streamController = StreamController<String>.broadcast();
streamController.sink.add('{}');
return Future.delayed(const Duration(milliseconds: 200));
}).then((value) async {
verify(() => mockWSSink.add("{'type': 'health.check'}"))
.called(greaterThan(0));
verify(() => connectFunc(computedUrl)).called(2);
await streamController.close();
return mockWSSink.close();
});
streamController.sink.add('{}');
return connect;
});
test('should close correctly the controller', () async {
final handleFunc = MockFunctions().handleFunc;
final 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 mockWSSink = MockWSSink();
final streamController = StreamController<String>.broadcast();
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);
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
when(() => mockWSChannel.sink).thenAnswer((_) => mockWSSink);
when(() => mockWSSink.close(any(), any())).thenAnswer((_) async => null);
final connect = ws.connect().then((_) {
streamController.sink.add('{}');
return Future.delayed(const Duration(milliseconds: 200));
}).then((value) async {
await ws.disconnect();
verify(mockWSSink.close).called(greaterThan(0));
await streamController.close();
await mockWSSink.close();
});
streamController.sink.add('{}');
return connect;
});
test('should throw an error', () async {
final connectFunc = MockFunctions().connectFunc;
final ws = WebSocket(
baseUrl: 'baseurl',
user: User(id: 'testid'),
_logger: Logger('ws'),
connectParams: {'test': 'true'},
connectPayload: {'payload': 'test'},
handler: print,
connectFunc: connectFunc,
);
final mockWSChannel = MockWSChannel();
final streamController = StreamController<String>.broadcast();
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);
when(() => mockWSChannel.sink).thenAnswer((_) => MockWSSink());
when(() => mockWSChannel.stream).thenAnswer((_) => streamController.stream);
Future.delayed(
const Duration(milliseconds: 1000),
() => streamController.sink.addError('test error'),
);
try {
expect(await ws.connect(), throwsA(isA<String>()));
} catch (e) {
verify(() => connectFunc(computedUrl)).called(greaterThanOrEqualTo(1));
streamController.close();
}
});
}
File diff suppressed because it is too large Load Diff
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:test/test.dart';
import 'package:stream_chat/src/models/action.dart';
import 'package:stream_chat/src/core/models/action.dart';
void main() {
group('src/models/action', () {
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:stream_chat/src/models/action.dart';
import 'package:stream_chat/src/models/attachment.dart';
import 'package:stream_chat/src/core/models/action.dart';
import 'package:stream_chat/src/core/models/attachment.dart';
import 'package:test/test.dart';
void main() {
@@ -1,10 +1,10 @@
import 'dart:convert';
import 'package:stream_chat/src/models/channel_config.dart';
import 'package:stream_chat/src/models/channel_state.dart';
import 'package:stream_chat/src/models/command.dart';
import 'package:stream_chat/src/models/message.dart';
import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/core/models/channel_config.dart';
import 'package:stream_chat/src/core/models/channel_state.dart';
import 'package:stream_chat/src/core/models/command.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:stream_chat/src/core/models/user.dart';
import 'package:stream_chat/stream_chat.dart';
import 'package:test/test.dart';
@@ -1,6 +1,6 @@
import 'dart:convert';
import 'package:stream_chat/src/models/channel_model.dart';
import 'package:stream_chat/src/core/models/channel_model.dart';
import 'package:test/test.dart';
void main() {
@@ -1,6 +1,6 @@
import 'dart:convert';
import 'package:stream_chat/src/models/command.dart';
import 'package:stream_chat/src/core/models/command.dart';
import 'package:test/test.dart';
void main() {
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:test/test.dart';
import 'package:stream_chat/src/models/device.dart';
import 'package:stream_chat/src/core/models/device.dart';
void main() {
group('src/models/device', () {
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:stream_chat/src/models/event.dart';
import 'package:stream_chat/src/models/own_user.dart';
import 'package:stream_chat/src/core/models/event.dart';
import 'package:stream_chat/src/core/models/own_user.dart';
import 'package:stream_chat/stream_chat.dart';
import 'package:test/test.dart';
@@ -1,8 +1,8 @@
import 'dart:convert';
import 'package:test/test.dart';
import 'package:stream_chat/src/models/member.dart';
import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/core/models/member.dart';
import 'package:stream_chat/src/core/models/user.dart';
void main() {
group('src/models/member', () {
@@ -1,9 +1,9 @@
import 'dart:convert';
import 'package:stream_chat/src/models/attachment.dart';
import 'package:stream_chat/src/models/message.dart';
import 'package:stream_chat/src/models/reaction.dart';
import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/core/models/attachment.dart';
import 'package:stream_chat/src/core/models/message.dart';
import 'package:stream_chat/src/core/models/reaction.dart';
import 'package:stream_chat/src/core/models/user.dart';
import 'package:test/test.dart';
void main() {
@@ -1,7 +1,7 @@
import 'dart:convert';
import 'package:stream_chat/src/models/reaction.dart';
import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/core/models/reaction.dart';
import 'package:stream_chat/src/core/models/user.dart';
import 'package:test/test.dart';
void main() {
@@ -1,8 +1,8 @@
import 'dart:convert';
import 'package:test/test.dart';
import 'package:stream_chat/src/models/read.dart';
import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/core/models/read.dart';
import 'package:stream_chat/src/core/models/user.dart';
void main() {
group('src/models/read', () {
@@ -1,5 +1,5 @@
import 'package:test/test.dart';
import 'package:stream_chat/src/models/serialization.dart';
import 'package:stream_chat/src/core/util/serializer.dart';
void main() {
group('src/models/serialization', () {
@@ -9,7 +9,7 @@ void main() {
'prop2': 123,
'prop3': true,
};
final result = Serialization.moveToExtraDataFromRoot(json, [
final result = Serializer.moveToExtraDataFromRoot(json, [
'prop1',
'prop2',
]);
@@ -30,7 +30,7 @@ void main() {
});
test('should have empty extraData', () {
final result = Serialization.moveToExtraDataFromRoot({
final result = Serializer.moveToExtraDataFromRoot({
'prop1': 'test',
'prop2': 123,
'prop3': true,
@@ -49,7 +49,7 @@ void main() {
});
test('should return null', () {
final result = Serialization.moveToExtraDataFromRoot({}, [
final result = Serializer.moveToExtraDataFromRoot({}, [
'prop1',
'prop2',
]);
@@ -1,6 +1,6 @@
import 'dart:convert';
import 'package:stream_chat/src/models/user.dart';
import 'package:stream_chat/src/core/models/user.dart';
import 'package:test/test.dart';
void main() {