Skip to content

Commit

Permalink
test(controller): add test for --dry-run
Browse files Browse the repository at this point in the history
  • Loading branch information
zaldih committed May 26, 2024
1 parent ad2c30e commit fbb7ea5
Showing 1 changed file with 64 additions and 10 deletions.
74 changes: 64 additions & 10 deletions __tests__/controller.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
import { jest } from '@jest/globals';
import { StartParameters } from '../src/models/start-parameters.model.js';
import { Subject } from 'rxjs';
import { IFolder } from '../src/interfaces/index.js';

const resultsUiDeleteMock$ = new Subject<IFolder>();

jest.mock('../src/dirname.js', () => {
return {};
Expand All @@ -9,11 +13,12 @@ jest.unstable_mockModule('../src/ui/components/header/header.ui.js', () => ({
HeaderUi: jest.fn(),
}));
jest.unstable_mockModule('../src/ui/components/header/stats.ui.js', () => ({
StatsUi: jest.fn(),
StatsUi: jest.fn(() => ({ render: jest.fn() })),
}));
jest.unstable_mockModule('../src/ui/components/header/status.ui.js', () => ({
StatusUi: jest.fn(() => ({
start: jest.fn(),
render: jest.fn(),
})),
}));
jest.unstable_mockModule('../src/ui/components/general.ui.js', () => ({
Expand All @@ -24,9 +29,10 @@ jest.unstable_mockModule('../src/ui/components/help.ui.js', () => ({
}));
jest.unstable_mockModule('../src/ui/components/results.ui.js', () => ({
ResultsUi: jest.fn(() => ({
delete$: { subscribe: jest.fn() },
delete$: resultsUiDeleteMock$,
showErrors$: { subscribe: jest.fn() },
openFolder$: { subscribe: jest.fn() },
render: jest.fn(),
})),
}));
jest.unstable_mockModule('../src/ui/components/logs.ui.js', () => ({
Expand All @@ -47,9 +53,20 @@ class Controller extends ControllerConstructor {}

describe('Controller test', () => {
let controller;

const filesServiceDeleteMock = jest
.fn<() => Promise<boolean>>()
.mockResolvedValue(true);
const filesServiceFakeDeleteMock = jest
.fn<() => Promise<boolean>>()
.mockResolvedValue(true);

const linuxFilesServiceMock: any = {
getFileContent: jest.fn().mockReturnValue('{}'),
isValidRootFolder: jest.fn().mockReturnValue('true'),
isSafeToDelete: jest.fn().mockReturnValue('true'),
deleteDir: filesServiceDeleteMock,
fakeDeleteDir: filesServiceFakeDeleteMock,
};
const spinnerServiceMock: any = jest.fn();
const UpdateServiceMock: any = jest.fn();
Expand Down Expand Up @@ -148,6 +165,7 @@ describe('Controller test', () => {

afterEach(() => {
jest.spyOn(process, 'exit').mockReset();
mockParameters({});
});

it('#showHelp should called if --help flag is present and exit', () => {
Expand All @@ -167,14 +185,6 @@ describe('Controller test', () => {
expect(exitSpy).toHaveBeenCalledTimes(1);
});

it('#showProgramVersion should called if --delete-all flag is present and exit', () => {
mockParameters({ 'delete-all': true });
const functionSpy = spyMethod('showObsoleteMessage');
expect(() => controller.init()).toThrow();
expect(functionSpy).toHaveBeenCalledTimes(1);
expect(exitSpy).toHaveBeenCalledTimes(1);
});

it('#checkVersionn should not be called if --no-check-updates is given', () => {
mockParameters({ 'no-check-updates': true });
const functionSpy = spyMethod('checkVersion');
Expand All @@ -193,5 +203,49 @@ describe('Controller test', () => {

// TODO test that check sortBy property is changed
});

describe('--dry-run', () => {
let testFolder: IFolder;

beforeEach(() => {
testFolder = {
path: '/my/path',
size: 0,
modificationTime: 0,
isDangerous: false,
status: 'live',
};
jest.clearAllMocks();
});

it('Should call normal deleteDir function when no --dry-run is included', () => {
controller.init();

expect(filesServiceDeleteMock).toHaveBeenCalledTimes(0);
expect(filesServiceFakeDeleteMock).toHaveBeenCalledTimes(0);

resultsUiDeleteMock$.next(testFolder);

expect(filesServiceFakeDeleteMock).toHaveBeenCalledTimes(0);
expect(filesServiceDeleteMock).toHaveBeenCalledTimes(1);
expect(filesServiceDeleteMock).toHaveBeenCalledWith(testFolder.path);
});

it('Should call fake deleteDir function instead of deleteDir', () => {
mockParameters({ 'dry-run': true });
controller.init();

expect(filesServiceDeleteMock).toHaveBeenCalledTimes(0);
expect(filesServiceFakeDeleteMock).toHaveBeenCalledTimes(0);

resultsUiDeleteMock$.next(testFolder);

expect(filesServiceDeleteMock).toHaveBeenCalledTimes(0);
expect(filesServiceFakeDeleteMock).toHaveBeenCalledTimes(1);
expect(filesServiceFakeDeleteMock).toHaveBeenCalledWith(
testFolder.path,
);
});
});
});
});

0 comments on commit fbb7ea5

Please sign in to comment.