From d64b969257f6077a304afdba159124d4223a481e Mon Sep 17 00:00:00 2001 From: "Patrik J. Braun" Date: Fri, 7 Nov 2025 23:15:13 +0100 Subject: [PATCH] Adding minimal Test for repository.md #1047 --- .../model/extension/ExtensionRepository.ts | 13 ++++++----- .../extension/ExtensionRepository.spec.ts | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+), 5 deletions(-) create mode 100644 test/backend/unit/model/extension/ExtensionRepository.spec.ts diff --git a/src/backend/model/extension/ExtensionRepository.ts b/src/backend/model/extension/ExtensionRepository.ts index f891f625..ca1a062b 100644 --- a/src/backend/model/extension/ExtensionRepository.ts +++ b/src/backend/model/extension/ExtensionRepository.ts @@ -30,10 +30,8 @@ export class ExtensionRepository { return text; } - - public async fetchList(): Promise { - const res = await (await fetch(Config.Extensions.repositoryUrl)).text(); - const lines = res.split('\n'); + public repoMD(text: string): ExtensionListItem[] { + const lines = text.split('\n'); lines.forEach(line => line.trim()); const tableStartLine = lines.findIndex(l => l.startsWith('| **Name** |')); const tableHeaderLines = 2; @@ -62,7 +60,12 @@ export class ExtensionRepository { zipUrl: this.getUrlFromMDLink(entries[3]) }); }); - this.extensionsList = extensions; + return extensions; + } + + public async fetchList(): Promise { + const res = await (await fetch(Config.Extensions.repositoryUrl)).text(); + this.extensionsList = this.repoMD(res); this.lastUpdate = new Date().getTime(); return this.extensionsList; } diff --git a/test/backend/unit/model/extension/ExtensionRepository.spec.ts b/test/backend/unit/model/extension/ExtensionRepository.spec.ts new file mode 100644 index 00000000..17e0306a --- /dev/null +++ b/test/backend/unit/model/extension/ExtensionRepository.spec.ts @@ -0,0 +1,22 @@ +import {expect} from 'chai'; +import { readFile } from 'fs/promises'; +import {ExtensionRepository} from '../../../../../src/backend/model/extension/ExtensionRepository'; +import {ProjectPath} from '../../../../../src/backend/ProjectPath'; +import path = require('path'); + +// to help WebStorm to handle the test cases +declare let describe: any; +declare const after: any; +declare const before: any; +declare const it: any; + + +describe('ExtensionRepository', () => { + + it('should parse MD repo file', async () => { + + const text = await readFile(path.join(ProjectPath.Root,'extension/REPOSITORY.md'), 'utf8'); + const extensions = (new ExtensionRepository()).repoMD(text); + expect(extensions[0].id).to.deep.equal('sample-extension'); + }); +});