mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-14 08:42:08 +10:00
Firebase stub: added support for filtering of resumes by user
This commit is contained in:
@ -217,11 +217,11 @@ describe('FirebaseStub', () => {
|
||||
});
|
||||
|
||||
it('triggers callback with resumes when listening for data changes on the resumes reference path', async () => {
|
||||
let snapshotValue = null;
|
||||
const resumesDataSnapshot = await FirebaseStub.database()
|
||||
.ref(resumesPath)
|
||||
.once('value');
|
||||
const resumes = resumesDataSnapshot.val();
|
||||
let snapshotValue = null;
|
||||
|
||||
FirebaseStub.database()
|
||||
.ref(resumesPath)
|
||||
@ -231,5 +231,22 @@ describe('FirebaseStub', () => {
|
||||
|
||||
expect(snapshotValue).toEqual(resumes);
|
||||
});
|
||||
|
||||
it('can filter resumes by user', async () => {
|
||||
let snapshotValue = null;
|
||||
|
||||
FirebaseStub.database()
|
||||
.ref(resumesPath)
|
||||
.orderByChild('user')
|
||||
.equalTo(FirebaseStub.database().anonymousUser1.uid)
|
||||
.on('value', (snapshot) => {
|
||||
snapshotValue = snapshot.val();
|
||||
});
|
||||
|
||||
expect(Object.keys(snapshotValue).length).toEqual(2);
|
||||
Object.values(snapshotValue).forEach((resume) =>
|
||||
expect(resume.user).toEqual(FirebaseStub.database().anonymousUser1.uid),
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@ -241,11 +241,23 @@ class Reference {
|
||||
return databaseData;
|
||||
}
|
||||
|
||||
let data = null;
|
||||
if (
|
||||
this.#path === Reference.resumesPath ||
|
||||
this.#path === Reference.usersPath
|
||||
) {
|
||||
return this.#path in databaseData ? databaseData[this.#path] : null;
|
||||
data = this.#path in databaseData ? databaseData[this.#path] : null;
|
||||
|
||||
if (data && this.#orderByChildPath && this.#equalToValue) {
|
||||
return Object.fromEntries(
|
||||
Object.entries(data).filter(
|
||||
([key, value]) =>
|
||||
value[this.#orderByChildPath] === this.#equalToValue,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
if (
|
||||
|
||||
@ -31,7 +31,7 @@ describe('Dashboard', () => {
|
||||
.once('value')
|
||||
).val();
|
||||
expect(resumes).toBeTruthy();
|
||||
expect(Object.keys(resumes).length).toEqual(3);
|
||||
expect(Object.keys(resumes).length).not.toEqual(0);
|
||||
|
||||
container = render(
|
||||
<SettingsProvider>
|
||||
@ -60,15 +60,16 @@ describe('Dashboard', () => {
|
||||
});
|
||||
|
||||
it('preview of user resumes', async () => {
|
||||
expect(Object.keys(resumes).length).toEqual(2);
|
||||
|
||||
expect(Object.values(resumes)[0].user).toEqual(user.uid);
|
||||
expect(
|
||||
screen.getByText(new RegExp(Object.values(resumes)[0].name)),
|
||||
).toBeInTheDocument();
|
||||
expect(Object.values(resumes)[1].user).toEqual(user.uid);
|
||||
expect(
|
||||
screen.getByText(new RegExp(Object.values(resumes)[1].name)),
|
||||
).toBeInTheDocument();
|
||||
expect(
|
||||
screen.getByText(new RegExp(Object.values(resumes)[2].name)),
|
||||
).toBeInTheDocument();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user