import React, { HTMLAttributes } from 'react'
import { render, screen } from '@testing-library/react'
import { parseSiteFromDataset, PlausibleSite } from './site-context'
describe('parseSiteFromDataset', () => {
const StatsReactContainer = ({
...attrs
}: HTMLAttributes) => (
)
const expectedParsedSite: PlausibleSite = {
domain: 'dummy.site/nice',
offset: 20700,
hasGoals: true,
conversionsOptedOut: false,
funnelsOptedOut: false,
propsOptedOut: false,
funnelsAvailable: true,
propsAvailable: true,
siteSegmentsAvailable: true,
revenueGoals: [{ currency: 'USD', display_name: 'Purchase' }],
funnels: [{ id: 1, name: 'From homepage to login', steps_count: 3 }],
hasProps: true,
statsBegin: '2021-09-07',
nativeStatsBegin: '2022-09-02',
embedded: false,
background: undefined,
isDbip: false,
flags: {},
validIntervalsByPeriod: {
'12mo': ['day', 'week', 'month'],
'30d': ['day', 'week'],
'6mo': ['day', 'week', 'month'],
'7d': ['hour', 'day'],
all: ['week', 'month'],
custom: ['day', 'week', 'month'],
day: ['minute', 'hour'],
month: ['day', 'week'],
realtime: ['minute'],
year: ['day', 'week', 'month']
},
shared: false,
legacyTimeOnPageCutoff: '2022-01-01T00:00:00Z'
}
it('parses from dom string map correctly', () => {
render()
expect(
parseSiteFromDataset(screen.getByTestId('stats-react-container').dataset)
).toEqual(expectedParsedSite)
})
it('handles embedded', () => {
render(
)
expect(
parseSiteFromDataset(screen.getByTestId('stats-react-container').dataset)
).toEqual({
...expectedParsedSite,
shared: true,
embedded: true,
background: '#foofoo'
})
})
})