From b3be9e5f500571037e83d660a9ecd483516a9a1e Mon Sep 17 00:00:00 2001
From: gianantoniopini <63844628+gianantoniopini@users.noreply.github.com>
Date: Thu, 17 Dec 2020 17:40:54 +0100
Subject: [PATCH] Builder.test: added draft version of test for data update
---
__mocks__/gatsby-plugin-firebase.js | 20 +++++
src/pages/app/__tests__/builder.test.js | 100 ++++++++++++------------
2 files changed, 70 insertions(+), 50 deletions(-)
diff --git a/__mocks__/gatsby-plugin-firebase.js b/__mocks__/gatsby-plugin-firebase.js
index 226d95dc..fc423c6f 100644
--- a/__mocks__/gatsby-plugin-firebase.js
+++ b/__mocks__/gatsby-plugin-firebase.js
@@ -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,
};
};
diff --git a/src/pages/app/__tests__/builder.test.js b/src/pages/app/__tests__/builder.test.js
index f09a052b..56fea655 100644
--- a/src/pages/app/__tests__/builder.test.js
+++ b/src/pages/app/__tests__/builder.test.js
@@ -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(
-
-
-
-
-
-
-
-
- ,
- );
+ render(
+
+
+
+
+
+
+
+
+ ,
+ );
- 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(
-
-
-
-
-
-
-
-
- ,
- );
-
- 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);
});
});
});