diff --git a/.jest/setEnvVars.js b/.jest/setEnvVars.js
new file mode 100644
index 0000000..e227cea
--- /dev/null
+++ b/.jest/setEnvVars.js
@@ -0,0 +1,2 @@
+process.env.PUBLIC_CLOUD_NAME='testCloudName';
+process.env.PUBLIC_FOLDER_NAME='testFolderName';
\ No newline at end of file
diff --git a/__tests__/Home.test.js b/__tests__/Home.test.js
new file mode 100644
index 0000000..2c2c7b3
--- /dev/null
+++ b/__tests__/Home.test.js
@@ -0,0 +1,8 @@
+import { render, screen } from '@testing-library/react';
+import HomePage from '../pages';
+
+describe('Index Page ', () => {
+ it('should render', () => {
+ render();
+ });
+});
diff --git a/__tests__/Nav.test.js b/__tests__/Nav.test.js
new file mode 100644
index 0000000..956ee1b
--- /dev/null
+++ b/__tests__/Nav.test.js
@@ -0,0 +1,15 @@
+import { render, screen } from '@testing-library/react';
+import Nav from '../components/Nav';
+
+const useRouter = jest.spyOn(require('next/router'), 'useRouter');
+
+describe('', () => {
+ it('Renders nav correctly and matches snapshot', () => {
+ const router = { pathname: '/' };
+ useRouter.mockReturnValue(router);
+ const { container, debug } = render();
+ expect(container).toMatchSnapshot();
+ const link = screen.getByText('RSVP');
+ expect(link).toHaveAttribute('href', '/rsvp');
+ });
+});
diff --git a/__tests__/__snapshots__/Nav.test.js.snap b/__tests__/__snapshots__/Nav.test.js.snap
new file mode 100644
index 0000000..befd625
--- /dev/null
+++ b/__tests__/__snapshots__/Nav.test.js.snap
@@ -0,0 +1,46 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[` Renders nav correctly and matches snapshot 1`] = `
+
+`;
diff --git a/__tests__/buildBase64Data.test.js b/__tests__/buildBase64Data.test.js
new file mode 100644
index 0000000..e7a5b99
--- /dev/null
+++ b/__tests__/buildBase64Data.test.js
@@ -0,0 +1,22 @@
+import buildBase64Data from '../utils/buildBase64Data';
+
+describe('build base 64 function', () => {
+ const imageName = 'https://picsum.photos/1307/880';
+ const alt = 'test alt';
+ it('takes an image name and builds base64 image', async () => {
+ const imageData = await buildBase64Data(false, imageName, alt, {});
+ expect(imageData).toBeDefined();
+ expect(imageData.alt).toEqual(alt);
+ expect(imageData.imageProps).toBeDefined();
+ expect(imageData.imageProps.blurDataURL).toContain(
+ 'data:image/jpeg;base64'
+ );
+ expect(imageData.imageProps.height).toBeGreaterThan(0);
+ expect(imageData.imageProps.width).toBeGreaterThan(0);
+ expect(imageData.imageProps.src).toContain(imageName);
+ });
+
+ it('fails if image not resolved', async () => {
+ expect(await buildBase64Data(false, 'Blah', alt, {})).toEqual({});
+ });
+});
diff --git a/__tests__/index.test.js b/__tests__/index.test.js
new file mode 100644
index 0000000..4580887
--- /dev/null
+++ b/__tests__/index.test.js
@@ -0,0 +1,8 @@
+import { render, screen } from '@testing-library/react';
+import Home from '../pages/index';
+
+describe('Home', () => {
+ it('renders home page', () => {
+ render();
+ });
+});
diff --git a/jest.setup.js b/jest.setup.js
new file mode 100644
index 0000000..d8e5eaf
--- /dev/null
+++ b/jest.setup.js
@@ -0,0 +1,3 @@
+import '@testing-library/jest-dom';
+
+window.alert = console.log;
diff --git a/package.json b/package.json
index 42271ae..b7df406 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,8 @@
"scripts": {
"dev": "NODE_OPTIONS='--inspect' next dev",
"build": "next build",
- "start": "next start"
+ "start": "next start",
+ "test": "NODE_ENV=test jest --watch"
},
"dependencies": {
"@plaiceholder/next": "^2.2.0",
@@ -67,6 +68,15 @@
"react/prop-types": 0
}
},
+ "jest": {
+ "testEnvironment": "jsdom",
+ "setupFiles": [
+ "./.jest/setEnvVars.js"
+ ],
+ "setupFilesAfterEnv": [
+ "./jest.setup.js"
+ ]
+ },
"//": "This is our babel config, I prefer this over a .babelrc file",
"babel": {
"plugins": [
diff --git a/pages/index.js b/pages/index.js
index 34d9600..edf96c8 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -2,7 +2,6 @@ import styled from 'styled-components';
import Head from 'next/head';
import useUser from '../lib/useUser';
import HomeContent from '../components/HomeContent';
-import connectDb from '../utils/db';
import Login from '../components/Login';
import Layout from '../components/Layout';
import buildBase64Data from '../utils/buildBase64Data';