mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-14 00:32:35 +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 () => {
|
it('triggers callback with resumes when listening for data changes on the resumes reference path', async () => {
|
||||||
let snapshotValue = null;
|
|
||||||
const resumesDataSnapshot = await FirebaseStub.database()
|
const resumesDataSnapshot = await FirebaseStub.database()
|
||||||
.ref(resumesPath)
|
.ref(resumesPath)
|
||||||
.once('value');
|
.once('value');
|
||||||
const resumes = resumesDataSnapshot.val();
|
const resumes = resumesDataSnapshot.val();
|
||||||
|
let snapshotValue = null;
|
||||||
|
|
||||||
FirebaseStub.database()
|
FirebaseStub.database()
|
||||||
.ref(resumesPath)
|
.ref(resumesPath)
|
||||||
@ -231,5 +231,22 @@ describe('FirebaseStub', () => {
|
|||||||
|
|
||||||
expect(snapshotValue).toEqual(resumes);
|
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;
|
return databaseData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let data = null;
|
||||||
if (
|
if (
|
||||||
this.#path === Reference.resumesPath ||
|
this.#path === Reference.resumesPath ||
|
||||||
this.#path === Reference.usersPath
|
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 (
|
if (
|
||||||
|
|||||||
@ -31,7 +31,7 @@ describe('Dashboard', () => {
|
|||||||
.once('value')
|
.once('value')
|
||||||
).val();
|
).val();
|
||||||
expect(resumes).toBeTruthy();
|
expect(resumes).toBeTruthy();
|
||||||
expect(Object.keys(resumes).length).toEqual(3);
|
expect(Object.keys(resumes).length).not.toEqual(0);
|
||||||
|
|
||||||
container = render(
|
container = render(
|
||||||
<SettingsProvider>
|
<SettingsProvider>
|
||||||
@ -60,15 +60,16 @@ describe('Dashboard', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('preview of user resumes', async () => {
|
it('preview of user resumes', async () => {
|
||||||
|
expect(Object.keys(resumes).length).toEqual(2);
|
||||||
|
|
||||||
|
expect(Object.values(resumes)[0].user).toEqual(user.uid);
|
||||||
expect(
|
expect(
|
||||||
screen.getByText(new RegExp(Object.values(resumes)[0].name)),
|
screen.getByText(new RegExp(Object.values(resumes)[0].name)),
|
||||||
).toBeInTheDocument();
|
).toBeInTheDocument();
|
||||||
|
expect(Object.values(resumes)[1].user).toEqual(user.uid);
|
||||||
expect(
|
expect(
|
||||||
screen.getByText(new RegExp(Object.values(resumes)[1].name)),
|
screen.getByText(new RegExp(Object.values(resumes)[1].name)),
|
||||||
).toBeInTheDocument();
|
).toBeInTheDocument();
|
||||||
expect(
|
|
||||||
screen.getByText(new RegExp(Object.values(resumes)[2].name)),
|
|
||||||
).toBeInTheDocument();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user