89 lines
4.0 KiB
TypeScript
89 lines
4.0 KiB
TypeScript
import 'mocha';
|
|
import { expect } from 'chai';
|
|
import { ScriptReverter } from '@/presentation/Scripts/ScriptsTree/SelectableTree/Node/Reverter/ScriptReverter';
|
|
import { SelectedScriptStub } from '../../../../../../stubs/SelectedScriptStub';
|
|
import { getScriptNodeId } from '@/presentation/Scripts/ScriptsTree/ScriptNodeParser';
|
|
import { ScriptStub } from '../../../../../../stubs/ScriptStub';
|
|
import { UserSelection } from '@/application/State/Selection/UserSelection';
|
|
import { SelectedScript } from '@/application/State/Selection/SelectedScript';
|
|
import { ApplicationStub } from '../../../../../../stubs/ApplicationStub';
|
|
import { CategoryStub } from '../../../../../../stubs/CategoryStub';
|
|
|
|
describe('ScriptReverter', () => {
|
|
describe('getState', () => {
|
|
it('false when script is not selected', () => {
|
|
// arrange
|
|
const script = new ScriptStub('id');
|
|
const nodeId = getScriptNodeId(script);
|
|
const sut = new ScriptReverter(nodeId);
|
|
// act
|
|
const actual = sut.getState([]);
|
|
// assert
|
|
expect(actual).to.equal(false);
|
|
});
|
|
it('false when script is selected but not reverted', () => {
|
|
// arrange
|
|
const scripts = [ new SelectedScriptStub('id'), new SelectedScriptStub('dummy') ];
|
|
const nodeId = getScriptNodeId(scripts[0].script);
|
|
const sut = new ScriptReverter(nodeId);
|
|
// act
|
|
const actual = sut.getState(scripts);
|
|
// assert
|
|
expect(actual).to.equal(false);
|
|
});
|
|
it('true when script is selected and reverted', () => {
|
|
// arrange
|
|
const scripts = [ new SelectedScriptStub('id', true), new SelectedScriptStub('dummy') ];
|
|
const nodeId = getScriptNodeId(scripts[0].script);
|
|
const sut = new ScriptReverter(nodeId);
|
|
// act
|
|
const actual = sut.getState(scripts);
|
|
// assert
|
|
expect(actual).to.equal(true);
|
|
});
|
|
});
|
|
describe('selectWithRevertState', () => {
|
|
// arrange
|
|
const script = new ScriptStub('id');
|
|
const app = new ApplicationStub().withAction(new CategoryStub(5).withScript(script));
|
|
const testCases = [
|
|
{
|
|
name: 'selects with revert state when not selected',
|
|
selection: [], revert: true, expectRevert: true,
|
|
},
|
|
{
|
|
name: 'selects with non-revert state when not selected',
|
|
selection: [], revert: false, expectRevert: false,
|
|
},
|
|
{
|
|
name: 'switches when already selected with revert state',
|
|
selection: [ new SelectedScript(script, true)], revert: false, expectRevert: false,
|
|
},
|
|
{
|
|
name: 'switches when already selected with not revert state',
|
|
selection: [ new SelectedScript(script, false)], revert: true, expectRevert: true,
|
|
},
|
|
{
|
|
name: 'keeps revert state when already selected with revert state',
|
|
selection: [ new SelectedScript(script, true)], revert: true, expectRevert: true,
|
|
},
|
|
{
|
|
name: 'keeps revert state deselected when already selected with non revert state',
|
|
selection: [ new SelectedScript(script, false)], revert: false, expectRevert: false,
|
|
},
|
|
];
|
|
const nodeId = getScriptNodeId(script);
|
|
for (const testCase of testCases) {
|
|
it(testCase.name, () => {
|
|
const selection = new UserSelection(app, testCase.selection);
|
|
const sut = new ScriptReverter(nodeId);
|
|
// act
|
|
sut.selectWithRevertState(testCase.revert, selection);
|
|
// assert
|
|
expect(selection.isSelected(script.id)).to.equal(true);
|
|
expect(selection.selectedScripts[0].revert).equal(testCase.expectRevert);
|
|
});
|
|
}
|
|
});
|
|
});
|