From 80981bdbfaf79638722b7a74182f8234f75f9364 Mon Sep 17 00:00:00 2001 From: Vadim Kovalenko Date: Tue, 31 Oct 2023 08:39:55 +0200 Subject: [PATCH] Add tests for handling mwApiPath and mwWikiPath params in base url director --- src/MediaWiki.ts | 4 ---- src/util/builders/url/base.director.ts | 3 +++ test/unit/builders/url/base.director.test.ts | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/MediaWiki.ts b/src/MediaWiki.ts index d11e2bc3..aa03f144 100644 --- a/src/MediaWiki.ts +++ b/src/MediaWiki.ts @@ -183,10 +183,6 @@ class MediaWiki { this.wikimediaMobileUrlDirector = new WikimediaMobileURLDirector(this.WikimediaMobileApiUrl.href) } - /** - * What if wikiPath and apiPath set a bit earlier? - * No need to initialize this at the beginning of singleton - */ private initApiURLDirector() { this.webUrl = this.baseUrlDirector.buildURL(this.#wikiPath) this.apiUrl = this.baseUrlDirector.buildURL(this.#apiPath, this.#wikiPath) diff --git a/src/util/builders/url/base.director.ts b/src/util/builders/url/base.director.ts index 43a06c21..108dd941 100644 --- a/src/util/builders/url/base.director.ts +++ b/src/util/builders/url/base.director.ts @@ -13,6 +13,9 @@ export default class BaseURLDirector { buildURL(path: string, wikiPath = '') { path = this.stripLeadingSlash(path) wikiPath = this.stripLeadingSlash(wikiPath) + if (wikiPath && !wikiPath.endsWith('/')) { + wikiPath += '/' + } path = `${wikiPath}${path}` return urlBuilder.setDomain(this.baseDomain).setPath(path).build(true) } diff --git a/test/unit/builders/url/base.director.test.ts b/test/unit/builders/url/base.director.test.ts index f679d2f9..0d3ab053 100644 --- a/test/unit/builders/url/base.director.test.ts +++ b/test/unit/builders/url/base.director.test.ts @@ -9,6 +9,24 @@ describe('BaseURLDirector', () => { expect(url.href).toBe('https://en.m.wikipedia.com/v1/test/api') }) + + it('should return URL object with mwApiPath param', () => { + const url = baseUrlDirector.buildURL('api.php') + + expect(url.href).toBe('https://en.m.wikipedia.com/api.php') + }) + + it('should return URL object with mwApiPath ans mwWikiPath params', () => { + const url = baseUrlDirector.buildURL('api.php', 'w') + + expect(url.href).toBe('https://en.m.wikipedia.com/w/api.php') + }) + + it('forward slashes at the beginnig of mwApiPath ans mwWikiPath params should be trimmed', () => { + const url = baseUrlDirector.buildURL('/api.php', '/w') + + expect(url.href).toBe('https://en.m.wikipedia.com/w/api.php') + }) }) describe('buildWikimediaApiURL', () => {