|
5 | 5 | var DatabaseAdapter = require('../src/DatabaseAdapter');
|
6 | 6 | var request = require('request');
|
7 | 7 | const Parse = require("parse/node");
|
| 8 | +let Config = require('../src/Config'); |
8 | 9 |
|
9 | 10 | describe('miscellaneous', function() {
|
10 | 11 | it('create a GameScore object', function(done) {
|
@@ -224,6 +225,34 @@ describe('miscellaneous', function() {
|
224 | 225 | });
|
225 | 226 | });
|
226 | 227 |
|
| 228 | + it('test beforeSave set object acl success', function(done) { |
| 229 | + var acl = new Parse.ACL({ |
| 230 | + '*': { read: true, write: false } |
| 231 | + }); |
| 232 | + Parse.Cloud.beforeSave('BeforeSaveAddACL', function(req, res) { |
| 233 | + req.object.setACL(acl); |
| 234 | + res.success(); |
| 235 | + }); |
| 236 | + |
| 237 | + var obj = new Parse.Object('BeforeSaveAddACL'); |
| 238 | + obj.set('lol', true); |
| 239 | + obj.save().then(function() { |
| 240 | + Parse.Cloud._removeHook('Triggers', 'beforeSave', 'BeforeSaveAddACL'); |
| 241 | + var query = new Parse.Query('BeforeSaveAddACL'); |
| 242 | + query.get(obj.id).then(function(objAgain) { |
| 243 | + expect(objAgain.get('lol')).toBeTruthy(); |
| 244 | + expect(objAgain.getACL().equals(acl)); |
| 245 | + done(); |
| 246 | + }, function(error) { |
| 247 | + fail(error); |
| 248 | + done(); |
| 249 | + }); |
| 250 | + }, function(error) { |
| 251 | + fail(error); |
| 252 | + done(); |
| 253 | + }); |
| 254 | + }); |
| 255 | + |
227 | 256 | it('test beforeSave returns value on create and update', (done) => {
|
228 | 257 | var obj = new Parse.Object('BeforeSaveChanged');
|
229 | 258 | obj.set('foo', 'bing');
|
@@ -1387,4 +1416,25 @@ describe('miscellaneous', function() {
|
1387 | 1416 | })
|
1388 | 1417 | });
|
1389 | 1418 | });
|
| 1419 | + |
| 1420 | + it('fail when create duplicate value in unique field', (done) => { |
| 1421 | + let obj = new Parse.Object('UniqueField'); |
| 1422 | + obj.set('unique', 'value'); |
| 1423 | + obj.save().then(() => { |
| 1424 | + expect(obj.id).not.toBeUndefined(); |
| 1425 | + let config = new Config('test'); |
| 1426 | + return config.database.adapter.adaptiveCollection('UniqueField') |
| 1427 | + }).then(collection => { |
| 1428 | + return collection._mongoCollection.createIndex({ 'unique': 1 }, { unique: true }) |
| 1429 | + }).then(() => { |
| 1430 | + let obj = new Parse.Object('UniqueField'); |
| 1431 | + obj.set('unique', 'value'); |
| 1432 | + return obj.save() |
| 1433 | + }).then(() => { |
| 1434 | + return Promise.reject(); |
| 1435 | + }, error => { |
| 1436 | + expect(error.code === Parse.Error.DUPLICATE_VALUE); |
| 1437 | + done(); |
| 1438 | + }); |
| 1439 | + }); |
1390 | 1440 | });
|
0 commit comments