Firebase Stub: introduced a delay in all async functions to better mimic real Firebase

This commit is contained in:
gianantoniopini
2021-01-21 16:45:33 +01:00
parent 562a07619c
commit af966bdf7b
6 changed files with 42 additions and 18 deletions

View File

@ -2,6 +2,7 @@
import { v4 as uuidv4 } from 'uuid';
import Constants from '../constants/auth';
import delay from '../utils/index';
const singleton = Symbol('');
const singletonEnforcer = Symbol('');
@ -49,6 +50,8 @@ class Auth {
async signInAnonymously() {
const user = Constants.anonymousUser1;
await delay(Constants.defaultDelayInMilliseconds);
this.onAuthStateChangedObservers.forEach((observer) => observer(user));
return Promise.resolve(user);

View File

@ -14,6 +14,8 @@ const anonymousUser2 = {
uid: 'anonym456',
};
const defaultDelayInMilliseconds = 100;
class Auth {
static get anonymousUser1() {
return anonymousUser1;
@ -22,6 +24,10 @@ class Auth {
static get anonymousUser2() {
return anonymousUser2;
}
static get defaultDelayInMilliseconds() {
return defaultDelayInMilliseconds;
}
}
export default Auth;

View File

@ -4,6 +4,7 @@ import { debounce } from 'lodash';
import DatabaseConstants from '../constants/database';
import DataSnapshot from './dataSnapshot';
import delay from '../utils/index';
const parsePath = (path) => {
if (!path) {
@ -183,9 +184,7 @@ class Reference {
throw new Error('eventType should be a string.');
}
await new Promise((resolve) =>
setTimeout(resolve, DatabaseConstants.defaultDelayInMilliseconds),
);
await delay(DatabaseConstants.defaultDelayInMilliseconds);
return Promise.resolve(this._dataSnapshot);
}
@ -196,21 +195,27 @@ class Reference {
}
async update(value) {
await delay(DatabaseConstants.defaultDelayInMilliseconds);
this._handleDataUpdate(value);
return Promise.resolve(true);
return Promise.resolve();
}
async remove() {
await delay(DatabaseConstants.defaultDelayInMilliseconds);
this._handleDataUpdate(null);
return Promise.resolve(true);
return Promise.resolve();
}
async set(value) {
await delay(DatabaseConstants.defaultDelayInMilliseconds);
this._handleDataUpdate(value);
return Promise.resolve(true);
return Promise.resolve();
}
}

View File

@ -0,0 +1,5 @@
const delay = async (milliseconds) => {
await new Promise((resolve) => setTimeout(resolve, milliseconds));
};
export default delay;