nqm-minimongo
Version:
Client-side mongo database with server sync over http
96 lines (82 loc) • 3.02 kB
text/coffeescript
chai = require 'chai'
assert = chai.assert
LocalStorageDb = require "../src/LocalStorageDb"
db_queries = require "./db_queries"
db_caching = require "./db_caching"
_ = require 'lodash'
describe 'LocalStorageDb', ->
before (done) ->
= (done) =>
= new LocalStorageDb()
.addCollection("scratch")
= .scratch
done()
describe "passes queries", ->
db_queries.call(this)
describe "passes caching", ->
db_caching.call(this)
describe 'LocalStorageDb with local storage', ->
before ->
= new LocalStorageDb({ namespace: "db.scratch" })
beforeEach (done) ->
.removeCollection('scratch')
.addCollection('scratch')
done()
it "retains items", (done) ->
.scratch.upsert { _id:"1", a:"Alice" }, ->
db2 = new LocalStorageDb({ namespace: "db.scratch" })
db2.addCollection 'scratch'
db2.scratch.find({}).fetch (results) ->
assert.equal results[0].a, "Alice"
done()
it "retains upserts", (done) ->
.scratch.cacheOne { _id:"1", a:"Alice" }, =>
.scratch.upsert { _id:"1", a:"Bob" }, ->
new LocalStorageDb { namespace: "db.scratch" }, (db2) ->
db2.addCollection 'scratch', ->
db2.scratch.find({}).fetch (results) ->
assert.deepEqual results, [{ _id:"1", a:"Bob" }]
db2.scratch.pendingUpserts (upserts) ->
assert.equal upserts.length, 1
assert.deepEqual upserts[0].doc, { _id:"1", a:"Bob" }
assert.deepEqual upserts[0].base, { _id:"1", a:"Alice" }
done()
it "retains removes", (done) ->
.scratch.seed { _id:"1", a:"Alice" }, =>
.scratch.remove "1", ->
db2 = new LocalStorageDb({ namespace: "db.scratch" })
db2.addCollection 'scratch'
db2.scratch.pendingRemoves (removes) ->
assert.deepEqual removes, ["1"]
done()
describe 'LocalStorageDb without local storage', ->
before ->
= new LocalStorageDb()
beforeEach (done) ->
.removeCollection('scratch')
.addCollection('scratch')
done()
it "does not retain items", (done) ->
.scratch.upsert { _id:"1", a:"Alice" }, ->
db2 = new LocalStorageDb()
db2.addCollection 'scratch'
db2.scratch.find({}).fetch (results) ->
assert.equal results.length, 0
done()
it "does not retain upserts", (done) ->
.scratch.upsert { _id:"1", a:"Alice" }, ->
db2 = new LocalStorageDb()
db2.addCollection 'scratch'
db2.scratch.find({}).fetch (results) ->
db2.scratch.pendingUpserts (upserts) ->
assert.equal results.length, 0
done()
it "does not retain removes", (done) ->
.scratch.seed { _id:"1", a:"Alice" }, =>
.scratch.remove "1", ->
db2 = new LocalStorageDb()
db2.addCollection 'scratch'
db2.scratch.pendingRemoves (removes) ->
assert.equal removes.length, 0
done()