Add admin.js test coverage (100%) and update CLAUDE.md coverage rule
- Add admin.test.js with 3 tests: confirm cancel, confirm accept, no data-confirm - Update CLAUDE.md: coverage rule includes PHP and JS Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
67
tests/js/admin.test.js
Normal file
67
tests/js/admin.test.js
Normal file
@@ -0,0 +1,67 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
||||
|
||||
describe('admin.js', () => {
|
||||
beforeEach(() => {
|
||||
document.body.innerHTML = ''
|
||||
vi.restoreAllMocks()
|
||||
window.confirm = vi.fn()
|
||||
})
|
||||
|
||||
it('prevents form submit when confirm is cancelled', async () => {
|
||||
document.body.innerHTML = `
|
||||
<form data-confirm="Are you sure?">
|
||||
<button type="submit">Delete</button>
|
||||
</form>
|
||||
`
|
||||
|
||||
window.confirm.mockReturnValue(false)
|
||||
|
||||
await import('../../assets/admin.js')
|
||||
document.dispatchEvent(new Event('DOMContentLoaded'))
|
||||
|
||||
const form = document.querySelector('form')
|
||||
const event = new Event('submit', { cancelable: true })
|
||||
form.dispatchEvent(event)
|
||||
|
||||
expect(window.confirm).toHaveBeenCalledWith('Are you sure?')
|
||||
expect(event.defaultPrevented).toBe(true)
|
||||
})
|
||||
|
||||
it('allows form submit when confirm is accepted', async () => {
|
||||
document.body.innerHTML = `
|
||||
<form data-confirm="Are you sure?">
|
||||
<button type="submit">Delete</button>
|
||||
</form>
|
||||
`
|
||||
|
||||
window.confirm.mockReturnValue(true)
|
||||
|
||||
await import('../../assets/admin.js')
|
||||
document.dispatchEvent(new Event('DOMContentLoaded'))
|
||||
|
||||
const form = document.querySelector('form')
|
||||
const event = new Event('submit', { cancelable: true })
|
||||
form.dispatchEvent(event)
|
||||
|
||||
expect(window.confirm).toHaveBeenCalledWith('Are you sure?')
|
||||
expect(event.defaultPrevented).toBe(false)
|
||||
})
|
||||
|
||||
it('does nothing on forms without data-confirm', async () => {
|
||||
document.body.innerHTML = `
|
||||
<form>
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
`
|
||||
|
||||
await import('../../assets/admin.js')
|
||||
document.dispatchEvent(new Event('DOMContentLoaded'))
|
||||
|
||||
const form = document.querySelector('form')
|
||||
const event = new Event('submit', { cancelable: true })
|
||||
form.dispatchEvent(event)
|
||||
|
||||
expect(window.confirm).not.toHaveBeenCalled()
|
||||
expect(event.defaultPrevented).toBe(false)
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user