This repository has no description
1<script module lang="ts">
2 import { defineMeta, type StoryContext } from "@storybook/addon-svelte-csf";
3 import { expect } from "storybook/test";
4 import CloneDropdown from "./CloneDropdown.svelte";
5 import type { RepoInfo } from "./types";
6
7 const repo: RepoInfo = {
8 uri: "at://did:plc:repo/sh.tangled.repo.repo/3jzrepo",
9 rkey: "3jzrepo",
10 name: "tangled",
11 ownerDid: "did:plc:owner",
12 ownerHandle: "dawn",
13 repoDid: "did:plc:repo",
14 knot: "knot1.tangled.sh",
15 defaultBranch: "main"
16 };
17
18 const selfHostedRepo = { ...repo, knot: "https://git.example.test:8443" };
19 const repoWithoutDid = { ...repo, repoDid: undefined };
20 type PlayContext = Pick<StoryContext<Record<string, unknown>>, "canvas" | "userEvent">;
21
22 const openMenu = async ({ canvas, userEvent }: PlayContext) => {
23 await userEvent.click(canvas.getByRole("button", { name: "Clone this repository" }));
24 await expect(canvas.getByRole("menu")).toBeVisible();
25 };
26
27 const selectPermalink = async ({ canvas, userEvent }: PlayContext) => {
28 await openMenu({ canvas, userEvent });
29 await userEvent.click(canvas.getByRole("checkbox", { name: "Use permalink" }));
30 await expect(canvas.getByText("git@tangled.org:did:plc:repo")).toBeVisible();
31 };
32
33 const { Story } = defineMeta({
34 title: "Repo/CloneDropdown",
35 component: CloneDropdown,
36 tags: ["autodocs"],
37 args: {
38 repo,
39 ref: "main",
40 bobbinUrl: "https://bobbin.example.test"
41 }
42 });
43</script>
44
45<Story name="Opened clone menu" play={openMenu} />
46<Story name="Permalink URLs" play={selectPermalink} />
47<Story
48 name="Self-hosted knot normalizes SSH host"
49 args={{ repo: selfHostedRepo, ref: "feature/demo" }}
50/>
51<Story name="Repository without DID" args={{ repo: repoWithoutDid }} />