Skip to content

Commit cfbe7a0

Browse files
authored
test: Fix flaky tests (parse-community#10313)
1 parent f77a51e commit cfbe7a0

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

spec/CloudCodeLogger.spec.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,15 @@ describe('Cloud Code Logger', () => {
241241
},
242242
});
243243

244+
let afterSaveResolve;
245+
const afterSavePromise = new Promise(resolve => { afterSaveResolve = resolve; });
244246
Parse.Cloud.beforeSave('TestClass', () => { });
245-
Parse.Cloud.afterSave('TestClass', () => { });
247+
Parse.Cloud.afterSave('TestClass', () => { afterSaveResolve(); });
246248

247249
spy = spyOn(Config.get('test').loggerController.adapter, 'log').and.callThrough();
248250
const obj = new Parse.Object('TestClass');
249251
await obj.save();
252+
await afterSavePromise;
250253

251254
return {
252255
beforeSave: spy.calls

spec/ParseUser.spec.js

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1457,7 +1457,7 @@ describe('Parse.User testing', () => {
14571457
expect(result.get('authData').facebook.access_token).toBe('jenny');
14581458
});
14591459

1460-
it('only creates a single session for an installation / user pair (#2885)', async done => {
1460+
it('only creates a single session for an installation / user pair (#2885)', async () => {
14611461
Parse.Object.disableSingleInstance();
14621462
const provider = getMockFacebookProvider();
14631463
Parse.User._registerAuthenticationProvider(provider);
@@ -1466,18 +1466,19 @@ describe('Parse.User testing', () => {
14661466
const user = await Parse.User.logInWith('facebook');
14671467
const sessionToken = user.getSessionToken();
14681468
const query = new Parse.Query('_Session');
1469-
return query
1470-
.find({ useMasterKey: true })
1471-
.then(results => {
1472-
expect(results.length).toBe(1);
1473-
expect(results[0].get('sessionToken')).toBe(sessionToken);
1474-
expect(results[0].get('createdWith')).toEqual({
1475-
action: 'login',
1476-
authProvider: 'facebook',
1477-
});
1478-
done();
1479-
})
1480-
.catch(done.fail);
1469+
// destroyDuplicatedSessions is fire-and-forget, poll until cleanup completes
1470+
let results;
1471+
for (let i = 0; i < 10; i++) {
1472+
results = await query.find({ useMasterKey: true });
1473+
if (results.length <= 1) { break; }
1474+
await new Promise(resolve => setTimeout(resolve, 100));
1475+
}
1476+
expect(results.length).toBe(1);
1477+
expect(results[0].get('sessionToken')).toBe(sessionToken);
1478+
expect(results[0].get('createdWith')).toEqual({
1479+
action: 'login',
1480+
authProvider: 'facebook',
1481+
});
14811482
});
14821483

14831484
it('log in with provider with files', done => {

0 commit comments

Comments
 (0)