Files
introduction-to-testing/examples/calculator/src/calculator.test.js
Steve Kinney a028678660 Initial commit
2024-09-13 15:59:51 -06:00

64 lines
1.8 KiB
JavaScript

import { beforeEach, describe, expect, it } from 'vitest';
import { fireEvent } from '@testing-library/dom';
import { renderCalculator } from './calculator.js';
it('is running our test in a browser-like environment', () => {
expect(typeof window).not.toBe('undefined');
});
describe('Calculator', () => {
let display;
beforeEach(() => {
renderCalculator(document.body);
display = document.getElementById('display');
});
it('displays number when a number button is clicked', () => {
/** @type {NodeListOf<HTMLButtonElement>} */
const [button] = document.querySelectorAll('button');
const value = button.dataset.value;
fireEvent.click(button);
expect(display.value).toBe(value);
});
it('display the sum of multiple numbers when the equals button is clicked', () => {
const one = document.getElementById('digit-1');
const two = document.getElementById('digit-2');
const three = document.getElementById('digit-3');
fireEvent.click(one);
fireEvent.click(two);
fireEvent.click(three);
expect(display.value).toBe('123');
});
it('supports addings two numbers and displaying the result', () => {
const one = document.getElementById('digit-1');
const two = document.getElementById('digit-2');
const add = document.getElementById('add');
const equals = document.getElementById('equals');
fireEvent.click(one);
fireEvent.click(add);
fireEvent.click(two);
fireEvent.click(equals);
expect(display.value).toBe('3');
});
it('clears the display when the clear button is clicked', () => {
const one = document.getElementById('digit-1');
const clear = document.getElementById('clear');
fireEvent.click(one);
fireEvent.click(clear);
expect(display.value).toBe('');
});
});