Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
4c3acea
api and mongo linked
ljn16 Apr 9, 2024
7efb5b7
added jest config files and tests
ljn16 Apr 10, 2024
903ce1a
configed jest, and added tests
ljn16 Apr 10, 2024
dccebaa
Merge pull request #1 from Cat-Snake-Inc/feature/backend
sfryan95 Apr 10, 2024
f467754
added comprehensive backend testing for searchArray
ljn16 Apr 10, 2024
14391a1
Merge pull request #2 from Cat-Snake-Inc/feature/backend
sfryan95 Apr 10, 2024
083207d
fixed frontend tests
elsong86 Apr 10, 2024
fe0527d
Co-authored-by: stephenhyang <[email protected]>
elsong86 Apr 10, 2024
c6d26c8
Merge pull request #3 from Cat-Snake-Inc/ellis
ljn16 Apr 10, 2024
d403353
added testing for mongodb create receipt document middleware
sfryan95 Apr 10, 2024
aec0213
Merge pull request #4 from Cat-Snake-Inc/feature/schema-dbTests
chrisr0892 Apr 10, 2024
86bbd36
created login and signup components
elsong86 Apr 10, 2024
8b37a3a
Co-authored-by: stephenhyang <[email protected]>
elsong86 Apr 10, 2024
ee0a296
Merge pull request #5 from Cat-Snake-Inc/ellis
stephenhyang Apr 10, 2024
fbe6a31
added middleware functions, servers routes for user
chrisr0892 Apr 10, 2024
a72915a
Co-authored-by: Logan Nelsen <[email protected]>
chrisr0892 Apr 10, 2024
886cceb
added user middleware and server routes
chrisr0892 Apr 10, 2024
0815212
Merge pull request #6 from Cat-Snake-Inc/feature/middleware
sfryan95 Apr 10, 2024
e09f94c
remove dontev, change routes in App.jsx
chrisr0892 Apr 11, 2024
92d6a35
Merge branch 'dev' into feature/middleware
chrisr0892 Apr 11, 2024
08dce03
worked on signup page and styling
stephenhyang Apr 11, 2024
be27978
Merge pull request #7 from Cat-Snake-Inc/feature/middleware
sfryan95 Apr 11, 2024
7d6e893
more changes to signup and signup styling
stephenhyang Apr 11, 2024
6706db9
Merge branch 'dev' into stephenfeature
stephenhyang Apr 11, 2024
d310491
Merge pull request #8 from Cat-Snake-Inc/stephenfeature
ljn16 Apr 11, 2024
cbcd210
login fixed
elsong86 Apr 11, 2024
4c10e02
authentication, login refinement
ljn16 Apr 11, 2024
80a8c8d
added db funtionallity
ljn16 Apr 11, 2024
d7fcd65
updated UI, functionalities, added profile page
stephenhyang Apr 11, 2024
1eb3e46
signup, login, profile updates
stephenhyang Apr 11, 2024
d2b0f71
Merge pull request #9 from Cat-Snake-Inc/stephenfeature
stephenhyang Apr 11, 2024
e6f059b
switched OCR API reworked routes, controllers, and schemas to accomod…
sfryan95 Apr 11, 2024
72530a7
Co-authored-by: chrisr0892 <[email protected]>
sfryan95 Apr 11, 2024
4a2d405
reworked middleware chain to work with new API
sfryan95 Apr 11, 2024
4ff10f4
Merge pull request #10 from Cat-Snake-Inc/feature/api_switch
ljn16 Apr 12, 2024
fb1b897
added and styled profile button on mainpage
stephenhyang Apr 12, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VITE_TAGGUN_API_KEY=65d90c50f6b911ee9433edbb2578dfab
VITE_SECRET_KEY=Bs2LMXC0BCli2QxblUagHCbpryioVow2
2 changes: 1 addition & 1 deletion .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module.exports = {
root: true,
env: { browser: true, es2020: true },
env: { browser: true, es2020: true, jest: true },
extends: [
'eslint:recommended',
'plugin:react/recommended',
Expand Down
3 changes: 3 additions & 0 deletions __mocks__/fileMock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// __mocks__/fileMock.js
const path = require('path');
module.exports = path.join(__dirname, 'fileMock.js');
1 change: 1 addition & 0 deletions __mocks__/styleMock.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = {};
150 changes: 150 additions & 0 deletions __tests__/react.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
jest.mock('@ant-design/plots', () => ({
Pie: () => null,
}));
import React from 'react'
import App from '../src/App';
import Home from '../src/components/Home';
import TitleHeader from '../src/components/TitleHeader';
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
import '@testing-library/jest-dom';
import userEvent from '@testing-library/user-event';
import UploadButton from '../src/components/UploadButton';
import Footer from '../src/components/Footer';
import Instructions from '../src/components/Instructions';
import Pie from '../src/components/Pie';
import DragAndDrop from '../src/components/DragAndDrop';
import ProgressBar from '../src/components/ProgressBar';
import axios from 'axios';

// Mock axios post request
jest.mock('axios');

describe('Testing React components', () => {

xdescribe('App', () => {
it('renders the App component', () => {
render(<App />);
})
});

xdescribe('Title Header', () => {

it('renders title header', () => {
const { getByText } = render(<TitleHeader />);
const titleElement = getByText('AxoScan')
expect(titleElement).toBeInTheDocument();


});
it ('renders correct styles for title header', () => {
const { getByTestId } = render(<TitleHeader />);
const cardElement = getByTestId('title-header-card');
// console.log(titleElement);
expect(cardElement).toHaveStyle(`
color: white;
backgroundColor: '#272727',
border: 'none',
width: '100%',
height: '80px',
borderRadius: 0,
display: 'flex',
justifyContent: 'center',
alignItems: 'center',
`);
});
});

xdescribe('UploadButton', () => {

it('renders correctly', () => {
const mockSetHasUploaded = jest.fn();
render(<UploadButton setHasUploaded={mockSetHasUploaded} />);
expect(screen.getByText(/Back to Upload/i)).toBeInTheDocument();
expect(screen.getByRole('button')).toHaveStyle('marginBottom: 50px');
});

it('calls setHasUploaded with false on click', () => {
const mockSetHasUploaded = jest.fn();
render(<UploadButton setHasUploaded={mockSetHasUploaded} />);
fireEvent.click(screen.getByText(/Back to Upload/i));
expect(mockSetHasUploaded).toHaveBeenCalledWith(false);
});
})

xdescribe('Footer', ()=> {

it('renders correctly', () => {
render(<Footer />);
expect(screen.getByText('AxoGroup')).toBeInTheDocument();
expect(screen.getByText('Design Team:')).toBeInTheDocument();
});
it('renders the correct number of team member links', () => {
render(<Footer />);
const links = screen.getAllByRole('link');
// Assuming there are 5 team members as per the given names array
expect(links).toHaveLength(5);
});
})

xdescribe('Instructions', () => {
it('renders Instructions component', () => {
render(<Instructions />);
expect(screen.getByText('Effortless Upload Guide')).toBeInTheDocument();
expect(screen.getByText('Welcome to our streamlined upload process! To ensure your files are uploaded seamlessly, simply drag and drop them into the area below.')).toBeInTheDocument();
});
it('renders proper styling', () => {
render(<Instructions />);
const cardElement = screen.getByText('Effortless Upload Guide');
expect(cardElement).toHaveStyle(`
width: 400,
height: 200,
marginBottom: 50,
backgroundColor: '#272727',
border: 'none',
color: 'rgba(255, 255, 255, 0.45)'
`)
});
});

xdescribe('Progress Bar', ()=> {
test('renders without crashing', () => {
render(<ProgressBar percent={50} />);
const progressElement = screen.getByRole('progressbar');
expect(progressElement).toBeInTheDocument();
});
test('displays correct percent', () => {
const testPercent = 75;
render(<ProgressBar percent={testPercent} />);
const progressElement = screen.getByRole('progressbar');
expect(progressElement).toHaveAttribute('aria-valuenow', String(testPercent));
});

});



describe('DragAndDrop', () => {
it('renders DragAndDrop component', () => {
render(<DragAndDrop />);
expect(screen.getByText('Click or drag file to this area to upload')).toBeInTheDocument();
});
it('handles file upload', async () => {
const setHasUploaded = jest.fn();
const setLineItems = jest.fn();
const { getByTestId } = render(<DragAndDrop setHasUploaded={setHasUploaded} setLineItems={setLineItems} />);

const file = new File(['test'], 'test.txt', { type: 'text/plain' });

fireEvent.drop(getByTestId('drag-and-drop'), {
dataTransfer: { files: [file] },
});

axios.post.mockResolvedValue({ data: {} });

await waitFor(() => expect(axios.post).toHaveBeenCalled());

expect(setHasUploaded).toHaveBeenCalledWith(true);
expect(setLineItems).toHaveBeenCalled();
});
});
});
57 changes: 57 additions & 0 deletions __tests__/receiptMongo.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// import { MongoClient } from 'mongodb';
import mongoose from 'mongoose';
import { Receipt } from '../server/models/models.js';
import receiptController from '../server/controllers/receiptControllers.js';
const mongoUri = 'mongodb+srv://loganjnelsen:[email protected]/?retryWrites=true&w=majority&appName=AxoScan'; //temp?

jest.mock('node-fetch', () => jest.fn());
jest.mock('form-data', () => jest.fn());
describe('Receipt', () => {
let connection;
let db;

beforeEach(async () => {
await Receipt.deleteMany({});
});
// console.log('globalThis.__MONGO_URI__', globalThis.__MONGO_URI__);
// console.log('globalThis.__MONGO_DB_NAME__', globalThis.__MONGO_DB_NAME__);
beforeAll(async () => {
// connection = await MongoClient.connect(globalThis.__MONGO_URI__, {
connection = await mongoose.connect(mongoUri, {
dbName: 'axoScan',
});
});

afterAll(async () => {
await mongoose.connection.close();
});
//-----
test('should insert a new receipt into collection', async () => {
// const receipts = db.collection('receipts');
// const mockReceipt = {
// fileName: 'some-Receipt-name',
// receipt: [
// { type: 'potatoes', value: 5 },
// { type: 'tomatoes', value: 6 },
// ],
// };
const res = {
locals: {
fileName: 'some-Receipt-name',
array: [
{ type: 'potatoes', value: 5 },
{ type: 'tomatoes', value: 6 },
],
},
};
const next = jest.fn();
await receiptController.saveReceipt({}, res, next);
// await Receipt.create(mockReceipt);

const insertedReceipt = await Receipt.findOne({ fileName: 'some-Receipt-name' });
console.log(insertedReceipt);
expect(insertedReceipt).not.toBeNull();
expect(insertedReceipt.fileName).toEqual(res.locals.fileName);
expect(insertedReceipt.receipt).toEqual(expect.arrayContaining([expect.objectContaining({ type: 'potatoes', value: 5 }), expect.objectContaining({ type: 'tomatoes', value: 6 })]));
});
});
Loading