trphoenix
2018-11-08 f7ef09a40718e8df93a407ca2b3da2c508d69e85
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import 'dart:convert';
import 'package:test/test.dart';
import '../lib/redux_remote_devtools.dart';
 
class TestAction {
  int value;
  TestAction({this.value});
  toJson() {
    return {'value': this.value};
  }
}
 
enum EnumActions { SimpleEnumAction }
 
void main() {
  group('JsonActionEncoder', () {
    group('encodeAction', () {
      test('Returns a jsonified action', () {
        var encoder = new JsonActionEncoder();
        var result = encoder.encode(new TestAction(value: 5));
        var decoded = jsonDecode(result);
        expect(decoded['type'], equals('TestAction'));
        expect(decoded['payload']['value'], equals(5));
      });
 
      test('Still returns the type if action is not jsonable', () {
        var encoder = new JsonActionEncoder();
        var result = encoder.encode(EnumActions.SimpleEnumAction);
        var decoded = jsonDecode(result);
        expect(decoded['type'], equals('EnumActions.SimpleEnumAction'));
        expect(decoded['payload'], equals(null));
      });
    });
 
    group('getActionType', () {
      test('Returns the class name for a class based action', () {
        var encoder = new JsonActionEncoder();
        var result = encoder.getActionType(new TestAction());
        expect(result, equals('TestAction'));
      });
      test('Returns the value for enum actions', () {
        var encoder = new JsonActionEncoder();
        var result = encoder.getActionType(EnumActions.SimpleEnumAction);
        expect(result, equals('EnumActions.SimpleEnumAction'));
      });
    });
  });
}