Skip to content

Commit

Permalink
fix: use eventify internally to avoid extra events
Browse files Browse the repository at this point in the history
  • Loading branch information
NickColley authored and gr2m committed Aug 23, 2015
1 parent 32c55a0 commit 7a7cdef
Show file tree
Hide file tree
Showing 8 changed files with 31 additions and 9 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ npm install pouchdb
npm install pouchdb-hoodie-api
```

### Inlcuding the plugin
### Including the plugin

#### With browserify or on node.js/io.js

Expand Down
4 changes: 2 additions & 2 deletions find-or-add.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,6 @@ module.exports = findOrAdd
*/
function findOrAdd (idOrObjectOrArray, newObject) {
return Array.isArray(idOrObjectOrArray) ?
findOrAddMany.call(this, idOrObjectOrArray) :
findOrAddOne.call(this, idOrObjectOrArray, newObject)
findOrAddMany.call(this, null, idOrObjectOrArray) :
findOrAddOne.call(this, null, idOrObjectOrArray, newObject)
}
7 changes: 6 additions & 1 deletion helpers/find-or-add-many.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
var toId = require('../utils/to-id')
var findMany = require('./find-many')
var addMany = require('./add-many')
var eventify = require('./eventify')

module.exports = function findOrAddMany (passedObjects) {
module.exports = function findOrAddMany (state, passedObjects) {
var self = this
var foundObjects
var passedObjectIds = passedObjects.map(toId)
Expand All @@ -20,6 +21,10 @@ module.exports = function findOrAddMany (passedObjects) {
return notFoundObjects
}, [])

if (state) {
return eventify(self, state, addMany)(notFoundObjects)
}

return addMany.call(self, notFoundObjects)
})

Expand Down
7 changes: 6 additions & 1 deletion helpers/find-or-add-one.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
var toId = require('../utils/to-id')
var findOne = require('./find-one')
var addOne = require('./add-one')
var eventify = require('./eventify')

module.exports = function findOrAddOne (idOrObject, newObject) {
module.exports = function findOrAddOne (state, idOrObject, newObject) {
var self = this
var Promise = this.constructor.utils.Promise
var errors = this.constructor.Errors
Expand All @@ -25,6 +26,10 @@ module.exports = function findOrAddOne (idOrObject, newObject) {
newObject = idOrObject
}

if (state) {
return eventify(self, state, addOne)(newObject)
}

return addOne.call(self, newObject)
})
}
2 changes: 1 addition & 1 deletion index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ function hoodieApi (options) {
add: eventify(this, state, require('./add')),
find: require('./find').bind(this),
findAll: require('./find-all').bind(this),
findOrAdd: eventify(this, state, require('./find-or-add')),
findOrAdd: require('./lib/find-or-add-with-events').bind(this, state),
update: eventify(this, state, require('./update')),
updateOrAdd: eventify(this, state, require('./update-or-add')),
updateAll: eventify(this, state, require('./update-all')),
Expand Down
12 changes: 12 additions & 0 deletions lib/find-or-add-with-events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
'use strict'

var findOrAddOne = require('../helpers/find-or-add-one')
var findOrAddMany = require('../helpers/find-or-add-many')

module.exports = findOrAdd

function findOrAdd (state, idOrObjectOrArray, newObject) {
return Array.isArray(idOrObjectOrArray) ?
findOrAddMany.call(this, state, idOrObjectOrArray) :
findOrAddOne.call(this, state, idOrObjectOrArray, newObject)
}
4 changes: 2 additions & 2 deletions tests/specs/find-or-add.js
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ test('store.findOrAdd([object1, object2])', function (t) {
})
})

test.skip('#58 store.findOrAdd(id, object) triggers no events when finds existing', function (t) {
test('#58 store.findOrAdd(id, object) triggers no events when finds existing', function (t) {
t.plan(2)

var db = dbFactory()
Expand Down Expand Up @@ -153,7 +153,7 @@ test.skip('#58 store.findOrAdd(id, object) triggers no events when finds existin
})
})

test.skip('#58 store.findOrAdd([object1, object2]) triggers no events when finds existing', function (t) {
test('#58 store.findOrAdd([object1, object2]) triggers no events when finds existing', function (t) {
t.plan(2)

var db = dbFactory()
Expand Down
2 changes: 1 addition & 1 deletion tests/specs/update-or-add.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ test('store.updateOrAdd(array) updates existing, adds new', function (t) {
})
})

test.skip('#58 store.updateOrAdd(id, object) triggers no extra events', function (t) {
test('#58 store.updateOrAdd(id, object) triggers no extra events', function (t) {
t.plan(2)

var db = dbFactory()
Expand Down

0 comments on commit 7a7cdef

Please sign in to comment.