platform/packages/support/test/message_bag_test.dart

120 lines
3.3 KiB
Dart

import 'package:test/test.dart';
import 'package:platform_support/platform_support.dart';
void main() {
group('MessageBag', () {
late MessageBag messages;
setUp(() {
messages = MessageBag();
});
test('creates instance with empty messages', () {
expect(messages.isEmpty, isTrue);
expect(messages.length, equals(0));
expect(messages.keys(), isEmpty);
});
test('adds messages', () {
messages.add('key', 'message');
expect(messages.isEmpty, isFalse);
expect(messages.length, equals(1));
expect(messages.keys(), equals(['key']));
});
test('gets first message', () {
messages.add('key', 'first');
messages.add('key', 'second');
expect(messages.first(), equals('first'));
expect(messages.first('key'), equals('first'));
});
test('gets all messages for key', () {
messages.add('key', 'first');
messages.add('key', 'second');
expect(messages.get('key'), equals(['first', 'second']));
});
test('gets all messages', () {
messages.add('key1', 'message1');
messages.add('key2', 'message2');
expect(
messages.all(),
equals({
'key1': ['message1'],
'key2': ['message2'],
}));
});
test('checks if has messages', () {
expect(messages.has('key'), isFalse);
messages.add('key', 'message');
expect(messages.has('key'), isTrue);
expect(messages.has(['key', 'other']), isTrue);
});
test('forgets messages', () {
messages.add('key', 'message');
expect(messages.has('key'), isTrue);
messages.forget('key');
expect(messages.has('key'), isFalse);
});
test('merges messages from map', () {
messages.merge({
'key1': ['message1'],
'key2': ['message2'],
});
expect(
messages.all(),
equals({
'key1': ['message1'],
'key2': ['message2'],
}));
});
test('merges messages from message provider', () {
final other = MessageBag()..add('key', 'message');
messages.merge(other);
expect(
messages.all(),
equals({
'key': ['message'],
}));
});
test('formats messages', () {
messages.add('key', 'message');
messages.setFormat('Error: :message');
expect(messages.first(), equals('Error: message'));
});
test('converts to array', () {
messages.add('key', 'message');
final array = messages.toArray();
expect(array['messages'], isA<Map>());
expect(array['format'], equals(':message'));
expect(array['isEmpty'], isFalse);
expect(array['length'], equals(1));
});
test('converts to json', () {
messages.add('key', 'message');
final json = messages.toJson();
expect(json, contains('"messages"'));
expect(json, contains('"format"'));
expect(json, contains('"isEmpty"'));
expect(json, contains('"length"'));
});
test('provides message bag', () {
expect(messages.getMessageBag(), equals(messages));
});
test('extends stringable functionality', () {
messages.add('key', 'hello world');
expect(messages.toString(), isA<String>());
expect(messages.upper().toString(), equals('HELLO WORLD'));
});
});
}