Firebase Stub refactoring, added eslint-plugin-jest dev dependency

This commit is contained in:
gianantoniopini
2021-01-07 16:43:24 +01:00
parent 294dbf195f
commit da8849c854
11 changed files with 190 additions and 75 deletions

View File

@ -1,4 +1,7 @@
import FirebaseStub, { AuthConstants } from '../gatsby-plugin-firebase';
import FirebaseStub, {
AuthConstants,
DatabaseConstants,
} from '../gatsby-plugin-firebase';
describe('FirebaseStub', () => {
const { resumesPath } = FirebaseStub.database();
@ -49,14 +52,14 @@ describe('FirebaseStub', () => {
const observer = () => {};
const unsubscribe = FirebaseStub.auth().onAuthStateChanged(observer);
expect(unsubscribe).toBeTruthy();
expect(FirebaseStub.auth().onAuthStateChangedObservers.length).toEqual(1);
expect(FirebaseStub.auth().onAuthStateChangedObservers).toHaveLength(1);
expect(FirebaseStub.auth().onAuthStateChangedObservers[0]).toEqual(
observer,
);
unsubscribe();
expect(FirebaseStub.auth().onAuthStateChangedObservers.length).toEqual(0);
expect(FirebaseStub.auth().onAuthStateChangedObservers).toHaveLength(0);
});
});
@ -110,30 +113,24 @@ describe('FirebaseStub', () => {
const resumesDataSnapshot = await resumesRef.once('value');
const resumes = resumesDataSnapshot.val();
expect(resumes).toBeTruthy();
expect(Object.keys(resumes).length).toEqual(3);
const demoStateResume1 =
resumes[FirebaseStub.database().demoStateResume1Id];
expect(Object.keys(resumes)).toHaveLength(3);
const demoStateResume1 = resumes[DatabaseConstants.demoStateResume1Id];
expect(demoStateResume1).toBeTruthy();
expect(demoStateResume1.id).toEqual(
FirebaseStub.database().demoStateResume1Id,
);
expect(demoStateResume1.id).toEqual(DatabaseConstants.demoStateResume1Id);
expect(demoStateResume1.user).toEqual(
FirebaseStub.database().anonymousUser1.uid,
);
const demoStateResume2 =
resumes[FirebaseStub.database().demoStateResume2Id];
const demoStateResume2 = resumes[DatabaseConstants.demoStateResume2Id];
expect(demoStateResume2).toBeTruthy();
expect(demoStateResume2.id).toEqual(
FirebaseStub.database().demoStateResume2Id,
);
expect(demoStateResume2.id).toEqual(DatabaseConstants.demoStateResume2Id);
expect(demoStateResume2.user).toEqual(
FirebaseStub.database().anonymousUser2.uid,
);
const initialStateResume =
resumes[FirebaseStub.database().initialStateResumeId];
resumes[DatabaseConstants.initialStateResumeId];
expect(initialStateResume).toBeTruthy();
expect(initialStateResume.id).toEqual(
FirebaseStub.database().initialStateResumeId,
DatabaseConstants.initialStateResumeId,
);
expect(initialStateResume.user).toEqual(
FirebaseStub.database().anonymousUser1.uid,
@ -143,7 +140,7 @@ describe('FirebaseStub', () => {
const usersDataSnapshot = await usersRef.once('value');
const users = usersDataSnapshot.val();
expect(users).toBeTruthy();
expect(Object.keys(users).length).toEqual(2);
expect(Object.keys(users)).toHaveLength(2);
const anonymousUser1 = users[FirebaseStub.database().anonymousUser1.uid];
expect(anonymousUser1).toBeTruthy();
expect(anonymousUser1).toEqual(FirebaseStub.database().anonymousUser1);
@ -157,12 +154,12 @@ describe('FirebaseStub', () => {
const resume = (
await FirebaseStub.database()
.ref(`${resumesPath}/${FirebaseStub.database().demoStateResume1Id}`)
.ref(`${resumesPath}/${DatabaseConstants.demoStateResume1Id}`)
.once('value')
).val();
expect(resume).toBeTruthy();
expect(resume.id).toEqual(FirebaseStub.database().demoStateResume1Id);
expect(resume.id).toEqual(DatabaseConstants.demoStateResume1Id);
});
it('retrieves null if resume does not exist', async () => {
@ -243,7 +240,7 @@ describe('FirebaseStub', () => {
snapshotValue = snapshot.val();
});
expect(Object.keys(snapshotValue).length).toEqual(2);
expect(Object.keys(snapshotValue)).toHaveLength(2);
Object.values(snapshotValue).forEach((resume) =>
expect(resume.user).toEqual(FirebaseStub.database().anonymousUser1.uid),
);

View File

@ -2,7 +2,10 @@ import path from 'path';
import fs from 'fs';
import { v4 as uuidv4 } from 'uuid';
import { AuthConstants } from './gatsby-plugin-firebase/constants';
import {
AuthConstants,
DatabaseConstants,
} from './gatsby-plugin-firebase/constants';
class Auth {
static #instance = undefined;
@ -57,9 +60,6 @@ class Database {
#references = {};
#anonymousUser1 = undefined;
#anonymousUser2 = undefined;
#demoStateResume1Id = 'demo_1';
#demoStateResume2Id = 'demo_2';
#initialStateResumeId = 'initst';
constructor() {
if (Database.#instance) {
@ -99,18 +99,6 @@ class Database {
return this.#anonymousUser2;
}
get demoStateResume1Id() {
return this.#demoStateResume1Id;
}
get demoStateResume2Id() {
return this.#demoStateResume2Id;
}
get initialStateResumeId() {
return this.#initialStateResumeId;
}
get uuid() {
return this.#uuid;
}
@ -131,11 +119,11 @@ class Database {
date.setMonth(date.getMonth() - 2);
demoStateResume1.createdAt = date.valueOf();
demoStateResume1.user = this.anonymousUser1.uid;
resumes[this.demoStateResume1Id] = demoStateResume1;
resumes[DatabaseConstants.demoStateResume1Id] = demoStateResume1;
const demoStateResume2 = JSON.parse(JSON.stringify(demoStateResume1));
demoStateResume2.user = this.anonymousUser2.uid;
resumes[this.demoStateResume2Id] = demoStateResume2;
resumes[DatabaseConstants.demoStateResume2Id] = demoStateResume2;
const initialStateResume = Database.readFile(
'../src/data/initialState.json',
@ -143,7 +131,7 @@ class Database {
initialStateResume.updatedAt = date.valueOf();
initialStateResume.createdAt = date.valueOf();
initialStateResume.user = this.anonymousUser1.uid;
resumes[this.initialStateResumeId] = initialStateResume;
resumes[DatabaseConstants.initialStateResumeId] = initialStateResume;
for (var key in resumes) {
const resume = resumes[key];
@ -372,4 +360,4 @@ Object.defineProperty(FirebaseStub.database.ServerValue, 'TIMESTAMP', {
});
export default FirebaseStub;
export { AuthConstants };
export { AuthConstants, DatabaseConstants };

View File

@ -1 +1,4 @@
export { Auth as AuthConstants } from './constants/auth';
import AuthConstants from './constants/auth';
import DatabaseConstants from './constants/database';
export { AuthConstants, DatabaseConstants };

View File

@ -1,19 +1,27 @@
class Auth {
static anonymousUser1 = {
displayName: 'Anonymous User 1',
email: 'anonymous1@noemail.com',
isAnonymous: true,
name: 'Anonymous 1',
uid: 'anonym123',
};
const anonymousUser1 = {
displayName: 'Anonymous User 1',
email: 'anonymous1@noemail.com',
isAnonymous: true,
name: 'Anonymous 1',
uid: 'anonym123',
};
static anonymousUser2 = {
displayName: 'Anonymous User 2',
email: 'anonymous2@noemail.com',
isAnonymous: true,
name: 'Anonymous 2',
uid: 'anonym456',
};
const anonymousUser2 = {
displayName: 'Anonymous User 2',
email: 'anonymous2@noemail.com',
isAnonymous: true,
name: 'Anonymous 2',
uid: 'anonym456',
};
class Auth {
static get anonymousUser1() {
return anonymousUser1;
}
static get anonymousUser2() {
return anonymousUser2;
}
}
export { Auth };
export default Auth;

View File

@ -0,0 +1,19 @@
const demoStateResume1Id = 'demo_1';
const demoStateResume2Id = 'demo_2';
const initialStateResumeId = 'initst';
class Database {
static get demoStateResume1Id() {
return demoStateResume1Id;
}
static get demoStateResume2Id() {
return demoStateResume2Id;
}
static get initialStateResumeId() {
return initialStateResumeId;
}
}
export default Database;