summaryrefslogtreecommitdiffstats
path: root/debian/missing-sources/epoch/tests/unit/core/copy.coffee
blob: 204324145413268dc143279b736829162adc5847 (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
describe 'Epoch.Util', ->
  describe 'copy', ->
    it 'should correctly create a shallow copy', ->
      object =
        a: 20
        b: 'hello'

      copy = Epoch.Util.copy(object)

      assert.equal copy.a, object.a
      assert.equal copy.b, object.b

    it 'should not recursively copy objects', ->
      object =
        a:
          foo: 'bar'

      copy = Epoch.Util.copy(object)
      object.a.foo = 'baz'
      assert.equal object.a.foo, copy.a.foo

  describe 'defaults', ->
    it 'should set default values when keys are missing', ->
      options = {a: 'foo', b: 'bar'}
      defaults = {c: 'baz'}
      result = Epoch.Util.defaults(options, defaults)
      assert.equal result.c, defaults.c

    it 'should not set default values when keys are present', ->
      options = { a: 'foo', b: 'bar' }
      defaults = { a: 'wow', b: 'neat' }
      result = Epoch.Util.defaults(options, defaults)
      assert.equal result.a, options.a
      assert.equal result.b, options.b

    it 'should recursively set defaults from sub objects', ->
      options =
        a:
          b: 'foo'
      defaults =
        a:
          b: ''
          c: 'bar'
      result = Epoch.Util.defaults(options, defaults)

      assert.equal result.a.b, options.a.b
      assert.equal result.a.c, defaults.a.c