Skip to content

Commit 6c7f5e6

Browse files
committed
Prepare for 0.7.3
1 parent 8ad5171 commit 6c7f5e6

File tree

8 files changed

+88
-14
lines changed

8 files changed

+88
-14
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
##### 0.7.3 - 25 May 2016
2+
3+
###### Bug fixes
4+
- Relations specified by `opts.with` weren't being passed through
5+
16
##### 0.7.2 - 17 May 2016
27

38
###### Bug fixes

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "js-data-adapter",
33
"description": "Base adapter class that all other js-data adapters extend.",
4-
"version": "0.7.2",
4+
"version": "0.7.3",
55
"homepage": "https://github.com/js-data/js-data-adapter",
66
"repository": {
77
"type": "git",
@@ -68,12 +68,12 @@
6868
},
6969
"dependencies": {
7070
"chai": "^3.5.0",
71-
"mocha": "^2.4.5",
71+
"mocha": "^2.5.3",
7272
"sinon": "^1.17.4"
7373
},
7474
"devDependencies": {
7575
"babel-plugin-syntax-async-functions": "6.8.0",
76-
"babel-plugin-transform-regenerator": "6.8.0",
76+
"babel-plugin-transform-regenerator": "6.9.0",
7777
"babel-preset-stage-0": "6.5.0",
7878
"js-data-repo-tools": "0.5.2"
7979
}

src/index.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,14 @@ export const unique = function (array) {
2828
return final
2929
}
3030

31-
export const withoutRelations = function (mapper, props) {
32-
return utils.omit(props, mapper.relationFields || [])
31+
export const withoutRelations = function (mapper, props, opts) {
32+
opts || (opts = {})
33+
opts.with || (opts.with = [])
34+
const relationFields = mapper.relationFields || []
35+
const toStrip = relationFields.filter(function (value) {
36+
return opts.with.indexOf(value) === -1
37+
})
38+
return utils.omit(props, toStrip)
3339
}
3440

3541
const DEFAULTS = {
@@ -667,7 +673,7 @@ utils.addHiddenPropsToTarget(Adapter.prototype, {
667673
return utils.resolve(self[op](mapper, props, opts)).then(function (_props) {
668674
// Allow for re-assignment from lifecycle hook
669675
props = utils.isUndefined(_props) ? props : _props
670-
props = withoutRelations(mapper, props)
676+
props = withoutRelations(mapper, props, opts)
671677
op = opts.op = 'create'
672678
self.dbg(op, mapper, props, opts)
673679
return utils.resolve(self._create(mapper, props, opts))
@@ -711,7 +717,7 @@ utils.addHiddenPropsToTarget(Adapter.prototype, {
711717
// Allow for re-assignment from lifecycle hook
712718
props = utils.isUndefined(_props) ? props : _props
713719
props = props.map(function (record) {
714-
return withoutRelations(mapper, record)
720+
return withoutRelations(mapper, record, opts)
715721
})
716722
op = opts.op = 'createMany'
717723
self.dbg(op, mapper, props, opts)
@@ -1363,7 +1369,7 @@ utils.addHiddenPropsToTarget(Adapter.prototype, {
13631369
return utils.resolve(self[op](mapper, id, props, opts)).then(function (_props) {
13641370
// Allow for re-assignment from lifecycle hook
13651371
props = utils.isUndefined(_props) ? props : _props
1366-
props = withoutRelations(mapper, props)
1372+
props = withoutRelations(mapper, props, opts)
13671373
op = opts.op = 'update'
13681374
self.dbg(op, mapper, id, props, opts)
13691375
return utils.resolve(self._update(mapper, id, props, opts))
@@ -1415,7 +1421,7 @@ utils.addHiddenPropsToTarget(Adapter.prototype, {
14151421
return utils.resolve(self[op](mapper, props, query, opts)).then(function (_props) {
14161422
// Allow for re-assignment from lifecycle hook
14171423
props = utils.isUndefined(_props) ? props : _props
1418-
props = withoutRelations(mapper, props)
1424+
props = withoutRelations(mapper, props, opts)
14191425
op = opts.op = 'updateAll'
14201426
self.dbg(op, mapper, props, query, opts)
14211427
return utils.resolve(self._updateAll(mapper, props, query, opts))
@@ -1465,7 +1471,7 @@ utils.addHiddenPropsToTarget(Adapter.prototype, {
14651471
// Allow for re-assignment from lifecycle hook
14661472
records = utils.isUndefined(_records) ? records : _records
14671473
records = records.map(function (record) {
1468-
return withoutRelations(mapper, record)
1474+
return withoutRelations(mapper, record, opts)
14691475
})
14701476
op = opts.op = 'updateMany'
14711477
self.dbg(op, mapper, records, opts)

test/afterCreate.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ export default function (options) {
2929
assert.objectsEqual(args[1], { name: 'John' }, 'afterCreate should have received create props')
3030
assert.isObject(args[2], 'afterCreate should have received options')
3131
assert.isObject(args[3], 'afterCreate should have received record')
32+
adapter.afterCreate.restore()
3233
})
3334
it('should allow re-assignment', async function () {
3435
const adapter = this.$$adapter
@@ -55,6 +56,7 @@ export default function (options) {
5556
assert.objectsEqual(args[1], { name: 'John' }, 'afterCreate should have received create props')
5657
assert.isObject(args[2], 'afterCreate should have received options')
5758
assert.isObject(args[3], 'afterCreate should have received record')
59+
adapter.afterCreate.restore()
5860
})
5961
it('should allow returning a promise', async function () {
6062
const adapter = this.$$adapter
@@ -82,6 +84,7 @@ export default function (options) {
8284
assert.objectsEqual(args[1], { name: 'John' }, 'afterCreate should have received create props')
8385
assert.isDefined(args[2], 'afterCreate should have received options')
8486
assert.isObject(args[3], 'afterCreate should have received record')
87+
adapter.afterCreate.restore()
8588
})
8689
it('should allow returning a promise and re-assignment', async function () {
8790
const adapter = this.$$adapter
@@ -108,6 +111,7 @@ export default function (options) {
108111
assert.objectsEqual(args[1], { name: 'John' }, 'afterCreate should have received create props')
109112
assert.isObject(args[2], 'afterCreate should have received options')
110113
assert.isObject(args[3], 'afterCreate should have received record')
114+
adapter.afterCreate.restore()
111115
})
112116
it('should receive raw', async function () {
113117
const adapter = this.$$adapter
@@ -137,6 +141,7 @@ export default function (options) {
137141
assert.isObject(args[3], 'afterCreate should have received result')
138142
assert.equal(args[3].created, 1, 'result.created')
139143
assert.isObject(args[3].data, 'result.data')
144+
adapter.afterCreate.restore()
140145
})
141146
})
142147
}

test/afterUpdate.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export default function (options) {
4040
assert.isDefined(args[4], 'afterUpdate should have received updated record')
4141
assert.equal(args[4][User.idAttribute], userId, `args[4].${User.idAttribute}`)
4242
assert.equal(args[4].name, 'Johnny', 'args[4].name')
43+
adapter.afterUpdate.restore()
4344
})
4445
it('should receive raw', async function () {
4546
const adapter = this.$$adapter
@@ -80,6 +81,7 @@ export default function (options) {
8081
assert.isDefined(args[4].data, 'args[4].data')
8182
assert.equal(args[4].data[User.idAttribute], userId, `args[4].data.${User.idAttribute}`)
8283
assert.equal(args[4].data.name, 'Johnny', 'args[4].data.name')
84+
adapter.afterUpdate.restore()
8385
})
8486
it('should allow re-assignment', async function () {
8587
const adapter = this.$$adapter
@@ -117,6 +119,7 @@ export default function (options) {
117119
assert.isDefined(args[4], 'afterUpdate should have received updated record')
118120
assert.equal(args[4][User.idAttribute], userId, `args[4].${User.idAttribute}`)
119121
assert.equal(args[4].name, 'Johnny', 'args[4].name')
122+
adapter.afterUpdate.restore()
120123
})
121124
it('should allow returning a promise', async function () {
122125
const adapter = this.$$adapter
@@ -155,6 +158,7 @@ export default function (options) {
155158
assert.isDefined(args[4], 'afterUpdate should have received updated record')
156159
assert.equal(args[4][User.idAttribute], userId, `args[4].${User.idAttribute}`)
157160
assert.equal(args[4].name, 'Johnny', 'args[4].name')
161+
adapter.afterUpdate.restore()
158162
})
159163
it('should allow returning a promise and re-assignment', async function () {
160164
const adapter = this.$$adapter
@@ -192,6 +196,7 @@ export default function (options) {
192196
assert.isDefined(args[4], 'afterUpdate should have received updated record')
193197
assert.equal(args[4][User.idAttribute], userId, `args[4].${User.idAttribute}`)
194198
assert.equal(args[4].name, 'Johnny', 'args[4].name')
199+
adapter.afterUpdate.restore()
195200
})
196201
})
197202
}

test/beforeCreate.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default function (options) {
2828
assert.isTrue(args[0] === User, 'beforeCreate should have received User mapper')
2929
assert.objectsEqual(args[1], { name: 'John' }, 'beforeCreate should have received create props')
3030
assert.isObject(args[2], 'beforeCreate should have received options')
31+
adapter.beforeCreate.restore()
3132
})
3233
it('should allow re-assignment', async function () {
3334
const adapter = this.$$adapter
@@ -54,6 +55,7 @@ export default function (options) {
5455
assert.isTrue(args[0] === User, 'beforeCreate should have received User mapper')
5556
assert.objectsEqual(args[1], { name: 'John' }, 'beforeCreate should have received create props')
5657
assert.isObject(args[2], 'beforeCreate should have received options')
58+
adapter.beforeCreate.restore()
5759
})
5860
it('should allow returning a promise', async function () {
5961
const adapter = this.$$adapter
@@ -80,6 +82,7 @@ export default function (options) {
8082
assert.isTrue(args[0] === User, 'beforeCreate should have received User mapper')
8183
assert.objectsEqual(args[1], { name: 'John' }, 'beforeCreate should have received create props')
8284
assert.isDefined(args[2], 'beforeCreate should have received options')
85+
adapter.beforeCreate.restore()
8386
})
8487
it('should allow returning a promise and re-assignment', async function () {
8588
const adapter = this.$$adapter
@@ -106,6 +109,7 @@ export default function (options) {
106109
assert.isTrue(args[0] === User, 'beforeCreate should have received User mapper')
107110
assert.objectsEqual(args[1], { name: 'John' }, 'beforeCreate should have received create props')
108111
assert.isObject(args[2], 'beforeCreate should have received options')
112+
adapter.beforeCreate.restore()
109113
})
110114
})
111115
}

test/beforeUpdate.test.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ export default function (options) {
3535
assert.isTrue(args[0] === User, 'beforeUpdate should have received User mapper')
3636
assert.isTrue(args[1] === userId, 'beforeUpdate should have received user id')
3737
assert.objectsEqual(args[2], { name: 'Johnny' }, 'beforeUpdate should have received update props')
38-
assert.isObject(args[3], 'beforeCreate should have received options')
38+
assert.isObject(args[3], 'beforeUpdate should have received options')
39+
adapter.beforeUpdate.restore()
3940
})
4041
it('should allow re-assignment', async function () {
4142
const adapter = this.$$adapter
@@ -69,7 +70,8 @@ export default function (options) {
6970
assert.isTrue(args[0] === User, 'beforeUpdate should have received User mapper')
7071
assert.isTrue(args[1] === userId, 'beforeUpdate should have received user id')
7172
assert.objectsEqual(args[2], { name: 'Johnny' }, 'beforeUpdate should have received update props')
72-
assert.isObject(args[3], 'beforeCreate should have received options')
73+
assert.isObject(args[3], 'beforeUpdate should have received options')
74+
adapter.beforeUpdate.restore()
7375
})
7476
it('should allow returning a promise', async function () {
7577
const adapter = this.$$adapter
@@ -103,7 +105,8 @@ export default function (options) {
103105
assert.isTrue(args[0] === User, 'beforeUpdate should have received User mapper')
104106
assert.isTrue(args[1] === userId, 'beforeUpdate should have received user id')
105107
assert.objectsEqual(args[2], { name: 'Johnny' }, 'beforeUpdate should have received update props')
106-
assert.isObject(args[3], 'beforeCreate should have received options')
108+
assert.isObject(args[3], 'beforeUpdate should have received options')
109+
adapter.beforeUpdate.restore()
107110
})
108111
it('should allow returning a promise and re-assignment', async function () {
109112
const adapter = this.$$adapter
@@ -137,7 +140,8 @@ export default function (options) {
137140
assert.isTrue(args[0] === User, 'beforeUpdate should have received User mapper')
138141
assert.isTrue(args[1] === userId, 'beforeUpdate should have received user id')
139142
assert.objectsEqual(args[2], { name: 'Johnny' }, 'beforeUpdate should have received update props')
140-
assert.isObject(args[3], 'beforeCreate should have received options')
143+
assert.isObject(args[3], 'beforeUpdate should have received options')
144+
adapter.beforeUpdate.restore()
141145
})
142146
})
143147
}

test/update.test.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,5 +71,50 @@ export default function (options) {
7171
assert.equal(err.message, 'Not Found', 'err.message should be "Not Found"')
7272
}
7373
})
74+
it('should keep relations specified by "with"', async function () {
75+
const adapter = this.$$adapter
76+
const store = this.$$container
77+
78+
sinon.stub(adapter, '_update', function (mapper, id, props, opts) {
79+
assert.deepEqual(props.posts, [
80+
{
81+
id: 1234,
82+
userId: 1
83+
}
84+
])
85+
assert.deepEqual(props.profile, {
86+
id: 238,
87+
userId: 1
88+
})
89+
assert.equal(props.address, undefined)
90+
assert.equal(props.organization, undefined)
91+
return [props, {}]
92+
})
93+
94+
assert.debug('update', 1, { id: 1 })
95+
const result = await store.update('user', 1, {
96+
id: 1,
97+
posts: [
98+
{
99+
id: 1234,
100+
userId: 1
101+
}
102+
],
103+
address: {
104+
id: 412,
105+
userId: 1
106+
},
107+
profile: {
108+
id: 238,
109+
userId: 1
110+
},
111+
organizationId: 333,
112+
organization: {
113+
id: 333
114+
}
115+
}, { with: ['posts', 'profile'] })
116+
assert.debug('updated', 1, result)
117+
adapter._update.restore()
118+
})
74119
})
75120
}

0 commit comments

Comments
 (0)