const path = require('path'); const fs = require('fs'); const guides = require('../content/guides'); const { getPageRoutes, getGuideRoutes, } = require("../scripts/path-map"); describe("Build scripts tests", () => { test('it should generate valid pathmap for pages', () => { const pageRoutes = getPageRoutes(); expect(pageRoutes).toEqual({ '/': { page: '/index' }, '/about': { page: '/about' }, '/privacy': { page: '/privacy' }, '/terms': { page: '/terms' }, '/guides': { page: '/guides/index' }, '/roadmaps': { page: '/roadmaps' }, '/signup': { page: '/signup' }, }); }); test('it should generate valid guides pathmap', () => { const expectedGuideRoutes = guides.reduce((acc, guide) => { const [,, slug] = guide.url.split('/'); return { ...acc, [guide.url]: { page: '/guides/[guide]', query: slug, } }; }, {}); // Valid path map is generated expect(expectedGuideRoutes).toEqual(getGuideRoutes()); const pageFilePath = path.join(__dirname, '../pages/guides/[guide].js'); const foundFilePath = fs.existsSync(pageFilePath) ? pageFilePath : ''; // Given page component exists expect(foundFilePath).toEqual(pageFilePath); }); test('it should have markdown file for each guide', () => { guides.forEach(guide => { const [,, slug] = guide.url.split('/'); const expectedFile = path.join(__dirname, `../content/guides/${slug}.md`); const foundFile = fs.existsSync(expectedFile) ? expectedFile : ''; expect(foundFile).toEqual(expectedFile); }) }); // @todo add tests for roadmap pathmap });