Browse Source

refactor: wrap navbar component

so component can have ui tests
master
DanConwayDev 2 years ago
parent
commit
4b7087a2cf
No known key found for this signature in database
GPG Key ID: 68E15486D73F75E1
  1. BIN
      __snapshots__/navbar--default.png
  2. BIN
      __snapshots__/navbar--logged-in.png
  3. BIN
      __snapshots__/navbar--nip-07-loading.png
  4. 74
      __snapshots__/navbar.test.js.snap
  5. 15
      src/lib/components/Navbar.stories.svelte
  6. 22
      src/lib/components/Navbar.svelte
  7. 18
      src/lib/wrappers/Navbar.svelte
  8. 2
      src/routes/+layout.svelte

BIN
__snapshots__/navbar--default.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 8.3 KiB

BIN
__snapshots__/navbar--logged-in.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
__snapshots__/navbar--nip-07-loading.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

74
__snapshots__/navbar.test.js.snap

@ -21,8 +21,78 @@ exports[`Navbar Default smoke-test 1`] = `
</h4> </h4>
</div> </div>
<div class="navbar-end gap-4"> <div class="navbar-end gap-4">
<div class="btn normal-case btn-sm btn-ghost"> <div class="h-8 skeleton w-20">
Sign up </div>
</div>
</div>
</div>
</div>
</div>
`;
exports[`Navbar Logged in smoke-test 1`] = `
<div class="bg-base-400">
<div class="mx-auto lg:container">
<div class="px-3">
<div class="navbar">
<div class="navbar-start">
</div>
<div class="navbar-center">
<h4 class="align-middle text-sm font-mono">
<span class="text-primary">
git
</span>
<span class="text-primary">
workshop
</span>
<span class>
.net
</span>
</h4>
</div>
<div class="navbar-end gap-4">
<div class="flex my-2">
<div class="avatar flex-none">
<div class="w-8 h-8 rounded">
<img class="my-0"
src="../test-profile-image.jpg"
alt="DanConwayDev"
>
</div>
</div>
<div class="flex-auto pl-3 m-auto">
DanConwayDev
</div>
</div>
</div>
</div>
</div>
</div>
</div>
`;
exports[`Navbar NIP07 Loading smoke-test 1`] = `
<div class="bg-base-400">
<div class="mx-auto lg:container">
<div class="px-3">
<div class="navbar">
<div class="navbar-start">
</div>
<div class="navbar-center">
<h4 class="align-middle text-sm font-mono">
<span class="text-primary">
git
</span>
<span class="text-primary">
workshop
</span>
<span class>
.net
</span>
</h4>
</div>
<div class="navbar-end gap-4">
<div class="h-8 skeleton w-20">
</div> </div>
</div> </div>
</div> </div>

15
src/lib/components/Navbar.stories.svelte

@ -2,6 +2,7 @@
import type { Meta } from "@storybook/svelte"; import type { Meta } from "@storybook/svelte";
import Navbar from "$lib/components/Navbar.svelte"; import Navbar from "$lib/components/Navbar.svelte";
import { Story, Template } from "@storybook/addon-svelte-csf"; import { Story, Template } from "@storybook/addon-svelte-csf";
import { UserVectors } from "$lib/components/users/vectors";
export const meta: Meta<Navbar> = { export const meta: Meta<Navbar> = {
title: "Navbar", title: "Navbar",
@ -16,6 +17,16 @@
<Story name="Default" /> <Story name="Default" />
<Story name="NoNIP07" args={{ nip07plugin: false }} /> <Story name="NIP07 Loading" args={{ nip07_plugin: undefined }} />
<Story name="NIP07Exists" args={{ nip07plugin: true }} /> <Story name="NoNIP07" args={{ nip07_plugin: false }} />
<Story
name="NIP07Exists"
args={{ nip07_plugin: true, logged_in_user: undefined }}
/>
<Story
name="Logged in"
args={{ nip07_plugin: true, logged_in_user: { ...UserVectors.default } }}
/>

22
src/lib/components/Navbar.svelte

@ -1,15 +1,11 @@
<script lang="ts"> <script lang="ts">
import {
checkForNip07Plugin,
logged_in_user,
login,
nip07_plugin,
} from "$lib/stores/users";
import { onMount } from "svelte";
import Container from "./Container.svelte"; import Container from "./Container.svelte";
import UserHeader from "./users/UserHeader.svelte"; import UserHeader from "./users/UserHeader.svelte";
import type { User } from "./users/type";
onMount(checkForNip07Plugin); export let logged_in_user: User | undefined = undefined;
export let nip07_plugin: boolean | undefined = undefined;
export let login_function: Function = () => {};
</script> </script>
<div class="bg-base-400"> <div class="bg-base-400">
@ -24,14 +20,14 @@
</h4> </h4>
</div> </div>
<div class="navbar-end gap-4"> <div class="navbar-end gap-4">
{#if $logged_in_user} {#if logged_in_user}
<UserHeader user={$logged_in_user} /> <UserHeader user={logged_in_user} />
{:else if $nip07_plugin === undefined} {:else if nip07_plugin === undefined}
<div class="h-8 skeleton w-20"></div> <div class="h-8 skeleton w-20"></div>
{:else if $nip07_plugin} {:else if nip07_plugin}
<button <button
on:click={() => { on:click={() => {
login(); login_function();
}} }}
class="btn normal-case btn-sm btn-ghost">Login</button class="btn normal-case btn-sm btn-ghost">Login</button
> >

18
src/lib/wrappers/Navbar.svelte

@ -0,0 +1,18 @@
<script lang="ts">
import {
checkForNip07Plugin,
logged_in_user,
login,
nip07_plugin,
} from "$lib/stores/users";
import { onMount } from "svelte";
import Navbar from "$lib/components/Navbar.svelte";
onMount(checkForNip07Plugin);
</script>
<Navbar
logged_in_user={$logged_in_user}
nip07_plugin={$nip07_plugin}
login_function={login}
/>

2
src/routes/+layout.svelte

@ -1,6 +1,6 @@
<script> <script>
import "../app.css"; import "../app.css";
import Navbar from "$lib/components/Navbar.svelte"; import Navbar from "$lib/wrappers/Navbar.svelte";
</script> </script>
<Navbar /> <Navbar />

Loading…
Cancel
Save