Skip to content

Commit ba0aec6

Browse files
committed
test: update muxing logic
1 parent 0938089 commit ba0aec6

File tree

2 files changed

+68
-71
lines changed

2 files changed

+68
-71
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,104 @@
1-
import { render } from "@/lib/test-utils";
2-
import { screen, waitFor } from "@testing-library/react";
3-
import { WorkspaceMuxingModel } from "../workspace-muxing-model";
4-
import userEvent from "@testing-library/user-event";
1+
import { render } from '@/lib/test-utils'
2+
import { screen, waitFor } from '@testing-library/react'
3+
import { WorkspaceMuxingModel } from '../workspace-muxing-model'
4+
import userEvent from '@testing-library/user-event'
55

66
test('renders muxing model', async () => {
77
render(
8-
<WorkspaceMuxingModel isArchived={false} workspaceName="fake-workspace" />,
9-
);
10-
expect(screen.getByText(/model muxing/i)).toBeVisible();
8+
<WorkspaceMuxingModel isArchived={false} workspaceName="fake-workspace" />
9+
)
10+
expect(screen.getByText(/model muxing/i)).toBeVisible()
1111
expect(
1212
screen.getByText(
13-
/select the model you would like to use in this workspace. This section applies only if you are using the MUX endpoint./i,
14-
),
15-
).toBeVisible();
13+
/select the model you would like to use in this workspace. This section applies only if you are using the MUX endpoint./i
14+
)
15+
).toBeVisible()
1616
expect(
17-
screen.getByRole("link", {
17+
screen.getByRole('link', {
1818
name: /learn more/i,
19-
}),
20-
).toBeVisible();
19+
})
20+
).toBeVisible()
2121

2222
await userEvent.type(
23-
screen.getByRole("textbox", {
23+
screen.getByRole('textbox', {
2424
name: /filter by/i,
2525
}),
26-
".tsx",
27-
);
26+
'.tsx'
27+
)
2828

29-
await userEvent.click(screen.getByTestId(/workspace-models-dropdown/i));
29+
await userEvent.click(screen.getByTestId(/workspace-models-dropdown/i))
3030
await userEvent.click(
31-
screen.getByRole("option", {
31+
screen.getByRole('option', {
3232
name: /claude-3.6/i,
33-
}),
34-
);
33+
})
34+
)
3535

36-
expect(screen.getByRole("button", { name: /add filter/i })).toBeVisible();
37-
expect(screen.getByRole("link", { name: /manage providers/i })).toBeVisible();
38-
expect(screen.getByRole("button", { name: /revert changes/i })).toBeVisible();
39-
expect(screen.getByRole("button", { name: /save/i })).toBeVisible();
40-
});
36+
expect(screen.getByRole('button', { name: /add filter/i })).toBeVisible()
37+
expect(screen.getByRole('link', { name: /manage providers/i })).toBeVisible()
38+
expect(screen.getByRole('button', { name: /revert changes/i })).toBeVisible()
39+
expect(screen.getByRole('button', { name: /save/i })).toBeVisible()
40+
})
4141

42-
test("disabled muxing fields and buttons for archived workspace", async () => {
42+
test('disabled muxing fields and buttons for archived workspace', async () => {
4343
render(
44-
<WorkspaceMuxingModel isArchived={true} workspaceName="fake-workspace" />,
45-
);
44+
<WorkspaceMuxingModel isArchived={true} workspaceName="fake-workspace" />
45+
)
4646

47-
expect(await screen.findByRole("button", { name: /save/i })).toBeDisabled();
48-
expect(screen.getByTestId(/workspace-models-dropdown/i)).toBeDisabled();
47+
expect(await screen.findByRole('button', { name: /save/i })).toBeDisabled()
48+
expect(screen.getByTestId(/workspace-models-dropdown/i)).toBeDisabled()
4949
expect(
50-
await screen.findByRole("button", { name: /add filter/i }),
51-
).toBeDisabled();
52-
});
50+
await screen.findByRole('button', { name: /add filter/i })
51+
).toBeDisabled()
52+
})
5353

54-
test("submit additional model overrides", async () => {
54+
test('submit additional model overrides', async () => {
5555
render(
56-
<WorkspaceMuxingModel isArchived={false} workspaceName="fake-workspace" />,
57-
);
56+
<WorkspaceMuxingModel isArchived={false} workspaceName="fake-workspace" />
57+
)
5858

59-
expect(screen.getAllByRole("textbox", { name: /filter by/i }).length).toEqual(
60-
1,
61-
);
62-
await userEvent.type(
63-
screen.getByRole("textbox", {
64-
name: /filter by/i,
65-
}),
66-
".tsx",
67-
);
68-
await userEvent.click(screen.getByTestId(/workspace-models-dropdown/i));
59+
expect(screen.getAllByRole('textbox', { name: /filter by/i }).length).toEqual(
60+
1
61+
)
62+
63+
await userEvent.click(screen.getByTestId(/workspace-models-dropdown/i))
6964
await userEvent.click(
70-
screen.getByRole("option", {
65+
screen.getByRole('option', {
7166
name: /claude-3.6/i,
72-
}),
73-
);
74-
75-
await userEvent.click(screen.getByRole("button", { name: /add filter/i }));
67+
})
68+
)
69+
await waitFor(() => {
70+
expect(screen.getByText(/claude-3.6/i)).toBeVisible()
71+
})
7672

77-
const textFields = await screen.findAllByRole("textbox", {
73+
await userEvent.click(screen.getByRole('button', { name: /add filter/i }))
74+
const textFields = await screen.findAllByRole('textbox', {
7875
name: /filter by/i,
79-
});
80-
expect(textFields.length).toEqual(2);
76+
})
77+
expect(textFields.length).toEqual(2)
8178
const modelsButton = await screen.findAllByTestId(
82-
/workspace-models-dropdown/i,
83-
);
84-
expect(modelsButton.length).toEqual(2);
79+
/workspace-models-dropdown/i
80+
)
81+
expect(modelsButton.length).toEqual(2)
82+
83+
await userEvent.type(textFields[1] as HTMLFormElement, '.ts')
8584

86-
await userEvent.type(textFields[1] as HTMLFormElement, ".ts");
8785
await userEvent.click(
88-
(await screen.findByRole("button", {
86+
(await screen.findByRole('button', {
8987
name: /select a model/i,
90-
})) as HTMLFormElement,
91-
);
88+
})) as HTMLFormElement
89+
)
9290

9391
await userEvent.click(
94-
screen.getByRole("option", {
92+
screen.getByRole('option', {
9593
name: /chatgpt-4p/i,
96-
}),
97-
);
94+
})
95+
)
9896

9997
await userEvent.click(screen.getByRole('button', { name: /save/i }))
10098

10199
await waitFor(() => {
102100
expect(
103-
screen.getByText(/muxing rules for fake-workspace updated/i),
104-
).toBeVisible();
105-
});
106-
});
101+
screen.getByText(/muxing rules for fake-workspace updated/i)
102+
).toBeVisible()
103+
})
104+
})

src/features/workspace/components/workspace-models-dropdown.tsx

+2-3
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ function groupModelsByProviderName(
4646
}
4747

4848
;(providerData?.items ?? []).push({
49-
id: `${item.provider_id}_${item.name}`,
49+
id: `${item.provider_id}/${item.name}`,
5050
textValue: item.name,
5151
})
5252

@@ -90,7 +90,6 @@ export function WorkspaceModelsDropdown({
9090
const [isOpen, setIsOpen] = useState(false)
9191
const [searchItem, setSearchItem] = useState('')
9292
const groupedModels = groupModelsByProviderName(models)
93-
console.log({ groupedModels, rule: rule })
9493
const currentProvider = models.find((p) => p.provider_id === rule.provider_id)
9594
const currentModel =
9695
currentProvider && rule.model
@@ -130,7 +129,7 @@ export function WorkspaceModelsDropdown({
130129
const selectedValue = v.values().next().value
131130
if (!selectedValue && typeof selectedValue !== 'string') return
132131
if (typeof selectedValue === 'string') {
133-
const [provider_id, modelName] = selectedValue.split('_')
132+
const [provider_id, modelName] = selectedValue.split('/')
134133
if (!provider_id || !modelName) return
135134
onChange({
136135
model: modelName,

0 commit comments

Comments
 (0)