Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions src/pytest_html/scripts/storage.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@ const possibleFiltes = ['passed', 'skipped', 'failed', 'error', 'xfailed', 'xpas
const getVisible = () => {
const url = new URL(window.location.href)
const settings = new URLSearchParams(url.search).get('visible') || ''
const toret = settings ?
return settings ?
[...new Set(settings.split(',').filter((filter) => possibleFiltes.includes(filter)))] : possibleFiltes

return toret
}
const hideCategory = (categoryToHide) => {
const url = new URL(window.location.href)
Expand All @@ -19,6 +17,9 @@ const hideCategory = (categoryToHide) => {
}

const showCategory = (categoryToShow) => {
if (typeof window === 'undefined') {
return
}
const url = new URL(window.location.href)
const currentVisible = new URLSearchParams(url.search).get('visible')?.split(',') || [...possibleFiltes]
const settings = [...new Set([categoryToShow, ...currentVisible])]
Expand Down Expand Up @@ -49,9 +50,15 @@ const setSort = (type) => {
}

const getCollapsedCategory = () => {
const url = new URL(window.location.href)
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
return collapsedItems?.split(',') || []
let categotries
if (typeof window !== 'undefined') {
const url = new URL(window.location.href)
const collapsedItems = new URLSearchParams(url.search).get('collapsed')
categotries = collapsedItems?.split(',') || []
} else {
categotries = []
}
return categotries
}

const getSortDirection = () => JSON.parse(sessionStorage.getItem('sortAsc'))
Expand Down
136 changes: 53 additions & 83 deletions testing/unittest.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,56 +6,58 @@ const dataModule = require('../src/pytest_html/scripts/datamanager.js')
const storageModule = require('../src/pytest_html/scripts/storage.js')


const setTestData = () => {
const jsonDatan = {
'tests':
[
{
'id': 'passed_1',
'outcome': 'passed',
},
{
'id': 'failed_2',
'outcome': 'failed',
},
{
'id': 'passed_3',
'outcome': 'passed',
},
{
'id': 'passed_4',
'outcome': 'passed',
},
{
'id': 'passed_5',
'outcome': 'passed',
},
{
'id': 'passed_6',
'outcome': 'passed',
},
],
}
dataModule.manager.setManager(jsonDatan)
}

describe('Filter tests', () => {
let getFilterMock
let managerSpy
before(() => {
const jsonDatan = {
'tests':
[
{
'id': 'passed_1',
'outcome': 'passed',
},
{
'id': 'failed_2',
'outcome': 'failed',
},
{
'id': 'passed_3',
'outcome': 'passed',
},
{
'id': 'passed_4',
'outcome': 'passed',
},
{
'id': 'passed_5',
'outcome': 'passed',
},
{
'id': 'passed_6',
'outcome': 'passed',
},
],
}
dataModule.manager.setManager(jsonDatan)
})

beforeEach(setTestData)
afterEach(() => [getFilterMock, managerSpy].forEach((fn) => fn.restore()))
after(() => dataModule.manager.setManager({ tests: [] }))

describe('doInitFilter', () => {
it('has no stored filters', () => {
getFilterMock = sinon.stub(storageModule, 'getVisible').returns([])
managerSpy = sinon.spy(dataModule.manager, 'setRender')

doInitFilter()
expect(managerSpy.callCount).to.eql(1)
expect(dataModule.manager.testSubset.map(({ outcome }) => outcome)).to.eql([
'passed', 'failed', 'passed', 'passed', 'passed', 'passed',
])
expect(dataModule.manager.testSubset.map(({ outcome }) => outcome)).to.eql([])
})
it('exclude passed', () => {
getFilterMock = sinon.stub(storageModule, 'getVisible').returns(['passed'])
getFilterMock = sinon.stub(storageModule, 'getVisible').returns(['failed'])
managerSpy = sinon.spy(dataModule.manager, 'setRender')

doInitFilter()
Expand All @@ -66,63 +68,23 @@ describe('Filter tests', () => {
describe('doFilter', () => {
let setFilterMock
afterEach(() => setFilterMock.restore())
it('removes a filter', () => {
it('removes all but passed', () => {
getFilterMock = sinon.stub(storageModule, 'getVisible').returns(['passed'])
setFilterMock = sinon.stub(storageModule, 'setFilter')
managerSpy = sinon.spy(dataModule.manager, 'setRender')

doFilter('passed', true)
expect(managerSpy.callCount).to.eql(0)
expect(managerSpy.callCount).to.eql(1)
expect(dataModule.manager.testSubset.map(({ outcome }) => outcome)).to.eql([
'passed', 'failed', 'passed', 'passed', 'passed', 'passed'
'passed', 'passed', 'passed', 'passed', 'passed',
])
})
it('applies a filter', () => {
getFilterMock = sinon.stub(storageModule, 'getVisible').returns([])
setFilterMock = sinon.stub(storageModule, 'setFilter')
managerSpy = sinon.spy(dataModule.manager, 'setRender')

doFilter('passed', false)
expect(managerSpy.callCount).to.eql(1)
expect(dataModule.manager.testSubset.map(({outcome}) => outcome)).to.eql([ 'failed' ])
})
})
})


describe('Sort tests', () => {
before(() => {
const jsonDatan = {
'tests':
[
{
'id': 'outcome_1',
'outcome': 'passed',
},
{
'id': 'outcome_2',
'outcome': 'failed',
},
{
'id': 'outcome_3',
'outcome': 'passed',
},
{
'id': 'outcome_4',
'outcome': 'passed',
},
{
'id': 'outcome_5',
'outcome': 'passed',
},
{
'id': 'outcome_6',
'outcome': 'passed',
},
],
}
dataModule.manager.setManager(jsonDatan)
})
beforeEach(setTestData)
after(() => dataModule.manager.setManager({ tests: [] }))
describe('doInitSort', () => {
let managerSpy
Expand Down Expand Up @@ -155,9 +117,15 @@ describe('Sort tests', () => {
})
})
describe('doSort', () => {
let getSortMock, setSortMock, getSortDirectionMock, setSortDirection, managerSpy
let getSortMock
let setSortMock
let getSortDirectionMock
let setSortDirection
let managerSpy

afterEach(() => [getSortMock, setSortMock, getSortDirectionMock, setSortDirection, managerSpy].forEach(fn => fn.restore()))
afterEach(() => [
getSortMock, setSortMock, getSortDirectionMock, setSortDirection, managerSpy,
].forEach((fn) => fn.restore()))
it('sort on outcome', () => {
getSortMock = sinon.stub(storageModule, 'getSort').returns(null)
setSortMock = sinon.stub(storageModule, 'setSort')
Expand All @@ -167,7 +135,9 @@ describe('Sort tests', () => {

doSort('outcome')
expect(managerSpy.callCount).to.eql(1)
expect(dataModule.manager.testSubset.map(({outcome}) => outcome)).to.eql([ 'passed', 'passed', 'passed', 'passed', 'passed', 'failed' ])
expect(dataModule.manager.testSubset.map(({ outcome }) => outcome)).to.eql([
'passed', 'passed', 'passed', 'passed', 'passed', 'failed',
])
})
})
})