UNPKG

2.1 kBJavaScriptView Raw
1var describe = require('Jody').describe,
2 assert = require('assert'),
3 cradle = require('cradle'),
4 Model = require('../lib/index'),
5 db = require('./spec_helper').db,
6 Owner, AddressBook;
7
8describe("Simple Embedding of Single Doc").
9 beforeAll(function (done) {
10 Owner = Model.define("Owner", {
11 name: String
12 });
13
14 AddressBook = Model.define("AddressBook", {
15 name: String,
16 owner: {has_one: Owner}
17 });
18
19 Model.load();
20 done();
21
22 }).
23 it("Should save doc with embedded ref", function (async) {
24
25 var address_book = AddressBook.create({name: "My Address Book", owner: Owner.create({name: "Harry Potter"})});
26
27 address_book.save(async(function (err, res) {
28 db.get(res.id,async(function (err, doc) {
29 doc.owner.name.should().beEqual("Harry Potter");
30 }));
31 }));
32 }).
33 it("Should serialize all embedded objects as well", function (async) {
34 var address_book = AddressBook.create({name: "Another Address Book", owner: Owner.create({name: "Severus Snape"})});
35
36 address_book.save(async(function (err, res) {
37 db.get(res.id,async(function (err, doc) {
38 assert.equal(doc.owner.schema, null);
39 }));
40 }));
41
42 }).
43 it("Should load embedded doc", function (async) {
44 var address_book = AddressBook.create({name: "Address Book to get loaded", owner: Owner.create({name: "Dumbledore"})});
45
46 address_book.save(async(function (err, res) {
47
48 AddressBook.find(res.id,async(function (err, loaded) {
49 loaded.owner.name.should().beEqual("Dumbledore");
50 assert.notEqual(loaded.owner.schema, null);
51
52 }));
53
54 }));
55
56
57
58 }).
59 it("Should save doc with null if no embedded doc and load with empty object", function (async) {
60 var address_book = AddressBook.create({name: "Address Book with no owner"});
61
62 address_book.save(async(function (err, res) {
63
64 AddressBook.find(res.id,async(function (err, loaded) {
65 loaded.owner.model_type.should().beEqual('Owner');
66 assert.equal(loaded.owner.name, null);
67 }));
68
69 }));
70
71 });