forked from meteor/meteor
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcustom_models_for_tests.js
87 lines (70 loc) · 1.4 KB
/
custom_models_for_tests.js
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
function Address (city, state) {
this.city = city;
this.state = state;
}
Address.prototype = {
constructor: Address,
typeName: function () {
return "Address";
},
toJSONValue: function () {
return {
city: this.city,
state: this.state
};
}
}
EJSON.addType("Address", function fromJSONValue(value) {
return new Address(value.city, value.state);
});
function Person (name, dob, address) {
this.name = name;
this.dob = dob;
this.address = address;
}
Person.prototype = {
constructor: Person,
typeName: function () {
return "Person";
},
toJSONValue: function () {
return {
name: this.name,
dob: EJSON.toJSONValue(this.dob),
address: EJSON.toJSONValue(this.address)
};
}
}
_.extend(Person, {
fromJSONValue: function(value) {
return new Person(
value.name,
EJSON.fromJSONValue(value.dob),
EJSON.fromJSONValue(value.address)
);
}
});
EJSON.addType("Person", Person.fromJSONValue);
function Holder (content) {
this.content = content;
}
Holder.prototype = {
constructor: Holder,
typeName: function () {
return "Holder";
},
toJSONValue: function () {
return this.content;
}
}
_.extend(Holder, {
fromJSONValue: function(value) {
return new Holder(value);
}
});
EJSON.addType("Holder", Holder.fromJSONValue);
_.extend(EJSONTest, {
Address: Address,
Person: Person,
Holder: Holder
});