diff --git a/src/output-pages-base-url.js b/src/output-pages-base-url.js new file mode 100644 index 0000000..669ea0d --- /dev/null +++ b/src/output-pages-base-url.js @@ -0,0 +1,10 @@ +const core = require('@actions/core') + +function outputPagesBaseUrl(siteUrl) { + core.setOutput('base_url', siteUrl.href) + core.setOutput('origin', siteUrl.origin) + core.setOutput('host', siteUrl.host) + core.setOutput('base_path', siteUrl.pathname) +} + +module.exports = outputPagesBaseUrl diff --git a/src/output-pages-base-url.test.js b/src/output-pages-base-url.test.js new file mode 100644 index 0000000..3e7d328 --- /dev/null +++ b/src/output-pages-base-url.test.js @@ -0,0 +1,62 @@ +const core = require('@actions/core') + +const outputPagesBaseUrl = require('./output-pages-base-url') + +describe('outputPagesBaseUrl', () => { + beforeEach(() => { + jest.restoreAllMocks() + + jest.spyOn(core, 'setOutput').mockImplementation((key, value) => { + key, value + }) + jest.spyOn(core, 'setFailed').mockImplementation(param => param) + + // Mock error/warning/info/debug + jest.spyOn(core, 'error').mockImplementation(jest.fn()) + jest.spyOn(core, 'warning').mockImplementation(jest.fn()) + jest.spyOn(core, 'info').mockImplementation(jest.fn()) + jest.spyOn(core, 'debug').mockImplementation(jest.fn()) + }) + + it('gets expected outputs for profile site', async () => { + const baseUrl = 'https://octocat.github.io/' + + outputPagesBaseUrl(new URL(baseUrl)) + + expect(core.setOutput).toHaveBeenCalledWith('base_url', baseUrl) + expect(core.setOutput).toHaveBeenCalledWith( + 'origin', + 'https://octocat.github.io' + ) + expect(core.setOutput).toHaveBeenCalledWith('host', 'octocat.github.io') + expect(core.setOutput).toHaveBeenCalledWith('base_path', '/') + }) + + it('gets expected outputs for project site', async () => { + const baseUrl = 'https://octocat.github.io/my-repo/' + + outputPagesBaseUrl(new URL(baseUrl)) + + expect(core.setOutput).toHaveBeenCalledWith('base_url', baseUrl) + expect(core.setOutput).toHaveBeenCalledWith( + 'origin', + 'https://octocat.github.io' + ) + expect(core.setOutput).toHaveBeenCalledWith('host', 'octocat.github.io') + expect(core.setOutput).toHaveBeenCalledWith('base_path', '/my-repo/') + }) + + it('gets expected outputs for site with custom domain name', async () => { + const baseUrl = 'https://www.example.com/' + + outputPagesBaseUrl(new URL(baseUrl)) + + expect(core.setOutput).toHaveBeenCalledWith('base_url', baseUrl) + expect(core.setOutput).toHaveBeenCalledWith( + 'origin', + 'https://www.example.com' + ) + expect(core.setOutput).toHaveBeenCalledWith('host', 'www.example.com') + expect(core.setOutput).toHaveBeenCalledWith('base_path', '/') + }) +})