UNPKG

nqm-minimongo

Version:

Client-side mongo database with server sync over http

96 lines (82 loc) 3.02 kB
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) -> @reset = (done) => @db = new LocalStorageDb() @db.addCollection("scratch") @col = @db.scratch done() @reset(done) describe "passes queries", -> db_queries.call(this) describe "passes caching", -> db_caching.call(this) describe 'LocalStorageDb with local storage', -> before -> @db = new LocalStorageDb({ namespace: "db.scratch" }) beforeEach (done) -> @db.removeCollection('scratch') @db.addCollection('scratch') done() it "retains items", (done) -> @db.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) -> @db.scratch.cacheOne { _id:"1", a:"Alice" }, => @db.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) -> @db.scratch.seed { _id:"1", a:"Alice" }, => @db.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 -> @db = new LocalStorageDb() beforeEach (done) -> @db.removeCollection('scratch') @db.addCollection('scratch') done() it "does not retain items", (done) -> @db.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) -> @db.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) -> @db.scratch.seed { _id:"1", a:"Alice" }, => @db.scratch.remove "1", -> db2 = new LocalStorageDb() db2.addCollection 'scratch' db2.scratch.pendingRemoves (removes) -> assert.equal removes.length, 0 done()