Generated component unittests.
This commit is contained in:
parent
fb68beb1b3
commit
76fe4eb34a
23
components/__tests__/AreaInput-test.tsx
Normal file
23
components/__tests__/AreaInput-test.tsx
Normal file
@ -0,0 +1,23 @@
|
||||
import React from 'react';
|
||||
import { render, fireEvent } from '@testing-library/react-native';
|
||||
import { AreaInput } from '../AreaInput';
|
||||
|
||||
describe('AreaInput', () => {
|
||||
it('renders correctly', () => {
|
||||
const { getByPlaceholderText } = render(<AreaInput units="foot" />);
|
||||
const lengthInput = getByPlaceholderText('Length');
|
||||
const widthInput = getByPlaceholderText('Width');
|
||||
expect(lengthInput).toBeTruthy();
|
||||
expect(widthInput).toBeTruthy();
|
||||
});
|
||||
|
||||
it('calls onValueSet when a value is entered', () => {
|
||||
const onValueSetMock = jest.fn();
|
||||
const { getByPlaceholderText } = render(
|
||||
<AreaInput units="foot" onValueSet={onValueSetMock} />
|
||||
);
|
||||
const lengthInput = getByPlaceholderText('Length');
|
||||
fireEvent.changeText(lengthInput, '10');
|
||||
expect(onValueSetMock).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
18
components/__tests__/MeasurementInput-test.tsx
Normal file
18
components/__tests__/MeasurementInput-test.tsx
Normal file
@ -0,0 +1,18 @@
|
||||
import { render, fireEvent } from '@testing-library/react-native';
|
||||
import { MeasurementInput } from '../MeasurementInput';
|
||||
|
||||
describe('MeasurementInput', () => {
|
||||
it('renders correctly', () => {
|
||||
const { getByPlaceholderText } = render(<MeasurementInput units="foot" defaultValue={10} />);
|
||||
const input = getByPlaceholderText('Enter measurement');
|
||||
expect(input).toBeTruthy();
|
||||
});
|
||||
|
||||
it('calls onValueSet when value is changed', () => {
|
||||
const mockOnValueSet = jest.fn();
|
||||
const { getByPlaceholderText } = render(<MeasurementInput units="foot" defaultValue={10} onValueSet={mockOnValueSet} />);
|
||||
const input = getByPlaceholderText('Enter measurement');
|
||||
fireEvent.changeText(input, '20');
|
||||
expect(mockOnValueSet).toHaveBeenCalledWith({ l: 20, u: 'foot' });
|
||||
});
|
||||
});
|
42
components/__tests__/ProductCalculatorSelector-test.tsx
Normal file
42
components/__tests__/ProductCalculatorSelector-test.tsx
Normal file
@ -0,0 +1,42 @@
|
||||
import React from 'react';
|
||||
import { render, fireEvent } from '@testing-library/react-native';
|
||||
import { Provider } from 'react-redux';
|
||||
import { store } from '@/app/store';
|
||||
import ProductCalculatorSelector from '@/components/ProductCalculatorSelector';
|
||||
|
||||
describe('ProductCalculatorSelector', () => {
|
||||
it('renders correctly', () => {
|
||||
const { getByText } = render(
|
||||
<Provider store={store}>
|
||||
<ProductCalculatorSelector />
|
||||
</Provider>
|
||||
);
|
||||
|
||||
expect(getByText('Please select a product')).toBeTruthy();
|
||||
});
|
||||
|
||||
it('updates price when measurement is set', () => {
|
||||
const { getByTestId, getByText } = render(
|
||||
<Provider store={store}>
|
||||
<ProductCalculatorSelector />
|
||||
</Provider>
|
||||
);
|
||||
|
||||
// Assume there is a product with a priceFor function that returns 100
|
||||
const product = {
|
||||
priceFor: jest.fn().mockReturnValue(100),
|
||||
};
|
||||
|
||||
// Assume there are units for measurement
|
||||
const units = ['cm', 'in'];
|
||||
|
||||
// Assume there is a measurement input
|
||||
const measurementInput = getByTestId('measurement-input');
|
||||
|
||||
// Simulate user input
|
||||
fireEvent.changeText(measurementInput, '10');
|
||||
|
||||
// Check if the price has been updated
|
||||
expect(getByText('Price: 100')).toBeTruthy();
|
||||
});
|
||||
});
|
29
components/__tests__/UnitChooser-test.tsx
Normal file
29
components/__tests__/UnitChooser-test.tsx
Normal file
@ -0,0 +1,29 @@
|
||||
import React from 'react';
|
||||
import { render, fireEvent } from '@testing-library/react-native';
|
||||
import UnitChooser from "../UnitChooser";
|
||||
import { Length } from 'safe-units';
|
||||
|
||||
describe('UnitChooser', () => {
|
||||
const mockOnChoicePressed = jest.fn();
|
||||
const choices = ['foot', 'inch'] as Length [];
|
||||
|
||||
it('renders correctly', () => {
|
||||
const { getByText } = render(
|
||||
<UnitChooser choices={choices} onChoicePressed={mockOnChoicePressed} />
|
||||
);
|
||||
|
||||
choices.forEach(choice => {
|
||||
expect(getByText(choice)).toBeTruthy();
|
||||
});
|
||||
});
|
||||
|
||||
it('calls onChoicePressed when a button is pressed', () => {
|
||||
const { getByText } = render(
|
||||
<UnitChooser choices={choices} onChoicePressed={mockOnChoicePressed} />
|
||||
);
|
||||
|
||||
fireEvent.press(getByText(choices[0]));
|
||||
|
||||
expect(mockOnChoicePressed).toHaveBeenCalledWith(choices[0]);
|
||||
});
|
||||
});
|
Loading…
Reference in New Issue
Block a user