Skip to content

Commit

Permalink
ISSUE #5173 - add/fix settings tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Amantini1997 committed Sep 27, 2024
1 parent 6ca5024 commit 775d978
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import * as faker from 'faker';
import { CreateDrawingRevisionBody, IDrawingRevision } from '@/v5/store/drawings/revisions/drawingRevisions.types';
import { CalibrationStatus } from '@/v5/store/drawings/drawings.types';
import { MODEL_UNITS } from '@/v5/ui/routes/dashboard/projects/models.helpers';
import { Vector1D } from '@/v5/ui/routes/dashboard/projects/calibration/calibration.types';

export const getFakeCalibrationStatus = () => faker.random.arrayElement([CalibrationStatus.CALIBRATED, CalibrationStatus.UNCONFIRMED, CalibrationStatus.UNCALIBRATED, CalibrationStatus.EMPTY]);

Expand All @@ -36,8 +37,18 @@ export const drawingRevisionsMockFactory = (overrides?: Partial<IDrawingRevision
...overrides,
});

export const mockCreateRevisionBody = (overrides?: Partial<CreateDrawingRevisionBody>): CreateDrawingRevisionBody => {
export const getFakeVerticalRange = () => {
const topExtent = faker.datatype.number();
return [faker.datatype.number(topExtent), topExtent] as Vector1D;
};

export const getRandomUnits = () => faker.random.arrayElement(MODEL_UNITS).value;
export const getFakeDrawingSettingsCalibration = () => ({
verticalRange: getFakeVerticalRange(),
units: getRandomUnits(),
});

export const mockCreateRevisionBody = (overrides?: Partial<CreateDrawingRevisionBody>): CreateDrawingRevisionBody => {
return {
file: new File(['file'], 'filename.dwg'),
drawingId: faker.datatype.uuid(),
Expand All @@ -46,9 +57,7 @@ export const mockCreateRevisionBody = (overrides?: Partial<CreateDrawingRevision
drawingDesc: faker.random.words(3),
drawingNumber: faker.random.word(),
description: faker.random.word(),
drawingBottomExtent: faker.datatype.number(topExtent),
drawingTopExtent: topExtent,
drawingUnits: faker.random.arrayElement(MODEL_UNITS).value,
calibration: getFakeDrawingSettingsCalibration(),
name: faker.random.word(),
revCode: faker.random.word(),
statusCode: faker.random.word(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,7 @@ describe('Drawing Revisions: sagas', () => {
number: mockBody.drawingNumber,
type: mockBody.drawingType,
desc: mockBody.drawingDesc,
bottomExtent: mockBody.drawingBottomExtent,
topExtent: mockBody.drawingTopExtent,
units: mockBody.drawingUnits,
calibration: mockBody.calibration,
};

const spy = spyOnAxiosApiCallWithFile(api, 'post');
Expand Down
25 changes: 17 additions & 8 deletions frontend/test/drawings/drawings.fixtures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
*/

import * as faker from 'faker';
import { IDrawing, DrawingStats, Calibration } from '@/v5/store/drawings/drawings.types';
import { IDrawing, DrawingStats, Calibration, DrawingSettings } from '@/v5/store/drawings/drawings.types';
import { Role } from '@/v5/store/currentUser/currentUser.types';
import { UploadStatus } from '@/v5/store/containers/containers.types';
import { getFakeCalibrationStatus } from './drawingRevisions/drawingRevisions.fixtures';
import { getFakeCalibrationStatus, getFakeDrawingSettingsCalibration, getFakeVerticalRange, getRandomUnits } from './drawingRevisions/drawingRevisions.fixtures';
import { EMPTY_CALIBRATION } from '@/v5/ui/routes/dashboard/projects/calibration/calibration.constants';
import { Vector } from '@/v5/ui/routes/dashboard/projects/calibration/calibration.types';

Expand Down Expand Up @@ -55,14 +55,23 @@ export const prepareMockStats = (overrides?: Partial<DrawingStats>): DrawingStat
...overrides,
});

const getFakeCoordinate = (dimensions: number): any => Array(dimensions).map(() => faker.datatype.number());
const getFakeCalibrationArray = (dimensions: number): Vector<any> => [getFakeCoordinate(dimensions), getFakeCoordinate(dimensions)];
export const getFakeCoordinate = (dimensions: number): any => Array(dimensions).map(() => faker.datatype.number());
export const getFakeCalibrationArray = (dimensions: number): Vector<any> => [getFakeCoordinate(dimensions), getFakeCoordinate(dimensions)];
export const prepareMockCalibration = (overrides?: Partial<Calibration>): Calibration => ({
horizontal: {
drawing: getFakeCalibrationArray(2),
model: getFakeCalibrationArray(3),
},
verticalRange: getFakeCoordinate(3),
units: faker.random.arrayElement(['mm', 'cm', 'dm', 'm', 'ft']),
...overrides?.horizontal,
})
verticalRange: getFakeVerticalRange(),
units: getRandomUnits(),
...overrides,
});

export const prepareMockSettings = (overrides?: Partial<DrawingSettings>): DrawingSettings => ({
calibration: getFakeDrawingSettingsCalibration(),
desc: faker.random.words(3),
type: faker.random.word(),
number: faker.random.alphaNumeric(),
name: faker.random.word(),
...overrides,
});
30 changes: 29 additions & 1 deletion frontend/test/drawings/drawings.sagas.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ import { DrawingsActions } from '@/v5/store/drawings/drawings.redux';
import { mockServer } from '../../internals/testing/mockServer';
import { pick } from 'lodash';
import { fullDrawing } from '@/v5/store/drawings/drawings.helpers';
import { drawingMockFactory, prepareMockStats } from './drawings.fixtures';
import { drawingMockFactory, prepareMockSettings, prepareMockStats } from './drawings.fixtures';
import { createTestStore, WaitForActions } from '../test.helpers';
import { ProjectsActions } from '@/v5/store/projects/projects.redux';
import { selectDrawingById, selectDrawings } from '@/v5/store/drawings/drawings.selectors';
import { DialogsTypes } from '@/v5/store/dialogs/dialogs.redux';
import { getWaitablePromise } from '@/v5/helpers/async.helpers';
import { NewDrawing } from '@/v5/store/drawings/drawings.types';
import { DEFAULT_SETTINGS_CALIBRATION } from '@/v5/ui/routes/dashboard/projects/calibration/calibration.helpers';

describe('Drawings: sagas', () => {
const teamspace = 'teamspace';
Expand Down Expand Up @@ -114,6 +115,7 @@ describe('Drawings: sagas', () => {

describe('fetchDrawings', () => {
const stats = prepareMockStats();
const settings = prepareMockSettings();

it('should fetch drawings data', async () => {
const mockDrawingBaseResponse = pick(mockDrawing, ['_id', 'name', 'role', 'isFavourite']);
Expand Down Expand Up @@ -167,6 +169,31 @@ describe('Drawings: sagas', () => {
const drawingsInStore = selectDrawings(getState());
expect(drawingsInStore).toEqual([fullDrawing(mockDrawing)]);
})

it('should fetch settings', async () => {
populateStore();
mockServer
.get(`/teamspaces/${teamspace}/projects/${projectId}/drawings/${drawingId}`)
.reply(200, settings);

await waitForActions(() => {
dispatch(DrawingsActions.fetchDrawingSettings(teamspace, projectId, drawingId));
}, [DrawingsActions.updateDrawingSuccess(projectId, drawingId, settings)]);
})

it('should call fetch drawing settings endpoint with 401', async () => {
populateStore();
mockServer
.get(`/teamspaces/${teamspace}/projects/${projectId}/drawings/${drawingId}`)
.reply(401);

await waitForActions(() => {
dispatch(DrawingsActions.fetchDrawingSettings(teamspace, projectId, drawingId));
}, [DialogsTypes.OPEN]);

const drawingsInStore = selectDrawings(getState());
expect(drawingsInStore).toEqual([fullDrawing(mockDrawing)]);
})
})

describe('createDrawing', () => {
Expand All @@ -175,6 +202,7 @@ describe('Drawings: sagas', () => {
type: 'Other',
number: 'number',
desc: 'desc',
calibration: DEFAULT_SETTINGS_CALIBRATION,
};
it('should call createDrawing endpoint', async () => {
mockServer
Expand Down

0 comments on commit 775d978

Please sign in to comment.