Skip to content

Commit 2ac8237

Browse files
committed
test(updateById, updateOne): Add test when beforeRecordMutate rejects operation due context
1 parent adeaeb0 commit 2ac8237

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

src/resolvers/__tests__/updateById-test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,22 @@ describe('updateById() ->', () => {
168168
expect(result).have.deep.property('record.someDynamic', '1.1.1.1');
169169
expect(beforeMutationId).to.equal(user1.id);
170170
});
171+
172+
it('`beforeRecordMutate` may reject operation', async () => {
173+
const result = updateById(UserModel, UserTypeComposer).resolve({
174+
args: { record: { _id: user1.id, name: 'new name' } },
175+
context: { readOnly: true },
176+
beforeRecordMutate: (record, rp) => {
177+
if (rp.context.readOnly) {
178+
return Promise.reject(new Error('Denied due context ReadOnly'));
179+
}
180+
return record;
181+
},
182+
});
183+
await expect(result).be.rejectedWith(Error, 'Denied due context ReadOnly');
184+
const exist = await UserModel.collection.findOne({ _id: user1._id });
185+
expect(exist.name).to.equal(user1.name);
186+
});
171187
});
172188

173189
describe('Resolver.getOutputType()', () => {

src/resolvers/__tests__/updateOne-test.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,22 @@ describe('updateOne() ->', () => {
193193
expect(result).have.deep.property('record.someDynamic', '1.1.1.1');
194194
expect(beforeMutationId).to.equal(user1.id);
195195
});
196+
197+
it('`beforeRecordMutate` may reject operation', async () => {
198+
const result = updateOne(UserModel, UserTypeComposer).resolve({
199+
args: { filter: { _id: user1.id }, record: { name: 'new name' } },
200+
context: { readOnly: true },
201+
beforeRecordMutate: (record, rp) => {
202+
if (rp.context.readOnly) {
203+
return Promise.reject(new Error('Denied due context ReadOnly'));
204+
}
205+
return record;
206+
},
207+
});
208+
await expect(result).be.rejectedWith(Error, 'Denied due context ReadOnly');
209+
const exist = await UserModel.collection.findOne({ _id: user1._id });
210+
expect(exist.name).to.equal(user1.name);
211+
});
196212
});
197213

198214
describe('Resolver.getOutputType()', () => {

src/resolvers/updateById.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ export default function updateById(
107107
// save changes to DB
108108
.then((doc) => {
109109
if (!doc) {
110-
return Promise.reject('Document not found');
110+
return Promise.reject(new Error('Document not found'));
111111
}
112112
if (recordData) {
113113
doc.set(recordData);

0 commit comments

Comments
 (0)