Skip to content

Commit 7865a19

Browse files
committed
test: add tests for Readme component
1 parent 40df7bd commit 7865a19

File tree

2 files changed

+257
-0
lines changed

2 files changed

+257
-0
lines changed
Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
import path from 'path';
2+
import { render } from '@asyncapi/generator-react-sdk';
3+
import { Parser, fromFile } from '@asyncapi/parser';
4+
import { buildParams } from '@asyncapi/generator-helpers';
5+
import { Readme } from '../../src/components/readme/Readme';
6+
7+
const parser = new Parser();
8+
const asyncapi_websocket_query = path.resolve(__dirname, '../__fixtures__/asyncapi-v3.yml');
9+
10+
describe('Testing of Readme component', () => {
11+
let parsedAsyncAPIDocument;
12+
let params;
13+
14+
const languages = ['javascript', 'python'];
15+
16+
beforeAll(async () => {
17+
const parseResult = await fromFile(parser, asyncapi_websocket_query).parse();
18+
parsedAsyncAPIDocument = parseResult.document;
19+
20+
params = buildParams(
21+
'javascript',
22+
{ clientFileName: 'myClient.js' },
23+
'production'
24+
);
25+
});
26+
27+
languages.forEach((language) => {
28+
test(`render Readme with language = ${language}`, () => {
29+
const result = render(
30+
<Readme
31+
asyncapi={parsedAsyncAPIDocument}
32+
params={params}
33+
language={language}
34+
/>
35+
);
36+
37+
const actual = result.trim();
38+
expect(actual).toMatchSnapshot();
39+
});
40+
});
41+
42+
test('render Readme component when asyncapi is missing', () => {
43+
const renderReadme = () =>
44+
render(
45+
<Readme
46+
params={params}
47+
language="javascript"
48+
/>
49+
);
50+
51+
expect(renderReadme).toThrow(TypeError);
52+
});
53+
54+
test('render Readme component when params are missing', () => {
55+
const renderReadme = () =>
56+
render(
57+
<Readme
58+
asyncapi={parsedAsyncAPIDocument}
59+
language="javascript"
60+
/>
61+
);
62+
63+
expect(renderReadme).toThrow(TypeError);
64+
});
65+
66+
test('render Readme component when language is missing', () => {
67+
const renderReadme = () =>
68+
render(
69+
<Readme
70+
asyncapi={parsedAsyncAPIDocument}
71+
params={params}
72+
/>
73+
);
74+
75+
expect(renderReadme).toThrow(TypeError);
76+
});
77+
78+
test('render Readme with unsupported language', () => {
79+
const renderReadme = () =>
80+
render(
81+
<Readme
82+
asyncapi={parsedAsyncAPIDocument}
83+
params={params}
84+
language='dart'
85+
/>
86+
);
87+
88+
expect(renderReadme).toThrow(TypeError);
89+
});
90+
91+
test('render Readme when asyncapi is explicitly null', () => {
92+
const renderReadme = () =>
93+
render(
94+
<Readme
95+
asyncapi={null}
96+
params={params}
97+
language="javascript"
98+
/>
99+
);
100+
101+
expect(renderReadme).toThrow(TypeError);
102+
});
103+
104+
test('render Readme when params is explicitly null', () => {
105+
const renderReadme = () =>
106+
render(
107+
<Readme
108+
asyncapi={parsedAsyncAPIDocument}
109+
params={null}
110+
language="javascript"
111+
/>
112+
);
113+
114+
expect(renderReadme).toThrow(TypeError);
115+
});
116+
117+
test('render Readme when language is explicitly null', () => {
118+
const renderReadme = () =>
119+
render(
120+
<Readme
121+
asyncapi={parsedAsyncAPIDocument}
122+
params={params}
123+
language={null}
124+
/>
125+
);
126+
127+
expect(renderReadme).toThrow(TypeError);
128+
});
129+
130+
test('render Readme with empty string language', () => {
131+
const renderReadme = () =>
132+
render(
133+
<Readme
134+
asyncapi={parsedAsyncAPIDocument}
135+
params={params}
136+
language={''}
137+
/>
138+
);
139+
140+
expect(renderReadme).toThrow(TypeError);
141+
});
142+
});
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`Testing of Readme component render Readme with language = javascript 1`] = `
4+
"# Account Service
5+
6+
## Overview
7+
8+
This service is in charge of processing user signups
9+
10+
- **Version:** 1.0.0
11+
- **Server URL:** ws://api.example.com
12+
13+
14+
## Installation
15+
16+
Install dependencies:
17+
18+
\`\`\`bash
19+
npm install
20+
\`\`\`
21+
22+
23+
## Usage
24+
25+
\`\`\`javascript
26+
const AccountService = require('./myClient');
27+
const wsClient = new AccountService();
28+
29+
async function main() {
30+
try {
31+
await wsClient.connect();
32+
// use wsClient to send/receive messages
33+
await wsClient.close();
34+
} catch (error) {
35+
console.error('Failed to connect:', error);
36+
}
37+
}
38+
39+
main();
40+
\`\`\`
41+
42+
43+
## API
44+
45+
### \`connect()\`
46+
Establishes a WebSocket connection.
47+
48+
### \`registerMessageHandler(handlerFunction)\`
49+
Registers a callback for incoming messages.
50+
51+
### \`registerErrorHandler(handlerFunction)\`
52+
Registers a callback for connection errors.
53+
54+
### \`close()\`
55+
Closes the WebSocket connection.
56+
57+
58+
### Available Operations
59+
60+
#### \`sendUserSignedup(payload)\`"
61+
`;
62+
63+
exports[`Testing of Readme component render Readme with language = python 1`] = `
64+
"# Account Service
65+
66+
## Overview
67+
68+
This service is in charge of processing user signups
69+
70+
- **Version:** 1.0.0
71+
- **Server URL:** ws://api.example.com
72+
73+
74+
## Installation
75+
76+
Install dependencies:
77+
78+
\`\`\`bash
79+
pip install -r requirements.txt
80+
\`\`\`
81+
82+
83+
## Usage
84+
85+
\`\`\`python
86+
from myClient.js import AccountService
87+
88+
ws_client = AccountService()
89+
90+
async def main():
91+
await ws_client.connect()
92+
# use ws_client to send/receive messages
93+
await ws_client.close()
94+
\`\`\`
95+
96+
97+
## API
98+
99+
### \`connect()\`
100+
Establishes a WebSocket connection.
101+
102+
### \`register_message_handler(handler_function)\`
103+
Registers a callback for incoming messages.
104+
105+
### \`register_error_handler(handler_function)\`
106+
Registers a callback for connection errors.
107+
108+
### \`close()\`
109+
Closes the WebSocket connection.
110+
111+
112+
### Available Operations
113+
114+
#### \`sendUserSignedup(payload)\`"
115+
`;

0 commit comments

Comments
 (0)