diff options
Diffstat (limited to 'spec/frontend/import_entities/import_projects/utils_spec.js')
-rw-r--r-- | spec/frontend/import_entities/import_projects/utils_spec.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/spec/frontend/import_entities/import_projects/utils_spec.js b/spec/frontend/import_entities/import_projects/utils_spec.js new file mode 100644 index 00000000000..7d9c4b7137e --- /dev/null +++ b/spec/frontend/import_entities/import_projects/utils_spec.js @@ -0,0 +1,69 @@ +import { + isProjectImportable, + isIncompatible, + getImportStatus, +} from '~/import_entities/import_projects/utils'; +import { STATUSES } from '~/import_entities/constants'; + +describe('import_projects utils', () => { + const COMPATIBLE_PROJECT = { + importSource: { incompatible: false }, + }; + + const INCOMPATIBLE_PROJECT = { + importSource: { incompatible: true }, + importedProject: null, + }; + + describe('isProjectImportable', () => { + it.each` + status | result + ${STATUSES.FINISHED} | ${false} + ${STATUSES.FAILED} | ${false} + ${STATUSES.SCHEDULED} | ${false} + ${STATUSES.STARTED} | ${false} + ${STATUSES.NONE} | ${true} + ${STATUSES.SCHEDULING} | ${false} + `('returns $result when project is compatible and status is $status', ({ status, result }) => { + expect( + isProjectImportable({ + ...COMPATIBLE_PROJECT, + importedProject: { importStatus: status }, + }), + ).toBe(result); + }); + + it('returns true if import status is not defined', () => { + expect(isProjectImportable({ importSource: {} })).toBe(true); + }); + + it('returns false if project is not compatible', () => { + expect(isProjectImportable(INCOMPATIBLE_PROJECT)).toBe(false); + }); + }); + + describe('isIncompatible', () => { + it('returns true for incompatible project', () => { + expect(isIncompatible(INCOMPATIBLE_PROJECT)).toBe(true); + }); + + it('returns false for compatible project', () => { + expect(isIncompatible(COMPATIBLE_PROJECT)).toBe(false); + }); + }); + + describe('getImportStatus', () => { + it('returns actual status when project status is provided', () => { + expect( + getImportStatus({ + ...COMPATIBLE_PROJECT, + importedProject: { importStatus: STATUSES.FINISHED }, + }), + ).toBe(STATUSES.FINISHED); + }); + + it('returns NONE as status if import status is not provided', () => { + expect(getImportStatus(COMPATIBLE_PROJECT)).toBe(STATUSES.NONE); + }); + }); +}); |