mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-15 01:01:43 +10:00
Dashboard: updated unit tests for Delete resume
This commit is contained in:
@ -1,6 +1,5 @@
|
|||||||
/* eslint-disable no-underscore-dangle */
|
/* eslint-disable no-underscore-dangle */
|
||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { debounce } from 'lodash';
|
|
||||||
|
|
||||||
import DatabaseConstants from '../constants/database';
|
import DatabaseConstants from '../constants/database';
|
||||||
import DataSnapshot from './dataSnapshot';
|
import DataSnapshot from './dataSnapshot';
|
||||||
@ -148,11 +147,7 @@ class Reference {
|
|||||||
? this._dataSnapshot
|
? this._dataSnapshot
|
||||||
: new DataSnapshot(() => this._getData(), snapshotValue);
|
: new DataSnapshot(() => this._getData(), snapshotValue);
|
||||||
|
|
||||||
const debouncedEventCallback = debounce(
|
this.eventCallbacks[eventType](snapshot);
|
||||||
this.eventCallbacks[eventType],
|
|
||||||
DatabaseConstants.defaultDelayInMilliseconds,
|
|
||||||
);
|
|
||||||
debouncedEventCallback(snapshot);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
equalTo(value) {
|
equalTo(value) {
|
||||||
@ -173,7 +168,9 @@ class Reference {
|
|||||||
this.eventCallbacks[eventType] = callback;
|
this.eventCallbacks[eventType] = callback;
|
||||||
|
|
||||||
if (eventType === DatabaseConstants.valueEventType) {
|
if (eventType === DatabaseConstants.valueEventType) {
|
||||||
this.triggerEventCallback(eventType);
|
setTimeout(() => {
|
||||||
|
this.triggerEventCallback(eventType);
|
||||||
|
}, DatabaseConstants.defaultDelayInMilliseconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
return callback;
|
return callback;
|
||||||
|
|||||||
@ -23,6 +23,7 @@ import {
|
|||||||
} from '../../../contexts/DatabaseContext';
|
} from '../../../contexts/DatabaseContext';
|
||||||
import { ResumeProvider } from '../../../contexts/ResumeContext';
|
import { ResumeProvider } from '../../../contexts/ResumeContext';
|
||||||
import { StorageProvider } from '../../../contexts/StorageContext';
|
import { StorageProvider } from '../../../contexts/StorageContext';
|
||||||
|
import Wrapper from '../../../components/shared/Wrapper';
|
||||||
import Builder from '../builder';
|
import Builder from '../builder';
|
||||||
|
|
||||||
describe('Builder', () => {
|
describe('Builder', () => {
|
||||||
@ -60,7 +61,9 @@ describe('Builder', () => {
|
|||||||
<DatabaseProvider>
|
<DatabaseProvider>
|
||||||
<ResumeProvider>
|
<ResumeProvider>
|
||||||
<StorageProvider>
|
<StorageProvider>
|
||||||
<Builder id={resumeId} />
|
<Wrapper>
|
||||||
|
<Builder id={resumeId} />
|
||||||
|
</Wrapper>
|
||||||
</StorageProvider>
|
</StorageProvider>
|
||||||
</ResumeProvider>
|
</ResumeProvider>
|
||||||
</DatabaseProvider>
|
</DatabaseProvider>
|
||||||
@ -212,6 +215,12 @@ describe('Builder', () => {
|
|||||||
await setup(DatabaseConstants.demoStateResume1Id, false, false);
|
await setup(DatabaseConstants.demoStateResume1Id, false, false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await waitForElementToBeRemoved(() =>
|
||||||
|
screen.getByTestId(loadingScreenTestId),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('renders loading screen', () => {
|
it('renders loading screen', () => {
|
||||||
expect(screen.getByTestId(loadingScreenTestId)).toBeInTheDocument();
|
expect(screen.getByTestId(loadingScreenTestId)).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|||||||
@ -20,6 +20,7 @@ import { UserProvider } from '../../../contexts/UserContext';
|
|||||||
import { DatabaseProvider } from '../../../contexts/DatabaseContext';
|
import { DatabaseProvider } from '../../../contexts/DatabaseContext';
|
||||||
import { ResumeProvider } from '../../../contexts/ResumeContext';
|
import { ResumeProvider } from '../../../contexts/ResumeContext';
|
||||||
import { StorageProvider } from '../../../contexts/StorageContext';
|
import { StorageProvider } from '../../../contexts/StorageContext';
|
||||||
|
import Wrapper from '../../../components/shared/Wrapper';
|
||||||
import Dashboard from '../dashboard';
|
import Dashboard from '../dashboard';
|
||||||
|
|
||||||
describe('Dashboard', () => {
|
describe('Dashboard', () => {
|
||||||
@ -46,7 +47,9 @@ describe('Dashboard', () => {
|
|||||||
<DatabaseProvider>
|
<DatabaseProvider>
|
||||||
<ResumeProvider>
|
<ResumeProvider>
|
||||||
<StorageProvider>
|
<StorageProvider>
|
||||||
<Dashboard user={user} />
|
<Wrapper>
|
||||||
|
<Dashboard user={user} />
|
||||||
|
</Wrapper>
|
||||||
</StorageProvider>
|
</StorageProvider>
|
||||||
</ResumeProvider>
|
</ResumeProvider>
|
||||||
</DatabaseProvider>
|
</DatabaseProvider>
|
||||||
@ -67,25 +70,33 @@ describe('Dashboard', () => {
|
|||||||
await setup();
|
await setup();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('document title', () => {
|
it('document title', async () => {
|
||||||
expect(document.title).toEqual('Dashboard | Reactive Resume');
|
await waitFor(() => {
|
||||||
|
expect(document.title).toEqual('Dashboard | Reactive Resume');
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('create resume', () => {
|
it('create resume', async () => {
|
||||||
expect(screen.getByText(/create resume/i)).toBeInTheDocument();
|
await waitFor(() => {
|
||||||
|
expect(screen.getByText(/create resume/i)).toBeInTheDocument();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('preview of user resumes', () => {
|
it('preview of user resumes', async () => {
|
||||||
expect(Object.keys(resumes)).toHaveLength(2);
|
expect(Object.keys(resumes)).toHaveLength(2);
|
||||||
|
|
||||||
expect(Object.values(resumes)[0].user).toEqual(user.uid);
|
expect(Object.values(resumes)[0].user).toEqual(user.uid);
|
||||||
expect(
|
await waitFor(() => {
|
||||||
screen.getByText(Object.values(resumes)[0].name),
|
expect(
|
||||||
).toBeInTheDocument();
|
screen.getByText(Object.values(resumes)[0].name),
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
expect(Object.values(resumes)[1].user).toEqual(user.uid);
|
expect(Object.values(resumes)[1].user).toEqual(user.uid);
|
||||||
expect(
|
await waitFor(() => {
|
||||||
screen.getByText(Object.values(resumes)[1].name),
|
expect(
|
||||||
).toBeInTheDocument();
|
screen.getByText(Object.values(resumes)[1].name),
|
||||||
|
).toBeInTheDocument();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -95,6 +106,10 @@ describe('Dashboard', () => {
|
|||||||
let undeletedResume = null;
|
let undeletedResume = null;
|
||||||
let resumeToDeleteId = null;
|
let resumeToDeleteId = null;
|
||||||
|
|
||||||
|
const waitForDatabaseRemoveFunctionToHaveCompleted = async () => {
|
||||||
|
await waitFor(() => mockDatabaseRemoveFunction.mock.results[0].value);
|
||||||
|
};
|
||||||
|
|
||||||
beforeEach(async () => {
|
beforeEach(async () => {
|
||||||
await setup();
|
await setup();
|
||||||
|
|
||||||
@ -108,9 +123,13 @@ describe('Dashboard', () => {
|
|||||||
'remove',
|
'remove',
|
||||||
);
|
);
|
||||||
|
|
||||||
const resumeToDeleteMenuToggle = screen.getByTestId(
|
let resumeToDeleteMenuToggle = null;
|
||||||
`${resumePreviewMenuToggleDataTestIdPrefix}${resumeToDeleteId}`,
|
await waitFor(() => {
|
||||||
);
|
resumeToDeleteMenuToggle = screen.queryByTestId(
|
||||||
|
`${resumePreviewMenuToggleDataTestIdPrefix}${resumeToDeleteId}`,
|
||||||
|
);
|
||||||
|
return resumeToDeleteMenuToggle ? Promise.resolve() : Promise.reject();
|
||||||
|
});
|
||||||
fireEvent.click(resumeToDeleteMenuToggle);
|
fireEvent.click(resumeToDeleteMenuToggle);
|
||||||
|
|
||||||
const menuItems = screen.getAllByRole('menuitem');
|
const menuItems = screen.getAllByRole('menuitem');
|
||||||
@ -124,26 +143,28 @@ describe('Dashboard', () => {
|
|||||||
fireEvent.click(deleteMenuItem);
|
fireEvent.click(deleteMenuItem);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await waitForDatabaseRemoveFunctionToHaveCompleted();
|
||||||
|
});
|
||||||
|
|
||||||
it('removes it from database and preview', async () => {
|
it('removes it from database and preview', async () => {
|
||||||
await waitFor(() =>
|
await waitFor(() =>
|
||||||
expect(mockDatabaseRemoveFunction).toHaveBeenCalledTimes(1),
|
expect(mockDatabaseRemoveFunction).toHaveBeenCalledTimes(1),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
await waitForDatabaseRemoveFunctionToHaveCompleted();
|
||||||
|
|
||||||
await waitFor(() =>
|
await waitFor(() =>
|
||||||
expect(screen.queryByText(resumeToDelete.name)).toBeNull(),
|
expect(screen.queryByText(resumeToDelete.name)).toBeNull(),
|
||||||
);
|
);
|
||||||
expect(screen.getByText(undeletedResume.name)).toBeInTheDocument();
|
expect(screen.getByText(undeletedResume.name)).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
it('displays notification', async () => {
|
it('displays notification', async () => {
|
||||||
await waitFor(() =>
|
await waitFor(() => {
|
||||||
expect(
|
expect(screen.getByRole('alert')).toBeInTheDocument();
|
||||||
screen.getByText(`${resumeToDelete.name} was deleted successfully`),
|
});
|
||||||
).toBeInTheDocument(),
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
*/
|
|
||||||
|
|
||||||
it('closes menu', () => {
|
it('closes menu', () => {
|
||||||
const menuItems = screen.queryAllByRole('menuitem');
|
const menuItems = screen.queryAllByRole('menuitem');
|
||||||
@ -156,6 +177,12 @@ describe('Dashboard', () => {
|
|||||||
await setup(false);
|
await setup(false);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(async () => {
|
||||||
|
await waitForElementToBeRemoved(() =>
|
||||||
|
screen.getByTestId(loadingScreenTestId),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it('renders loading screen', () => {
|
it('renders loading screen', () => {
|
||||||
expect(screen.getByTestId(loadingScreenTestId)).toBeInTheDocument();
|
expect(screen.getByTestId(loadingScreenTestId)).toBeInTheDocument();
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user