11/*
2- * project-website.test.ts
3- *
4- * Copyright (C) 2020-2022 Posit Software, PBC
5- *
6- */
2+ * project-website.test.ts
3+ *
4+ * Copyright (C) 2020-2022 Posit Software, PBC
5+ */
76import { existsSync } from "../../../src/deno_ral/fs.ts" ;
87import { join } from "../../../src/deno_ral/path.ts" ;
98
109import { Metadata } from "../../../src/config/types.ts" ;
1110
12- import { testQuartoCmd , Verify } from "../../test.ts" ;
11+ import { ExecuteOutput , testQuartoCmd , Verify } from "../../test.ts" ;
1312import { docs } from "../../utils.ts" ;
1413import {
1514 directoryEmptyButFor ,
@@ -22,6 +21,7 @@ import {
2221 kProjectWorkingDir ,
2322 kQuartoProjectFile ,
2423} from "./common.ts" ;
24+ import { assert } from "testing/asserts" ;
2525
2626// A website project
2727testQuartoCmd (
@@ -32,7 +32,7 @@ testQuartoCmd(
3232 fileExists ( join ( kProjectWorkingDir , "index.qmd" ) ) ,
3333 verifyYamlFile (
3434 kQuartoProjectFile ,
35- ( ( yaml : unknown ) => {
35+ ( yaml : unknown ) => {
3636 // Make sure there is a project yaml section
3737 const metadata = yaml as Metadata ;
3838 if (
@@ -43,7 +43,7 @@ testQuartoCmd(
4343 } else {
4444 return false ;
4545 }
46- } ) ,
46+ } ,
4747 ) ,
4848 ] ,
4949 {
@@ -86,3 +86,39 @@ testQuartoCmd(
8686 } ,
8787 } ,
8888) ;
89+
90+ const mergeNavbarCrumbsConfigSite = docs (
91+ "websites/search/merge-navbar-crumbs-configuration" ,
92+ ) ;
93+ const mergeNavbarCrumbsConfigSiteOutDir = join ( mergeNavbarCrumbsConfigSite , outDir ) ;
94+ testQuartoCmd (
95+ "render" ,
96+ [ mergeNavbarCrumbsConfigSite ] ,
97+ [
98+ {
99+ name : "verify-no-navbar-crumbs-in-searchjson" ,
100+ verify : async ( outputs : ExecuteOutput [ ] ) => {
101+ // Verify that the search.json file does not contain any navbar breadcrumbs
102+ const searchJson = join ( mergeNavbarCrumbsConfigSite , "_site" , "search.json" ) ;
103+ const searchJsonExists = existsSync ( searchJson ) ;
104+ if ( ! searchJsonExists ) {
105+ throw new Error ( `File ${ searchJson } does not exist` ) ;
106+ }
107+ const searchJsonContent = await Deno . readTextFile ( searchJson ) ;
108+ const json = JSON . parse ( searchJsonContent ) ;
109+ for ( const entry of json ) {
110+ if ( entry . crumbs ) {
111+ assert ( entry . crumbs [ 0 ] !== "Home" ) ;
112+ }
113+ }
114+ } ,
115+ } ,
116+ ] ,
117+ {
118+ teardown : async ( ) => {
119+ if ( existsSync ( mergeNavbarCrumbsConfigSiteOutDir ) ) {
120+ await Deno . remove ( mergeNavbarCrumbsConfigSiteOutDir , { recursive : true } ) ;
121+ }
122+ } ,
123+ } ,
124+ ) ;
0 commit comments