summaryrefslogtreecommitdiffstats
path: root/lib/models/__tests__/config.js
blob: abad754874c9b03913db3bebd6323d6ea58bce9b (plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var Immutable = require('immutable');
var Config = require('../config');

describe('Config', function() {
    var config = Config.createWithValues({
        hello: {
            world: 1,
            test: 'Hello',
            isFalse: false
        }
    });

    describe('getValue', function() {
        it('must return value as immutable', function() {
            var value = config.getValue('hello');
            expect(Immutable.Map.isMap(value)).toBeTruthy();
        });

        it('must return deep value', function() {
            var value = config.getValue('hello.world');
            expect(value).toBe(1);
        });

        it('must return default value if non existant', function() {
            var value = config.getValue('hello.nonExistant', 'defaultValue');
            expect(value).toBe('defaultValue');
        });

        it('must not return default value for falsy values', function() {
            var value = config.getValue('hello.isFalse', 'defaultValue');
            expect(value).toBe(false);
        });
    });

    describe('setValue', function() {
        it('must set value as immutable', function() {
            var testConfig = config.setValue('hello', {
                'cool': 1
            });
            var value = testConfig.getValue('hello');

            expect(Immutable.Map.isMap(value)).toBeTruthy();
            expect(value.size).toBe(1);
            expect(value.has('cool')).toBeTruthy();
        });

        it('must set deep value', function() {
            var testConfig = config.setValue('hello.world', 2);
            var hello = testConfig.getValue('hello');
            var world = testConfig.getValue('hello.world');

            expect(Immutable.Map.isMap(hello)).toBeTruthy();
            expect(hello.size).toBe(3);

            expect(world).toBe(2);
        });
    });

    describe('toReducedVersion', function() {
        it('must only return diffs for simple values', function() {
            var _config = Config.createWithValues({
                gitbook: '3.0.0'
            });

            var reducedVersion = _config.toReducedVersion();

            expect(reducedVersion.toJS()).toEqual({
                gitbook: '3.0.0'
            });
        });

        it('must only return diffs for deep values', function() {
            var _config = Config.createWithValues({
                structure: {
                    readme: 'intro.md'
                }
            });

            var reducedVersion = _config.toReducedVersion();

            expect(reducedVersion.toJS()).toEqual({
                structure: {
                    readme: 'intro.md'
                }
            });
        });
    });
});