1 | var booksdb = new localdb('books', 'Array')
|
2 | var config = new localdb('config', 'Object')
|
3 | var User = new localdb({
|
4 | name: 'User',
|
5 | type: 'Array',
|
6 | timestamp: true
|
7 | })
|
8 |
|
9 | test('localdb is a function', function () {
|
10 | ok(typeof localdb == 'function')
|
11 | })
|
12 |
|
13 | test('add a book and return books', function () {
|
14 | var books = initBooks()
|
15 | ok(books instanceof Array)
|
16 |
|
17 | })
|
18 |
|
19 | test('inc and dec', function () {
|
20 | ok(config.inc('count').get('count') === 1)
|
21 | ok(config.dec('count').get('count') === 0)
|
22 | ok(config.inc('count', 2).get('count') === 2)
|
23 | })
|
24 |
|
25 | test('remove a book and return books', function () {
|
26 | var books = initBooks()
|
27 | var updated = booksdb.remove('title', 'Diao').get()
|
28 | ok(updated.length == books.length - 1)
|
29 | })
|
30 |
|
31 | test('find a book in books', function () {
|
32 | initBooks()
|
33 | var book = booksdb.findOne({title: 'Diao', author: 'SOX'})
|
34 | ok(book.title === 'Diao' && book.author === 'SOX')
|
35 | })
|
36 |
|
37 | test('desending all books by index', function () {
|
38 | initBooks()
|
39 | var books = booksdb.find(null, {sort: -1})
|
40 | ok(books[0].title === '大大泡泡堂')
|
41 | })
|
42 |
|
43 | test('update a book', function () {
|
44 | initBooks()
|
45 | var book = booksdb.findOne({title: 'Diao'})
|
46 | book.title = 'Love'
|
47 | booksdb.save(book)
|
48 | book = booksdb.findOne({title: 'Love'})
|
49 | ok(book.title === 'Love')
|
50 | })
|
51 |
|
52 | test('update books', function () {
|
53 | initBooks()
|
54 | var books = booksdb.find()
|
55 | books.forEach(function (b) {
|
56 | b.what = 'ever'
|
57 | booksdb.save(b)
|
58 | })
|
59 | var result = true
|
60 | booksdb.find().forEach(function (b) {
|
61 | if (b.what !== 'ever') {
|
62 | result = false
|
63 | return
|
64 | }
|
65 | })
|
66 | ok(result)
|
67 | })
|
68 |
|
69 | test('extend and populate', function () {
|
70 |
|
71 | var user_id = initUsers()[0]._id
|
72 | var Music = new localdb('music', 'Array', true)
|
73 | Music.destroy()
|
74 | var user = User.extend(user_id)
|
75 | ok(user.__type)
|
76 |
|
77 | var music = {
|
78 | name: 'searet base',
|
79 | singer: 'zone',
|
80 | user: user
|
81 | }
|
82 | var m = Music.add(music).add(music).populate('user').find()
|
83 | console.log(m)
|
84 | })
|
85 |
|
86 | test('remove a key', function () {
|
87 | var site = config.set('date', Date.now()).set('owner', 'God').get()
|
88 | var existed = (typeof site.owner === 'string') ? true : false
|
89 | site = config.remove('owner').get()
|
90 | var existing = (typeof site.owner === 'string') ? true : false
|
91 | ok(existed && !existing)
|
92 | })
|
93 |
|
94 | test('update an Object db', function () {
|
95 | var site = config.set('sitename', 'Google').get()
|
96 | ok(site.sitename === 'Google')
|
97 | })
|
98 |
|
99 | test('add a user with auto timestamp', function () {
|
100 | initUsers()
|
101 | var user = User.findOne({username: 'kevin'})
|
102 | ok(user.createdAt)
|
103 | })
|
104 |
|
105 | test('skip and limit when finding user', function () {
|
106 | initUsers()
|
107 | var user = User.find(null, {skip: 1, limit: 1})
|
108 | ok(user[0].username === 'joe')
|
109 | })
|
110 |
|
111 | test('get some key/index in database', function () {
|
112 | var sitename = config.set('sitename', 'Google').get('sitename')
|
113 | ok(sitename === 'Google')
|
114 |
|
115 | initUsers()
|
116 | var username = User.get(1).username
|
117 | ok(username === 'joe')
|
118 | })
|
119 |
|
120 | test('override with Array', function () {
|
121 | var user = User.override([{
|
122 | username: 'foo'
|
123 | }, {
|
124 | username: 'bar'
|
125 | }], true).findOne()
|
126 | ok(user._id && user.createdAt && user.updatedAt)
|
127 | })
|
128 |
|
129 | test('destroy db and fetch unexisting element', function () {
|
130 | var db = booksdb.destroy().get()
|
131 | ok(booksdb.get(0) === null)
|
132 | ok(db === null)
|
133 | })
|
134 |
|
135 | function initBooks () {
|
136 | booksdb.destroy()
|
137 | return booksdb.add({
|
138 | title: 'Gone with wind',
|
139 | author: 'Kinpika',
|
140 | year: 2013
|
141 | }).add({
|
142 | title: 'Diao',
|
143 | author: 'SOX',
|
144 | year: 2013
|
145 | }).add({
|
146 | title: '大大泡泡堂',
|
147 | author: 'SOX',
|
148 | year: 2013
|
149 | }).get()
|
150 | }
|
151 |
|
152 | function initUsers () {
|
153 | User.destroy()
|
154 | User.add({
|
155 | username: 'kevin',
|
156 | birth: '1994'
|
157 | }).add({
|
158 | username: 'joe',
|
159 | age: 10
|
160 | }).add({
|
161 | username: 'daniel',
|
162 | age: 19,
|
163 | weight: 50
|
164 | })
|
165 |
|
166 | return User.get()
|
167 | }
|