diff --git a/tests/rendering/products.js b/tests/rendering/products.js new file mode 100644 index 000000000000..f473bb455233 --- /dev/null +++ b/tests/rendering/products.js @@ -0,0 +1,48 @@ +import { describe, jest } from '@jest/globals' + +import { getDOM, getJSON } from '../helpers/e2etest.js' +import nonEnterpriseDefaultVersion from '../../lib/non-enterprise-default-version.js' + +describe('mobile-only products nav', () => { + const cases = [ + // Note the unversioned homepage at `/` does not have a product selected in the mobile dropdown + ['/github', 'GitHub'], + // Enterprise server + ['/en/enterprise/admin', 'Enterprise administrators'], + [ + '/en/enterprise/get-started/importing-your-projects-to-github/importing-source-code-to-github/importing-a-git-repository-using-the-command-line', + 'Get started', + ], + + ['/desktop', 'GitHub Desktop'], + ['/actions', 'GitHub Actions'], + + // localized + ['/ja/desktop', 'GitHub Desktop'], + ] + + test.each(cases)('on %p, renders current product %p', async (url, name) => { + expect((await getDOM(url))('[data-testid=product-picker] summary').text().trim()).toBe(name) + }) +}) + +describe('products middleware', () => { + jest.setTimeout(5 * 60 * 1000) + + test('adds res.context.activeProducts array', async () => { + const products = await getJSON('/en?json=activeProducts') + expect(Array.isArray(products)).toBe(true) + }) + + test('adds res.context.currentProduct string on homepage', async () => { + const currentProduct = await getJSON('/en?json=currentProduct') + expect(currentProduct).toBe('homepage') + }) + + test('adds res.context.currentProduct object', async () => { + const currentProduct = await getJSON( + `/en/${nonEnterpriseDefaultVersion}/github?json=currentProduct` + ) + expect(currentProduct).toBe('github') + }) +}) diff --git a/tests/rendering/versions.js b/tests/rendering/versions.js new file mode 100644 index 000000000000..3f83f0a48959 --- /dev/null +++ b/tests/rendering/versions.js @@ -0,0 +1,26 @@ +import { describe, jest } from '@jest/globals' + +import { allVersions } from '../../lib/all-versions.js' +import { latest } from '../../lib/enterprise-server-releases.js' +import nonEnterpriseDefaultVersion from '../../lib/non-enterprise-default-version.js' +import { getJSON } from '../helpers/e2etest.js' + +describe('versions middleware', () => { + jest.setTimeout(60 * 1000) + + test('adds res.context.allVersions object', async () => { + const allVersionsFromMiddleware = await getJSON('/en?json=allVersions') + expect(allVersionsFromMiddleware).toEqual(allVersions) + }) + + test('adds res.context.currentVersion string', async () => { + let currentVersion = await getJSON('/en?json=currentVersion') + expect(currentVersion).toBe(nonEnterpriseDefaultVersion) + + currentVersion = await getJSON(`/en/${nonEnterpriseDefaultVersion}?json=currentVersion`) + expect(currentVersion).toBe(nonEnterpriseDefaultVersion) + + currentVersion = await getJSON(`/en/enterprise-server@${latest}?json=currentVersion`) + expect(currentVersion).toBe(`enterprise-server@${latest}`) + }) +}) diff --git a/tests/unit/products.js b/tests/unit/products.js index 0bfc9ecc1ac8..f657d76a81e2 100644 --- a/tests/unit/products.js +++ b/tests/unit/products.js @@ -1,11 +1,6 @@ -import { jest } from '@jest/globals' import revalidator from 'revalidator' import { productMap } from '../../lib/all-products.js' import schema from '../helpers/schemas/products-schema.js' -import { getDOM, getJSON } from '../helpers/supertest.js' -import nonEnterpriseDefaultVersion from '../../lib/non-enterprise-default-version.js' - -jest.useFakeTimers('legacy') describe('products module', () => { test('is an object with product ids as keys', () => { @@ -21,47 +16,3 @@ describe('products module', () => { }) }) }) - -describe('mobile-only products nav', () => { - const cases = [ - // Note the unversioned homepage at `/` does not have a product selected in the mobile dropdown - ['/github', 'GitHub'], - // Enterprise server - ['/en/enterprise/admin', 'Enterprise administrators'], - [ - '/en/enterprise/get-started/importing-your-projects-to-github/importing-source-code-to-github/importing-a-git-repository-using-the-command-line', - 'Get started', - ], - - ['/desktop', 'GitHub Desktop'], - ['/actions', 'GitHub Actions'], - - // localized - ['/ja/desktop', 'GitHub Desktop'], - ] - - test.each(cases)('on %p, renders current product %p', async (url, name) => { - expect((await getDOM(url))('[data-testid=product-picker] summary').text().trim()).toBe(name) - }) -}) - -describe('products middleware', () => { - jest.setTimeout(5 * 60 * 1000) - - test('adds res.context.activeProducts array', async () => { - const products = await getJSON('/en?json=activeProducts') - expect(Array.isArray(products)).toBe(true) - }) - - test('adds res.context.currentProduct string on homepage', async () => { - const currentProduct = await getJSON('/en?json=currentProduct') - expect(currentProduct).toBe('homepage') - }) - - test('adds res.context.currentProduct object', async () => { - const currentProduct = await getJSON( - `/en/${nonEnterpriseDefaultVersion}/github?json=currentProduct` - ) - expect(currentProduct).toBe('github') - }) -}) diff --git a/tests/unit/versions.js b/tests/unit/versions.js index 96c78e9c6d99..300fee19326c 100644 --- a/tests/unit/versions.js +++ b/tests/unit/versions.js @@ -3,7 +3,6 @@ import revalidator from 'revalidator' import { allVersions } from '../../lib/all-versions.js' import { latest } from '../../lib/enterprise-server-releases.js' import schema from '../helpers/schemas/versions-schema.js' -import { getJSON } from '../helpers/supertest.js' import nonEnterpriseDefaultVersion from '../../lib/non-enterprise-default-version.js' jest.useFakeTimers('legacy') @@ -22,23 +21,3 @@ describe('versions module', () => { }) }) }) - -describe('versions middleware', () => { - jest.setTimeout(5 * 60 * 1000) - - test('adds res.context.allVersions object', async () => { - const allVersionsFromMiddleware = await getJSON('/en?json=allVersions') - expect(allVersionsFromMiddleware).toEqual(allVersions) - }) - - test('adds res.context.currentVersion string', async () => { - let currentVersion = await getJSON('/en?json=currentVersion') - expect(currentVersion).toBe(nonEnterpriseDefaultVersion) - - currentVersion = await getJSON(`/en/${nonEnterpriseDefaultVersion}?json=currentVersion`) - expect(currentVersion).toBe(nonEnterpriseDefaultVersion) - - currentVersion = await getJSON(`/en/enterprise-server@${latest}?json=currentVersion`) - expect(currentVersion).toBe(`enterprise-server@${latest}`) - }) -})