import {test} from 'node:test';
import assert from 'node:assert/strict';
import {render, screen, within} from '@testing-library/react';
import Board, {Square} from './main.jsx';
test('Das Brett zeigt neun Felder mit den Zahlen 1 bis 9', () => {
render(<Board />);
const labels = screen.getAllByRole('button').map((button) => button.textContent);
assert.deepEqual(labels, ['1', '2', '3', '4', '5', '6', '7', '8', '9'], 'die Felder zeigen ' + JSON.stringify(labels));
});
test('Square zeigt den Wert, den es bekommt', () => {
render(<Square value="7" />);
const label = screen.getByRole('button').textContent;
assert.equal(label, '7', '<Square value="7" /> zeigt ' + JSON.stringify(label));
});
test('Die Felder stehen in drei Reihen zu je drei', () => {
const {container} = render(<Board />);
const rows = [...container.children];
assert.equal(rows.length, 3, 'das Brett legt ' + rows.length + ' Element(e) in #root, nicht 3 Reihen');
rows.forEach((row, i) => {
const count = within(row).queryAllByRole('button').length;
assert.equal(count, 3, 'Reihe ' + (i + 1) + ' enthält ' + count + ' Feld(er)');
});
});
test('React gibt keine Warnungen aus', () => {
const warnings = [];
const original = console.error;
console.error = (...args) => warnings.push(args.join(' '));
try {
render(<Board />);
} finally {
console.error = original;
}
assert.deepEqual(warnings, [], 'console.error beim Rendern');
});