fa9d904e14770dcec567d372b64b0a881a04982b
[ccsdk/features.git] /
1 describe("app.data.Model", function() {
2
3         var Model = window.app.data.Model;
4
5         it("test setting model does a shallow copy", function() {
6                 var test = {};
7                 var array = [ 1, 2, 3 ];
8                 var m = new Model({
9                         data: {
10                                 "foo": "bar",
11                                 "test": test,
12                                 "array": array
13                         }
14                 });
15                 expect( m.get("foo") ).toBe("bar");
16                 expect( m.get("array").length ).toBe(  3  );
17                 expect( m.get("array")[1] ).toBe( 2 );
18                 expect( m.get("array") ).toBe( array );
19                 expect( m.get("test") ).toBe( test );
20         });
21
22         it("should replace model with shallow copy when put with no path", function() {
23                 var m = new Model({ foo: "bar" });
24                 m.set({ bar: "blat" });
25                 expect( m.get("foo")).toBe( undefined );
26                 expect( m.get("bar")).toBe("blat");
27         });
28
29         it("test getting values from deep in a model", function() {
30                 var m = new Model({
31                         data: {
32                                 "foo": {
33                                         "bar": {
34                                                 "baz": {
35                                                         "quix": "abcdefg"
36                                                 }
37                                         }
38                                 }
39                         }
40                 });
41
42                 expect( m.get("foo.bar.baz.quix") ).toBe( "abcdefg" );
43         });
44
45         it("test setting non-existant values creates new values", function() {
46                 var m = new Model({
47                         data: {
48                                 "foo": {
49                                         "bar": "abc"
50                                 }
51                         }
52                 });
53                 m.set("foo.bar", "123" );
54                 m.set("foo.baz", "456" );
55                 expect( m.get("foo.bar") ).toBe( "123" );
56                 expect( m.get("foo.baz") ).toBe( "456" );
57         });
58
59         it("test setting values deep in a model", function() {
60                 var m = new Model({
61                         data: {
62                                 "foo": {
63                                         "bar": "abc"
64                                 }
65                         }
66                 });
67                 m.set("foo.bar", "123" );
68                 m.set("foo.baz", "456" );
69                 m.set("foo.something.else.is.here", "xyz" );
70                 expect( m.get("foo.something.else.is").here ).toBe( "xyz" );
71                 expect( m.get("foo.something.else.is.here") ).toBe( "xyz" );
72         });
73
74 });