aboutsummaryrefslogtreecommitdiff
path: root/tests/todo-app.spec.ts
blob: 1d04ae758e8c573efb154e1f1c98e51a29600133 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import { getByTestId } from '@testing-library/dom'
import '@testing-library/jest-dom'
import { delay, loadHTMLFixture } from './util'

describe('todo-app example', () => {
  describe('Add new task', () => {
    let $textInput: HTMLInputElement
    let $addBtn: HTMLButtonElement

    let $taskItems: Array<HTMLElement> = []

    const submit = async (text: string) => {
      $textInput.value = text
      $addBtn.click()

      await delay(10)
      $taskItems = [
        ...document.querySelectorAll<HTMLElement>(
          '[data-instance="task-item"]',
        ),
      ]
    }

    beforeAll(async () => {
      await loadHTMLFixture('todo-app')

      $textInput = getByTestId<HTMLInputElement>(
        document.body,
        'add-task-input',
      )
      $addBtn = getByTestId<HTMLButtonElement>(document.body, 'add-task-btn')
    })

    it('should add new unchecked task', async () => {
      // Add first item
      await submit('Buy Milk')
      expect($taskItems).toHaveLength(1)
      expect(getComputedStyle($taskItems[0]).getPropertyValue('--text')).toBe(
        '"Buy Milk"',
      )

      // Add the second item
      await submit('Kill all the non-believers')
      expect($taskItems).toHaveLength(2)
      expect(getComputedStyle($taskItems[0]).getPropertyValue('--text')).toBe(
        '"Buy Milk"',
      )
      expect(getComputedStyle($taskItems[1]).getPropertyValue('--text')).toBe(
        '"Kill all the non-believers"',
      )
    })

    it('should check item when clicked', async () => {
      expect(
        getComputedStyle($taskItems[0]).getPropertyValue('--checked'),
      ).toBe(`false`)

      $taskItems[0].click()
      await delay(10)

      expect(
        getComputedStyle($taskItems[0]).getPropertyValue('--checked'),
      ).toBe(`"true"`) // TODO: look into the quotes issue

      $taskItems[0].click()
      await delay(10)

      expect(
        getComputedStyle($taskItems[0]).getPropertyValue('--checked'),
      ).toBe(`"false"`) // TODO: look into the quotes issue

      $taskItems[0].click()
      await delay(10)

      expect(
        getComputedStyle($taskItems[0]).getPropertyValue('--checked'),
      ).toBe(`"true"`) // TODO: look into the quotes issue
    })
  })
})