/* Copyright IBM Corp. 2017 */ import { tmpdir } from 'os'; import { join } from 'path'; import { concat, merge } from 'rxjs'; import { v4 } from 'uuid'; import { CreateComponentsCommand } from '../src/commands/create.components.command'; import { CreateLayoutsCommand } from '../src/commands/create.layouts.command'; import { Options } from '../src/options'; import { rxDeleteDir } from '../src/utils/rx.delete'; import { rxCopyDir } from './../src/utils/rx.copy'; import { getAssetBaseDir } from './utils/test.utils'; describe('create.layouts', () => { it('should be able to create the oslo layouts', () => { const dir = tmpdir(); const name = v4(); const dstBase = join(dir, name); const assetBase = getAssetBaseDir(); const dstData = join(dir, name, 'data'); const dstSrc = dstBase; const srcSrc = join(assetBase, 'test', 'empty-project'); const srcData = join(assetBase, 'test', 'oslo'); const rxDelete = rxDeleteDir(dstBase); // copy the data const rxData = merge(rxCopyDir(srcSrc, dstSrc), rxCopyDir(srcData, dstData)); // create layouts on the result const layoutOpt: Options = { command: CreateLayoutsCommand.COMMAND, commandType: CreateLayoutsCommand.TYPE, data: dstData, verbose: false, override: true, allArgs: [] }; const layoutCmd = new CreateLayoutsCommand(layoutOpt); const rxLayoutCmd = layoutCmd.process(); // create layouts on the result const cmpOpt: Options = { command: CreateComponentsCommand.COMMAND, commandType: CreateComponentsCommand.TYPE, data: dstData, src: join(dstSrc, 'src', 'app'), verbose: false, override: true, skipRegistration: true, scss: true, allArgs: [] }; const cmpCmd = new CreateComponentsCommand(cmpOpt); const rxCmpCmd = cmpCmd.process(); const rxTotal = concat(rxDelete, rxData, rxLayoutCmd, rxCmpCmd, rxDelete); return rxTotal.toPromise(); }); });