fix: pass query params to dynamic meetings (#14920)

This commit is contained in:
sean-brydon
2024-05-08 09:53:07 +00:00
committed by GitHub
parent f812d92045
commit f0e59c2331
3 changed files with 35 additions and 1 deletions
@@ -104,11 +104,13 @@ export const getServerSideProps: GetServerSideProps<UserPageProps> = async (cont
if (isDynamicGroup) {
const destinationUrl = `/${usernameList.join("+")}/dynamic`;
const originalQueryString = new URLSearchParams(context.query as Record<string, string>).toString();
const destinationWithQuery = `${destinationUrl}?${originalQueryString}`;
log.debug(`Dynamic group detected, redirecting to ${destinationUrl}`);
return {
redirect: {
permanent: false,
destination: destinationUrl,
destination: destinationWithQuery,
},
} as const;
}
@@ -62,6 +62,36 @@ test("dynamic booking", async ({ page, users }) => {
});
});
test("dynamic booking info prefilled by query params", async ({ page, users }) => {
const pro = await users.create();
await pro.apiLogin();
let duration = 15;
const free = await users.create({ username: "free.example" });
await page.goto(`/${pro.username}+${free.username}?duration=${duration}`);
await page.waitForLoadState("networkidle");
const badgeByDurationTestId = (duration: number) => `multiple-choice-${duration}mins`;
let badgeLocator = await page.getByTestId(badgeByDurationTestId(duration));
let activeState = await badgeLocator.getAttribute("data-active");
expect(activeState).toEqual("true");
duration = 30;
await page.goto(`/${pro.username}+${free.username}?duration=${duration}`);
badgeLocator = await page.getByTestId(badgeByDurationTestId(duration));
activeState = await badgeLocator.getAttribute("data-active");
expect(activeState).toEqual("true");
// Check another badge just to ensure its not selected
badgeLocator = await page.getByTestId(badgeByDurationTestId(15));
activeState = await badgeLocator.getAttribute("data-active");
expect(activeState).toEqual("false");
});
test.describe("Organization:", () => {
test.afterEach(({ orgs, users }) => {
orgs.deleteAll();
@@ -65,6 +65,8 @@ export const EventDuration = ({ event }: { event: PublicEvent }) => {
.filter((dur) => state !== "booking" || dur === selectedDuration)
.map((duration) => (
<Badge
data-testId={`multiple-choice-${duration}mins`}
data-active={selectedDuration === duration ? "true" : "false"}
variant="gray"
className={classNames(selectedDuration === duration && "bg-brand-default text-brand")}
size="md"