From c03d59c3c99729e147e2dd0ed7eac64e3c1ab17e Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Mon, 17 Apr 2023 17:20:14 +0800 Subject: [PATCH] Add test case for failures --- packages/import-handler/src/csv.ts | 2 +- packages/import-handler/test/csv/csv.test.ts | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/packages/import-handler/src/csv.ts b/packages/import-handler/src/csv.ts index c827ed8ec..66835127c 100644 --- a/packages/import-handler/src/csv.ts +++ b/packages/import-handler/src/csv.ts @@ -17,7 +17,7 @@ export const importCsv = async (ctx: ImportContext, stream: Stream) => { // labels follows format: "[label1, label2]" const labels = row.length > 2 ? row[2].slice(1, -1).split(',') : undefined await ctx.urlHandler(ctx, url, state, labels) - ctx.countImported++ + ctx.countImported += 1 } catch (error) { console.log('invalid url', row, error) ctx.countFailed += 1 diff --git a/packages/import-handler/test/csv/csv.test.ts b/packages/import-handler/test/csv/csv.test.ts index e87d5aa10..0c447b60b 100644 --- a/packages/import-handler/test/csv/csv.test.ts +++ b/packages/import-handler/test/csv/csv.test.ts @@ -1,10 +1,10 @@ -import 'mocha' import * as chai from 'chai' import { expect } from 'chai' import chaiString from 'chai-string' import * as fs from 'fs' -import { importCsv } from '../../src/csv' +import 'mocha' import { ArticleSavingRequestStatus, ImportContext } from '../../src' +import { importCsv } from '../../src/csv' import { stubImportCtx } from '../util' chai.use(chaiString) @@ -27,6 +27,20 @@ describe('Load a simple CSV file', () => { new URL('https://google.com'), ]) }) + + it('increments the failed count when the URL is invalid', async () => { + const urls: URL[] = [] + const stream = fs.createReadStream('./test/csv/data/simple.csv') + const stub = stubImportCtx() + stub.urlHandler = (ctx: ImportContext, url): Promise => { + urls.push(url) + return Promise.reject('Failed to import url') + } + + await importCsv(stub, stream) + expect(stub.countFailed).to.equal(2) + expect(stub.countImported).to.equal(0) + }) }) describe('Load a complex CSV file', () => {