diff --git a/packages/xlsx-import/src/ImporterFactory.ts b/packages/xlsx-import/src/ImporterFactory.ts index 35d1ae9..72f0aaf 100644 --- a/packages/xlsx-import/src/ImporterFactory.ts +++ b/packages/xlsx-import/src/ImporterFactory.ts @@ -1,12 +1,17 @@ -import { Workbook } from 'exceljs'; -import IImporterLegacy, { IImporter } from './IImporter'; +import { Buffer, Workbook } from 'exceljs'; +import { IImporter } from './IImporter'; import ImporterLegacy, { Importer } from './Importer'; export class ImporterFactory { public async from(path: string): Promise { const wb = new Workbook(); await wb.xlsx.readFile(path); + return new Importer(wb); + } + public async fromBuffer(buffer: Buffer): Promise { + const wb = new Workbook(); + await wb.xlsx.load(buffer); return new Importer(wb); } } diff --git a/packages/xlsx-import/src/mappers/dateMapper.ts b/packages/xlsx-import/src/mappers/dateMapper.ts index ad72f86..858ffcc 100644 --- a/packages/xlsx-import/src/mappers/dateMapper.ts +++ b/packages/xlsx-import/src/mappers/dateMapper.ts @@ -1,4 +1,4 @@ import { ValueMapper } from '../abstracts/ValueMapper'; // noinspection SuspiciousTypeOfGuard -export const dateMapper: ValueMapper = value => new Date(typeof value === "string" ? value : "invalid"); +export const dateMapper: ValueMapper = value => new Date(typeof value === 'string' ? value : 'invalid'); diff --git a/packages/xlsx-import/tests/integration/object-single-items.test.ts b/packages/xlsx-import/tests/integration/object-single-items.test.ts index d77b2e3..d2bbcac 100644 --- a/packages/xlsx-import/tests/integration/object-single-items.test.ts +++ b/packages/xlsx-import/tests/integration/object-single-items.test.ts @@ -1,7 +1,8 @@ import * as chai from 'chai'; import { ImportType } from '../../src/config/ImportType'; - import { ImporterFactory } from '../../src/ImporterFactory'; +import path from 'path'; +import { readFileSync } from 'fs'; describe('reading sigle items (objects)', () => { const configs = { @@ -26,7 +27,18 @@ describe('reading sigle items (objects)', () => { chai.expect(result).eql(expected); chai.expect(result.length).equals(1); }); + it('getAllItems should return one correct object from buffer', async () => { + const factory = new ImporterFactory(); + const filePath = path.resolve(__dirname, '../data/', 'marsjanie-db.xlsx'); + const buffer = readFileSync(filePath); + const importer = await factory.fromBuffer(buffer); + const result = importer.getAllItems(configs.author); + + const expected = [{ firstName: 'Marian', secondName: 'Marianacki', age: 123, city: 'Pila-wojenna' }]; + chai.expect(result).eql(expected); + chai.expect(result.length).equals(1); + }); const definedTypesAsString = ['object', 'single', 'singleton']; definedTypesAsString.forEach(type => { it(`for type (as string) '${type}' getAllItems should return one correct object`, async () => { diff --git a/packages/xlsx-import/tests/unit/mappers/dateMapper.ts b/packages/xlsx-import/tests/unit/mappers/dateMapper.ts index a68c33d..badc1ec 100644 --- a/packages/xlsx-import/tests/unit/mappers/dateMapper.ts +++ b/packages/xlsx-import/tests/unit/mappers/dateMapper.ts @@ -5,7 +5,10 @@ describe('UNIT TEST: src/mappers/', () => { describe('dateMapper', () => { const dataProvider = [ // data time - { inValue: 'Thu Oct 08 2020 02:00:00 GMT+0200 (Central European Summer Time)', expectedResult: 1602115200000 }, + { + inValue: 'Thu Oct 08 2020 02:00:00 GMT+0200 (Central European Summer Time)', + expectedResult: 1602115200000, + }, { inValue: 'Thu Jan 30 1750 02:00:00 GMT-0900', expectedResult: -6939954000000 }, { inValue: 'Thu Jan 30 3125', expectedResult: 36450774000000 },