diff --git a/features/facebookImport/src/model/analyses/ministories/json-files-bubbles.js b/features/facebookImport/src/model/analyses/ministories/json-files-bubbles.js index 42a21810b5..f205f6b3d6 100644 --- a/features/facebookImport/src/model/analyses/ministories/json-files-bubbles.js +++ b/features/facebookImport/src/model/analyses/ministories/json-files-bubbles.js @@ -8,9 +8,9 @@ export default class JsonFilesBubblesAnalysis extends RootAnalysis { return "Files Bubbles"; } - async _contentLinesForEntry(zipFile, jsonEntry) { + async _contentLinesForEntry(jsonEntry) { const fileContent = new TextDecoder("utf-8").decode( - await zipFile.getContent(jsonEntry) + await jsonEntry.getContent() ); const linesCount = fileContent .split("\n") @@ -19,7 +19,7 @@ export default class JsonFilesBubblesAnalysis extends RootAnalysis { linesCount + (line.trim().length >= 2 ? 1 : 0), 0 ); - return { zipFile, zipEntry: jsonEntry, count: linesCount }; + return { zipEntry: jsonEntry, count: linesCount }; } async analyze({ zipFile, dataAccount }) { @@ -31,7 +31,7 @@ export default class JsonFilesBubblesAnalysis extends RootAnalysis { const relevantEntries = await jsonDataEntities(zipFile); this._filesMessagesCount = await Promise.all( relevantEntries.map((jsonEntry) => - this._contentLinesForEntry(zipFile, jsonEntry) + this._contentLinesForEntry(jsonEntry) ) ); this.active = true; diff --git a/features/facebookImport/test/ministory/json-files-bubbles-analysis.test.js b/features/facebookImport/test/ministory/json-files-bubbles-analysis.test.js new file mode 100644 index 0000000000..0e8e4983e4 --- /dev/null +++ b/features/facebookImport/test/ministory/json-files-bubbles-analysis.test.js @@ -0,0 +1,46 @@ +import JSONFilesBubblesAnalysis from "../../src/model/analyses/ministories/json-files-bubbles"; +import commonStructure from "../../src/static/commonStructure"; +import { ZipFileMock } from "@polypoly-eu/poly-import"; +import { runAnalysisForExport } from "../utils/analyses-execution"; + +const commonJsonFiles = commonStructure + .filter((path) => path.match(/\.json$/)) + .map((jsonPath) => { + return jsonPath.substring(1); + }); + +async function analyzeZipWithFiles(files) { + const zipFile = new ZipFileMock(); + if (files.length > 0) { + files.forEach((jsonPath) => { + zipFile.addJsonEntry(jsonPath, { foo: "bar" }); + }); + } + const { analysisResult } = await runAnalysisForExport( + JSONFilesBubblesAnalysis, + zipFile + ); + return analysisResult; +} + +describe("JSON files analysis for non-empty zip", () => { + let status; + let analysis; + + beforeAll(async () => { + ({ status, analysis } = await analyzeZipWithFiles(commonJsonFiles)); + }); + + it("reports successful status", () => { + expect(status.isSuccess).toBe(true); + }); + + it("has the right type and title", () => { + expect(analysis).toBeInstanceOf(JSONFilesBubblesAnalysis); + expect(analysis.title).toBe("Files Bubbles"); + }); + + it("has the right message count", () => { + expect(analysis._filesMessagesCount).toHaveLength(10); + }); +});