/* Copyright IBM Corp. 2018 */ import { tmpdir } from 'os'; import { join } from 'path'; import { first, mergeMapTo, switchMap, tap, toArray } from 'rxjs/operators'; import { v4 } from 'uuid'; import { rxDeleteDir, rxDeleteFile } from '../src/utils/rx.delete'; import { rxDownloadFile } from '../src/utils/rx.download'; import { rxUnzipFromUrl } from '../src/utils/rx.zip'; describe('rx.unzip', () => { it('should download zipball', () => { const dir = tmpdir(); const name = v4(); const dstName = join(dir, name + '.zip'); const ob = rxDownloadFile('https://api.github.com/repos/ibm-wch/wch-site-application/zipball', dstName).pipe( first(), tap(s => expect(s).toBe(dstName)), switchMap(rxDeleteFile) ); return ob.toPromise(); }); it('should download and uncompress', () => { const dir = tmpdir(); const name = v4(); const dstDir = join(dir, name); const rxDelete = rxDeleteDir(dstDir); const ob = rxUnzipFromUrl('https://github.com/ibm-wch/wch-site-application/archive/master.zip', dstDir).pipe( toArray(), tap(files => expect(files.length).toBeGreaterThan(0)), mergeMapTo(rxDelete) ); return ob.toPromise(); }); it('should download', () => { const dir = tmpdir(); const name = v4(); const dstName = join(dir, name + '.zip'); const ob = rxDownloadFile('https://github.com/ibm-wch/wch-site-application/archive/master.zip', dstName).pipe( first(), tap(s => expect(s).toBe(dstName)), switchMap(rxDeleteFile) ); return ob.toPromise(); }); });