74 lines
2.0 KiB
Dart
74 lines
2.0 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:marianum_mobile/push/push_message_handler.dart';
|
|
|
|
void main() {
|
|
group('classifyPush', () {
|
|
test('nextcloud push has subject + signature', () {
|
|
expect(
|
|
classifyPush({'subject': 'enc', 'signature': 'sig', 'type': 'chat'}),
|
|
PushKind.nextcloud,
|
|
);
|
|
});
|
|
|
|
test('connect push identified by source', () {
|
|
expect(
|
|
classifyPush({'source': 'connect', 'title': 'Hi', 'body': 'There'}),
|
|
PushKind.connect,
|
|
);
|
|
});
|
|
|
|
test('widget refresh push identified by source + type', () {
|
|
expect(
|
|
classifyPush({'source': 'connect', 'type': 'widget-refresh'}),
|
|
PushKind.widgetRefresh,
|
|
);
|
|
});
|
|
|
|
test('widget refresh push with reason still classifies', () {
|
|
expect(
|
|
classifyPush({
|
|
'source': 'connect',
|
|
'type': 'widget-refresh',
|
|
'reason': 'morning',
|
|
}),
|
|
PushKind.widgetRefresh,
|
|
);
|
|
});
|
|
|
|
test('connect push with unrelated type stays connect', () {
|
|
expect(
|
|
classifyPush({'source': 'connect', 'type': 'newsletter', 'title': 'Hi'}),
|
|
PushKind.connect,
|
|
);
|
|
});
|
|
|
|
test('nextcloud fields take precedence over widget-refresh type', () {
|
|
expect(
|
|
classifyPush({
|
|
'subject': 'enc',
|
|
'signature': 'sig',
|
|
'source': 'connect',
|
|
'type': 'widget-refresh',
|
|
}),
|
|
PushKind.nextcloud,
|
|
);
|
|
});
|
|
|
|
test('widget-refresh type without connect source is unknown', () {
|
|
expect(classifyPush({'type': 'widget-refresh'}), PushKind.unknown);
|
|
});
|
|
|
|
test('subject without signature is not a nextcloud push', () {
|
|
expect(classifyPush({'subject': 'enc'}), PushKind.unknown);
|
|
});
|
|
|
|
test('empty subject/signature is unknown', () {
|
|
expect(classifyPush({'subject': '', 'signature': ''}), PushKind.unknown);
|
|
});
|
|
|
|
test('unrelated payload is unknown', () {
|
|
expect(classifyPush({'foo': 'bar'}), PushKind.unknown);
|
|
});
|
|
});
|
|
}
|