-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathReactDOM.test.js
65 lines (54 loc) · 2.08 KB
/
ReactDOM.test.js
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
const React = require('react');
const {reactElementToDOM, ReactDOM, initializeFiberTree} = require('./ReactDOM');
function createList() {
const itemOneEl = React.createElement(
"li",
{ key:"list-1", className: "list__item--one" },
"Item 1 brisa"
);
const itemTwoEl = React.createElement(
"li",
{ key:"list-2", className: "list__item--two" },
"Item 2 kiki"
);
const ListEl = React.createElement("ul", { className: "list" }, [
itemOneEl,
itemTwoEl
]);
return ListEl;
}
test("should convert react element to HTMLElement", () => {
// Arrange
const ListEl = createList();
// Act
const domEl = reactElementToDOM(ListEl);
// Assert
expect(domEl.children[0].innerText).toBe(`Item 1 brisa`);
expect(domEl.children[1].innerText).toBe(`Item 2 kiki`);
});
test("should append child properly", () => {
// Arrange
const ListEl = createList();
const container = document.createElement("div");
container.classList.add("container");
// Act
ReactDOM.render(ListEl, container);
// Assert
//TODO: WIP....
//expect(container.innerHTML).toBe(`<div><ul classname=\"list\"><li classname=\"list__item--one\"></li><li classname=\"list__item--two\"></li></ul><li classname=\"list__item--two\"></li><li classname=\"list__item--one\"></li><span></span></div>`);
//expect(container.childNodes[0].childNodes[0].innerText).toBe(`Item 1 brisa`);
//expect(container.childNodes[0].childNodes[1].innerText).toBe(`Item 2 kiki`);
});
test('should initialize a fiber node properly', () => {
// Arrange
const childOne = React.createElement('div', {className: 'childOne', key: 'child-one'}, 'child one');
const childTwo = React.createElement('div', {className: 'childTwo', key: 'child-two'}, 'child two');
const parentDiv = React.createElement('div', {className: 'parent'},[childOne, childTwo] );
// Act
const fiberNode = initializeFiberTree(parentDiv);
// Assert
expect(fiberNode.parent).toBeUndefined();
expect(fiberNode.sibling).toBeUndefined();
expect(fiberNode.child).toBeDefined();
expect(fiberNode.stateNode.innerHTML).toBe('');
});