UNPKG

1.83 kBJavaScriptView Raw
1'use strict'
2
3var run = require('tapdance')
4
5var fortune = require('../lib')
6var createMethod = fortune.methods.create
7
8require('./integration/adapters/memory')
9
10run(function (assert, comment) {
11 var timestamp
12 var store = fortune({
13 model: {
14 name: { type: String },
15 junk: { type: Object }
16 }
17 })
18
19 comment('can run in browser')
20
21 return store.connect()
22 .then(function (store) {
23 assert(store instanceof fortune, 'instantiation works')
24 assert(store.common, 'common dependencies exist')
25
26 return store.adapter.delete('model')
27 })
28 .then(function () {
29 return Promise.all([
30 store.request({
31 type: 'model',
32 method: createMethod,
33 payload: [
34 { id: 'x-1', name: 'foo' },
35 { id: 'x-2', name: 'bar' }
36 ]
37 }),
38 store.request({
39 type: 'model',
40 method: createMethod,
41 payload: [
42 { id: 'x-3', name: 'baz' },
43 { id: 'x-4', name: 'qux' }
44 ]
45 })
46 ])
47 })
48 .then(function () {
49 assert(true, 'can handle concurrent requests')
50
51 return store.request({
52 type: 'model',
53 ids: [ 'x-1', 'x-2', 'x-3', 'x-4' ]
54 })
55 })
56 .then(function (response) {
57 var i, j, k, obj = { junk: {} }
58
59 assert(response.payload.records.length === 4, 'find works')
60
61 for (i = 100; i--;) {
62 obj.junk[i] = {}
63 for (j = 100; j--;) {
64 obj.junk[i][j] = {}
65 for (k = 100; k--;)
66 obj.junk[i][j][k] = Math.random()
67 }
68 }
69
70 comment('giant object')
71 timestamp = Date.now()
72
73 return store.request({
74 type: 'model',
75 method: createMethod,
76 payload: [ obj ]
77 })
78 })
79 .then(function () {
80 comment('operation took ' + (Date.now() - timestamp) + ' ms')
81 assert(true, 'giant object stored')
82 return store.disconnect()
83 })
84})