Builder.test: added draft version of test for data update

This commit is contained in:
gianantoniopini
2020-12-17 17:40:54 +01:00
parent 918100c949
commit b3be9e5f50
2 changed files with 70 additions and 50 deletions

View File

@ -125,17 +125,37 @@ const database = () => {
return Promise.resolve();
};
const update = async (value) => {
console.log('update');
console.log(value);
if (resumesPath) {
if (value === null) {
delete __resumesDictionary[databaseLocationId];
} else {
__resumesDictionary[databaseLocationId] = value;
}
}
return Promise.resolve();
};
return {
once,
set,
update,
};
};
const ServerValue = {
TIMESTAMP: Date.now(),
};
return {
__demoResumeId,
__emptyResumeId,
__init,
ref,
ServerValue,
};
};

View File

@ -1,5 +1,12 @@
import React from 'react';
import { act, cleanup, render, screen } from '@testing-library/react';
import {
act,
cleanup,
fireEvent,
render,
screen,
waitFor,
} from '@testing-library/react';
import firebaseMock from 'gatsby-plugin-firebase';
@ -20,31 +27,31 @@ describe('builder', () => {
let resumeId = null;
let resume = null;
describe('with demo resume', () => {
beforeEach(async () => {
resumeId = firebaseMock.database().__demoResumeId;
resume = (
await firebaseMock.database().ref(`resumes/${resumeId}`).once('value')
).val();
beforeEach(async () => {
resumeId = firebaseMock.database().__demoResumeId;
resume = (
await firebaseMock.database().ref(`resumes/${resumeId}`).once('value')
).val();
render(
<UserProvider>
<DatabaseProvider>
<ResumeProvider>
<StorageProvider>
<Builder id={resume.id} />
</StorageProvider>
</ResumeProvider>
</DatabaseProvider>
</UserProvider>,
);
render(
<UserProvider>
<DatabaseProvider>
<ResumeProvider>
<StorageProvider>
<Builder id={resume.id} />
</StorageProvider>
</ResumeProvider>
</DatabaseProvider>
</UserProvider>,
);
await act(async () => {
await firebaseMock.auth().signInAnonymously();
});
await act(async () => {
await firebaseMock.auth().signInAnonymously();
});
});
it('renders first and last name', async () => {
describe('renders', () => {
it('first and last name', async () => {
expect(
screen.getByLabelText(new RegExp('first name', 'i')),
).toHaveDisplayValue(resume.profile.firstName);
@ -60,37 +67,30 @@ describe('builder', () => {
});
});
describe('with empty resume', () => {
beforeEach(async () => {
resumeId = firebaseMock.database().__emptyResumeId;
describe('updates data', () => {
it('when input value is changed', async () => {
const input = screen.getByLabelText(new RegExp('address line 1', 'i'));
const newInputValue = 'test street 123';
const spy = jest.spyOn(
firebaseMock.database().ref(`resumes/${resumeId}`),
'update',
);
fireEvent.change(input, { target: { value: newInputValue } });
expect(input.value).toBe(newInputValue);
await waitFor(() => expect(spy).toHaveBeenCalledTimes(1), {
timeout: 4000,
});
//const promise = spy.mock.results[0].value;
//await spy();
//expect(spy).toHaveBeenCalledTimes(1);
resume = (
await firebaseMock.database().ref(`resumes/${resumeId}`).once('value')
).val();
render(
<UserProvider>
<DatabaseProvider>
<ResumeProvider>
<StorageProvider>
<Builder id={resume.id} />
</StorageProvider>
</ResumeProvider>
</DatabaseProvider>
</UserProvider>,
);
await act(async () => {
await firebaseMock.auth().signInAnonymously();
});
});
it('renders empty first and last name', async () => {
expect(
screen.getByLabelText(new RegExp('first name', 'i')),
).not.toHaveDisplayValue();
expect(
screen.getByLabelText(new RegExp('last name', 'i')),
).not.toHaveDisplayValue();
expect(resume.profile.address.line1).toBe(newInputValue);
});
});
});