92 lines
2.4 KiB
TypeScript
92 lines
2.4 KiB
TypeScript
|
import {findCheckboxesInText, getChecklistStatistics} from './checklistFromText'
|
||
|
|
||
|
describe('Find checklists in text', () => {
|
||
|
it('should find no checkbox', () => {
|
||
|
const text: string = 'Lorem Ipsum'
|
||
|
const checkboxes = findCheckboxesInText(text)
|
||
|
|
||
|
expect(checkboxes).toHaveLength(0)
|
||
|
})
|
||
|
it('should find multiple checkboxes', () => {
|
||
|
const text: string = `* [ ] Lorem Ipsum
|
||
|
* [ ] Dolor sit amet
|
||
|
|
||
|
Here's some text in between
|
||
|
|
||
|
* [x] Dolor sit amet
|
||
|
- [ ] Dolor sit amet`
|
||
|
const checkboxes = findCheckboxesInText(text)
|
||
|
|
||
|
expect(checkboxes).toHaveLength(4)
|
||
|
expect(checkboxes[0]).toBe(0)
|
||
|
expect(checkboxes[1]).toBe(18)
|
||
|
expect(checkboxes[2]).toBe(69)
|
||
|
})
|
||
|
it('should find one checkbox with *', () => {
|
||
|
const text: string = '* [ ] Lorem Ipsum'
|
||
|
const checkboxes = findCheckboxesInText(text)
|
||
|
|
||
|
expect(checkboxes).toHaveLength(1)
|
||
|
expect(checkboxes[0]).toBe(0)
|
||
|
})
|
||
|
it('should find one checkbox with -', () => {
|
||
|
const text: string = '- [ ] Lorem Ipsum'
|
||
|
const checkboxes = findCheckboxesInText(text)
|
||
|
|
||
|
expect(checkboxes).toHaveLength(1)
|
||
|
expect(checkboxes[0]).toBe(0)
|
||
|
})
|
||
|
it('should find one checked checkbox with *', () => {
|
||
|
const text: string = '* [x] Lorem Ipsum'
|
||
|
const checkboxes = findCheckboxesInText(text)
|
||
|
|
||
|
expect(checkboxes).toHaveLength(1)
|
||
|
expect(checkboxes[0]).toBe(0)
|
||
|
})
|
||
|
it('should find one checked checkbox with -', () => {
|
||
|
const text: string = '- [x] Lorem Ipsum'
|
||
|
const checkboxes = findCheckboxesInText(text)
|
||
|
|
||
|
expect(checkboxes).toHaveLength(1)
|
||
|
expect(checkboxes[0]).toBe(0)
|
||
|
})
|
||
|
})
|
||
|
|
||
|
describe('Get Checklist Statistics in a Text', () => {
|
||
|
it('should find no checkbox', () => {
|
||
|
const text: string = 'Lorem Ipsum'
|
||
|
const stats = getChecklistStatistics(text)
|
||
|
|
||
|
expect(stats.total).toBe(0)
|
||
|
})
|
||
|
it('should find one checkbox', () => {
|
||
|
const text: string = '* [ ] Lorem Ipsum'
|
||
|
const stats = getChecklistStatistics(text)
|
||
|
|
||
|
expect(stats.total).toBe(1)
|
||
|
expect(stats.checked).toBe(0)
|
||
|
})
|
||
|
it('should find one checked checkbox', () => {
|
||
|
const text: string = '* [x] Lorem Ipsum'
|
||
|
const stats = getChecklistStatistics(text)
|
||
|
|
||
|
expect(stats.total).toBe(1)
|
||
|
expect(stats.checked).toBe(1)
|
||
|
})
|
||
|
it('should find multiple mixed and matched', () => {
|
||
|
const text: string = `* [ ] Lorem Ipsum
|
||
|
* [ ] Dolor sit amet
|
||
|
* [x] Dolor sit amet
|
||
|
- [x] Dolor sit amet
|
||
|
|
||
|
Here's some text in between
|
||
|
|
||
|
* [x] Dolor sit amet
|
||
|
- [ ] Dolor sit amet`
|
||
|
const stats = getChecklistStatistics(text)
|
||
|
|
||
|
expect(stats.total).toBe(6)
|
||
|
expect(stats.checked).toBe(3)
|
||
|
})
|
||
|
})
|