Skip to content

Commit d55c834

Browse files
committed
Add new unit tests and refactor async expectations
Added unit tests for Snippet, Clipboard, checkIfFlagExists function, and SdkModal components. Additionally, refactored end-to-end tests in feature-flags.spec.ts to correctly await asynchronous expectations to improve reliability and readability of tests.
1 parent 87b286b commit d55c834

File tree

5 files changed

+91
-6
lines changed

5 files changed

+91
-6
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import Clipboard from '../Clipboard';
2+
import { render } from '@testing-library/react';
3+
4+
describe('Clipboard', () => {
5+
test('Clipboard function', async () => {
6+
const text = 'test clipboard';
7+
8+
const { getByLabelText } = render(<Clipboard text={text} />);
9+
const clipboardButton = getByLabelText('Copy to clipboard');
10+
11+
expect(clipboardButton).toBeInTheDocument();
12+
});
13+
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { render, screen } from '@testing-library/react';
2+
import userEvent from '@testing-library/user-event';
3+
import SdkModal from '../SdkModal';
4+
5+
describe('SdkModal component', () => {
6+
test('should render modal correctly', async () => {
7+
const item = { name: 'Test Flag' };
8+
const closeSdkModal = jest.fn();
9+
render(<SdkModal item={item} closeSdkModal={closeSdkModal} />);
10+
11+
expect(
12+
screen.getByText(`SDK for feature flag: ${item.name}`),
13+
).toBeInTheDocument();
14+
15+
await userEvent.click(screen.getByLabelText('Close'));
16+
17+
expect(closeSdkModal).toHaveBeenCalled();
18+
});
19+
});
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { render, screen } from '@testing-library/react';
2+
import Snippet from '../Snippet';
3+
4+
describe('Snippet component', () => {
5+
it('renders without crashing', () => {
6+
const data = 'console.log(\'Hello, World!\')';
7+
const language = 'javascript';
8+
9+
render(<Snippet data={data} language={language} />);
10+
11+
expect(screen.getByText(/'Hello, World!'/)).toBeInTheDocument();
12+
});
13+
});
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { checkIfFlagExists } from './index';
2+
3+
describe('Function: checkIfFlagExists', () => {
4+
let flags;
5+
let flagName;
6+
7+
beforeEach(() => {
8+
flags = [
9+
{ id: 1, name: 'flag1', enabled: true },
10+
{ id: 2, name: 'flag2', enabled: false },
11+
{ id: 3, name: 'flag3', enabled: true },
12+
];
13+
14+
flagName = 'flag1';
15+
});
16+
17+
test('should return true if flag exists', async () => {
18+
const result = checkIfFlagExists(flags, flagName);
19+
expect(result).toBe(true);
20+
});
21+
22+
test('should return false if flag does not exist', async () => {
23+
flagName = 'nonExistentFlag';
24+
25+
const result = checkIfFlagExists(flags, flagName);
26+
expect(result).toBe(false);
27+
});
28+
29+
test('should return false when flags array is empty', async () => {
30+
flags = [];
31+
const result = checkIfFlagExists(flags, flagName);
32+
expect(result).toBe(false);
33+
});
34+
35+
test('should return false when flagName is empty', async () => {
36+
flagName = '';
37+
const result = checkIfFlagExists(flags, flagName);
38+
expect(result).toBe(false);
39+
});
40+
});

tests/e2e/feature-flags.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ test.describe('Feature flags', () => {
4848
expect(
4949
await page.getByLabel('Dismiss this notice').innerText()
5050
).toMatch(/Saved successfully!/);
51-
expect(
51+
await expect(
5252
page
5353
.locator('id=mr-feature-flag-item')
5454
.last()
@@ -66,13 +66,13 @@ test.describe('Feature flags', () => {
6666

6767
//Create another flag with same name should show error
6868
await AddNewFlagAndFill(page, 'testDuplicate');
69-
expect(page.getByText(ERROR_FLAG_EXISTS)).toBeVisible();
70-
expect(page.getByRole('button', { name: 'Save' })).toBeDisabled();
69+
await expect(page.getByText(ERROR_FLAG_EXISTS)).toBeVisible();
70+
await expect(page.getByRole('button', { name: 'Save' })).toBeDisabled();
7171

7272
//update flag name to be unique but still invalid
7373
await AddNewFlag(page, 'test duplicate');
74-
expect(page.getByText(ERROR_FLAG_INVALID)).toBeVisible();
75-
expect(page.getByRole('button', { name: 'Save' })).toBeDisabled();
74+
await expect(page.getByText(ERROR_FLAG_INVALID)).toBeVisible();
75+
await expect(page.getByRole('button', { name: 'Save' })).toBeDisabled();
7676

7777
expect(
7878
await page.getByLabel('Dismiss this notice').innerText()
@@ -90,7 +90,7 @@ test.describe('Feature flags', () => {
9090

9191
await OpenSdkModal(page);
9292

93-
expect(
93+
await expect(
9494
page.getByRole('heading', {
9595
name: `SDK for feature flag: ${flagName}`,
9696
})

0 commit comments

Comments
 (0)