Skip to content

Commit c0e618d

Browse files
committed
test: add test case.
1 parent 9fbb16f commit c0e618d

File tree

11 files changed

+190
-0
lines changed

11 files changed

+190
-0
lines changed

core/src/Block.test.tsx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from './';
3+
4+
it('renders <Login.Block /> test case', () => {
5+
render(
6+
<Login>
7+
<Render>{({ blocks, fields, $$index, extra }, data) => <label>{blocks.title}</label>}</Render>
8+
<Login.Block data-testid="block" keyname="title">
9+
Login
10+
</Login.Block>
11+
</Login>,
12+
);
13+
const block = screen.getByTestId('block');
14+
expect(block.parentElement?.tagName).toBe('LABEL');
15+
expect(block.tagName).toBe('DIV');
16+
expect(block.innerHTML).toBe('Login');
17+
});

core/src/Button.test.tsx

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from './';
3+
4+
it('renders <Login.Button /> test case', () => {
5+
render(
6+
<Login>
7+
<Render>{({ blocks, buttons, fields, $$index, extra }, data) => <label>{buttons.submit}</label>}</Render>
8+
<Login.Button data-testid="button" keyname="submit" type="submit">
9+
Login
10+
</Login.Button>
11+
</Login>,
12+
);
13+
const button = screen.getByTestId('button');
14+
expect(button).toHaveProperty('type', 'submit');
15+
expect(button.innerHTML).toBe('Login');
16+
});

core/src/Input.test.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from './';
3+
4+
it('renders <Login.Input /> test case', () => {
5+
render(
6+
<Login>
7+
<Render>
8+
{({ blocks, fields, $$index, extra }, data) => (
9+
<label>
10+
{fields.password} {extra.password}
11+
</label>
12+
)}
13+
</Render>
14+
<Login.Input data-testid="input" name="password" type="password" placeholder="Password">
15+
<span> extra content </span>
16+
</Login.Input>
17+
</Login>,
18+
);
19+
const input = screen.getByTestId('input');
20+
expect(input.parentElement?.tagName).toBe('LABEL');
21+
expect(input.tagName).toBe('INPUT');
22+
expect(input.nextElementSibling?.innerHTML).toBe(' extra content ');
23+
});

core/src/Render.test.tsx

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from './';
3+
4+
it('renders <Login /> <Render> test case', () => {
5+
render(
6+
<Login data-testid="login">
7+
<Render>xxx</Render>
8+
</Login>,
9+
);
10+
const login = screen.getByTestId('login');
11+
expect(login.tagName).toBe('DIV');
12+
});
13+
14+
it('renders <Login /> <Render> test case', () => {
15+
render(
16+
<Login data-testid="login">
17+
<Render>
18+
<div>xxx</div>
19+
</Render>
20+
</Login>,
21+
);
22+
const login = screen.getByTestId('login');
23+
expect(login.tagName).toBe('DIV');
24+
expect(login.children.length).toBe(1);
25+
expect(login.children[0].tagName).toBe('DIV');
26+
expect(login.children[0].innerHTML).toBe('xxx');
27+
});

core/src/Select.test.tsx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from './';
3+
4+
it('renders <Login.Select /> test case', () => {
5+
render(
6+
<Login>
7+
<Render>{({ blocks, fields, $$index, extra }, data) => <label>{fields.selectname}</label>}</Render>
8+
<Login.Select data-testid="select" name="selectname">
9+
<option value="1" data-testid="option1">
10+
One
11+
</option>
12+
<option value="2" data-testid="option2">
13+
Two
14+
</option>
15+
</Login.Select>
16+
</Login>,
17+
);
18+
const select = screen.getByTestId('select');
19+
expect(select.parentElement?.tagName).toBe('LABEL');
20+
expect(select.tagName).toBe('SELECT');
21+
22+
const option1 = screen.getByTestId('option1');
23+
expect(option1.tagName).toBe('OPTION');
24+
expect(option1.innerHTML).toBe('One');
25+
26+
const option2 = screen.getByTestId('option2');
27+
expect(option2.tagName).toBe('OPTION');
28+
expect(option2.innerHTML).toBe('Two');
29+
});

core/src/Textarea.test.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from './';
3+
4+
it('renders <Login.Textarea /> test case', () => {
5+
render(
6+
<Login>
7+
<Render>
8+
{({ blocks, fields, $$index, extra }, data) => (
9+
<label>
10+
{fields.textarea} {extra.textarea}
11+
</label>
12+
)}
13+
</Render>
14+
<Login.Textarea data-testid="textarea" keyname="textarea" defaultValue="default">
15+
extra content
16+
</Login.Textarea>
17+
</Login>,
18+
);
19+
const textarea = screen.getByTestId('textarea');
20+
expect(textarea.parentElement?.tagName).toBe('LABEL');
21+
expect(textarea.tagName).toBe('TEXTAREA');
22+
expect(textarea.innerHTML).toBe('default');
23+
});

core/src/index.test.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import renderer from 'react-test-renderer';
2+
import { screen, render, waitFor, fireEvent } from '@testing-library/react';
3+
import Login, { Render } from './';
4+
5+
it('renders <Login /> test case', () => {
6+
const component = renderer.create(<Login />);
7+
const tree = component.toJSON();
8+
expect(tree).toHaveProperty('type');
9+
expect(tree).toHaveProperty('props');
10+
expect(tree).toHaveProperty('children');
11+
expect(tree).toHaveProperty('type', 'div');
12+
expect(tree).toHaveProperty('props.className', 'login-page ');
13+
});

core/src/logo/Logo.test.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from '../';
3+
import Logo from './Logo';
4+
5+
it('renders <Logo /> test case', () => {
6+
render(
7+
<Login>
8+
<Render>{({ blocks, buttons, fields, $$index, extra }, data) => <div>{blocks.logo}</div>}</Render>
9+
<Login.Block keyname="logo" tagName="span">
10+
<Logo data-testid="logo" />
11+
</Login.Block>
12+
</Login>,
13+
);
14+
const logo = screen.getByTestId('logo') as unknown as SVGSVGElement;
15+
expect(logo.tagName).toBe('svg');
16+
expect(logo.getAttribute('height')).toBe('35');
17+
expect(logo.getAttribute('width')).toBe('93');
18+
expect(logo.getAttribute('viewBox')).toBe('0 0 249 95');
19+
});

core/src/logo/LogoRect.test.tsx

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { screen, render } from '@testing-library/react';
2+
import Login, { Render } from '../';
3+
import LogoRect from './LogoRect';
4+
5+
it('renders <LogoRect /> test case', () => {
6+
render(
7+
<Login>
8+
<Render>{({ blocks, buttons, fields, $$index, extra }, data) => <div>{blocks.logo}</div>}</Render>
9+
<Login.Block keyname="logo" tagName="span">
10+
<LogoRect data-testid="logo" />
11+
</Login.Block>
12+
</Login>,
13+
);
14+
const logo = screen.getByTestId('logo') as unknown as SVGSVGElement;
15+
expect(logo.tagName).toBe('svg');
16+
expect(logo.getAttribute('height')).toBe('28');
17+
expect(logo.getAttribute('width')).toBe('28');
18+
expect(logo.getAttribute('viewBox')).toBe('0 0 92 92');
19+
});

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
"start": "npm run-script start --workspace website",
1111
"build": "lerna exec --scope @react-login-page/* --scope react-login-page -- npm run build",
1212
"⬆️⬆️⬆️⬆️⬆️ package ⬆️⬆️⬆️⬆️⬆️": "▲▲▲▲▲ package ▲▲▲▲▲",
13+
"test": "lerna exec --scope react-login-page -- tsbb test",
14+
"coverage": "lerna exec --scope react-login-page -- tsbb test --coverage --bail",
1315
"version": "lerna version --exact --force-publish --no-push --no-git-tag-version",
1416
"prettier": "prettier --write '**/*.{js,jsx,tsx,ts,less,json}'",
1517
"hoist": "lerna bootstrap --hoist",

0 commit comments

Comments
 (0)