Skip to content

Commit

Permalink
Add test for sessionTemplateVisitStats() macro
Browse files Browse the repository at this point in the history
  • Loading branch information
tpmcgowan committed Jan 8, 2024
1 parent 523d00d commit 066993f
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 6 deletions.
6 changes: 3 additions & 3 deletions server/routes/testutils/testData.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,13 +213,13 @@ export default class TestData {

static visitStats = ({
cancelCount = 0,
minimumCapacity = { open: 3, closed: 1 },
visitCount = 8,
minimumCapacity = { open: 4, closed: 3 },
visitCount = 7,
visitsByDate = [
{
visitCounts: {
open: 4,
closed: 4,
closed: 3,
},
visitDate: '2023-01-08',
},
Expand Down
2 changes: 1 addition & 1 deletion server/views/components/sessionTemplateVisitStats.njk
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

{% set visitStatsHtml %}
<p>
This session template has
This session template has
<strong>{{ visitStats.visitCount }} booked {{ "visit" | pluralise(visitStats.visitCount) }}</strong>
and <strong>{{ visitStats.cancelCount }} cancelled {{ "visit" | pluralise(visitStats.cancelCount) }}</strong> in the future.
</p>
Expand Down
46 changes: 46 additions & 0 deletions server/views/components/sessionTemplateVisitStats.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import * as cheerio from 'cheerio'
import nunjucks from 'nunjucks'
import { registerNunjucks } from '../../utils/nunjucksSetup'
import { SessionTemplateVisitStatsDto } from '../../data/visitSchedulerApiTypes'
import TestData from '../../routes/testutils/testData'

const njkEnv = registerNunjucks(null)
const nunjucksString = `
{%- from "components/sessionTemplateVisitStats.njk" import sessionTemplateVisitStats -%}
{{ sessionTemplateVisitStats(visitStats) }}
`
const compiledTemplate = nunjucks.compile(nunjucksString, njkEnv)

let visitStats: SessionTemplateVisitStatsDto
const viewContext = { visitStats }

describe('sessionTemplateVisitStats(visitStats) macro', () => {
it('should handle missing visit stats', () => {
const $ = cheerio.load(compiledTemplate.render(viewContext))

expect($.text()).toBe('')
})

it('should render cancelled visit count', () => {
viewContext.visitStats = TestData.visitStats({
cancelCount: 1,
visitCount: 0,
visitsByDate: [],
})
const $ = cheerio.load(compiledTemplate.render(viewContext))

expect($.text().trim()).toContain('0 booked visits')
expect($.text().trim()).toContain('1 cancelled visit')
expect($.text().trim()).not.toContain('Future booked visits')
})

it('should render booked visit count and future visits by date date list', () => {
viewContext.visitStats = TestData.visitStats()
const $ = cheerio.load(compiledTemplate.render(viewContext))

expect($.text().trim()).toContain('7 booked visits')
expect($.text().trim()).toContain('0 cancelled visits')
expect($.text().trim()).toContain('Future booked visits')
expect($.text().trim()).toContain('8 January 2023 – 4 open and 3 closed')
})
})
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@
classes: "govuk-label--m"
},
hint: {
text: "The minimum allowed is currently: " + visitStats.minimumCapacity.open if visitStats.minimumCapacity.open > 0 else 'Any capacity can be set'
text: "The minimum allowed is currently " + visitStats.minimumCapacity.open if visitStats.minimumCapacity.open > 0 else 'Any capacity can be set'
},
classes: "govuk-!-width-one-third",
id: "openCapacity",
Expand All @@ -187,7 +187,7 @@
classes: "govuk-label--m"
},
hint: {
text: "The minimum allowed is currently: " + visitStats.minimumCapacity.closed if visitStats.minimumCapacity.closed > 0 else 'Any capacity can be set'
text: "The minimum allowed is currently " + visitStats.minimumCapacity.closed if visitStats.minimumCapacity.closed > 0 else 'Any capacity can be set'
},
classes: "govuk-!-width-one-third",
id: "closedCapacity",
Expand Down

0 comments on commit 066993f

Please sign in to comment.