fix: don't enforce min max when number value is empty (#2792)

This commit is contained in:
Erez Rokah
2019-10-24 08:38:57 +03:00
committed by GitHub
parent 8e4ade0d13
commit 6b11367313
2 changed files with 112 additions and 35 deletions

View File

@ -4,6 +4,7 @@ import { render, fireEvent } from 'react-testing-library';
import 'react-testing-library/cleanup-after-each';
import 'jest-dom/extend-expect';
import { NetlifyCmsWidgetNumber } from '../';
import { validateMinMax } from '../NumberControl';
const NumberControl = NetlifyCmsWidgetNumber.controlComponent;
@ -142,4 +143,73 @@ describe('Number widget', () => {
expect(input.value).toBe('0');
});
describe('validateMinMax', () => {
const field = { get: jest.fn() };
field.get.mockReturnValue('label');
const t = jest.fn();
t.mockImplementation((_, params) => params);
beforeEach(() => {
jest.clearAllMocks();
});
it('should return error when min max are defined and value is out of range', () => {
const error = validateMinMax(5, 0, 1, field, t);
const expectedMessage = {
fieldLabel: 'label',
minValue: 0,
maxValue: 1,
};
expect(error).not.toBeNull();
expect(error).toEqual({
type: 'RANGE',
message: expectedMessage,
});
expect(t).toHaveBeenCalledTimes(1);
expect(t).toHaveBeenCalledWith('editor.editorControlPane.widget.range', expectedMessage);
});
it('should return error when min is defined and value is out of range', () => {
const error = validateMinMax(5, 6, false, field, t);
const expectedMessage = {
fieldLabel: 'label',
minValue: 6,
};
expect(error).not.toBeNull();
expect(error).toEqual({
type: 'RANGE',
message: expectedMessage,
});
expect(t).toHaveBeenCalledTimes(1);
expect(t).toHaveBeenCalledWith('editor.editorControlPane.widget.min', expectedMessage);
});
it('should return error when max is defined and value is out of range', () => {
const error = validateMinMax(5, false, 3, field, t);
const expectedMessage = {
fieldLabel: 'label',
maxValue: 3,
};
expect(error).not.toBeNull();
expect(error).toEqual({
type: 'RANGE',
message: expectedMessage,
});
expect(t).toHaveBeenCalledTimes(1);
expect(t).toHaveBeenCalledWith('editor.editorControlPane.widget.max', expectedMessage);
});
it('should not return error when min max are defined and value is empty', () => {
const error = validateMinMax('', 0, 1, field, t);
expect(error).toBeNull();
});
it('should not return error when min max are defined and value is in range', () => {
const error = validateMinMax(0, -1, 1, field, t);
expect(error).toBeNull();
});
});
});