Skip to content

Commit 9440b14

Browse files
committed
test: add tests for realtime db
1 parent d0c9c3d commit 9440b14

File tree

10 files changed

+85
-45
lines changed

10 files changed

+85
-45
lines changed

dist/components/FirebaseApp.svelte

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<script>import { setFirebaseContext } from "../stores/sdk.js";
22
export let firestore;
3+
export let rtdb;
34
export let auth;
4-
setFirebaseContext({ firestore, auth });
5+
setFirebaseContext({ firestore, rtdb, auth });
56
</script>
67

78
<slot />

dist/components/FirebaseApp.svelte.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
import { SvelteComponent } from "svelte";
22
import type { Auth } from "firebase/auth";
33
import type { Firestore } from "firebase/firestore";
4+
import type { Database } from "firebase/database";
45
declare const __propDef: {
56
props: {
67
firestore: Firestore;
8+
rtdb: Database;
79
auth: Auth;
810
};
911
events: {

dist/index.d.ts

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
import Doc from './components/Doc.svelte';
2-
import User from './components/User.svelte';
3-
import Collection from './components/Collection.svelte';
4-
import FirebaseApp from './components/FirebaseApp.svelte';
5-
import SignedOut from './components/SignedOut.svelte';
6-
import SignedIn from './components/SignedIn.svelte';
7-
import { docStore } from './stores/firestore.js';
8-
import { collectionStore } from './stores/firestore.js';
9-
import { userStore } from './stores/auth.js';
10-
import { getFirebaseContext } from './stores/sdk.js';
11-
export { Doc, User, Collection, FirebaseApp, SignedOut, SignedIn, docStore, collectionStore, userStore, getFirebaseContext };
1+
import Doc from "./components/Doc.svelte";
2+
import User from "./components/User.svelte";
3+
import Collection from "./components/Collection.svelte";
4+
import Node from "./components/Node.svelte";
5+
import NodeList from "./components/NodeList.svelte";
6+
import FirebaseApp from "./components/FirebaseApp.svelte";
7+
import SignedOut from "./components/SignedOut.svelte";
8+
import SignedIn from "./components/SignedIn.svelte";
9+
import { docStore } from "./stores/firestore.js";
10+
import { collectionStore } from "./stores/firestore.js";
11+
import { nodeStore } from './stores/rtdb.js';
12+
import { nodeListStore } from './stores/rtdb.js';
13+
import { userStore } from "./stores/auth.js";
14+
import { getFirebaseContext } from "./stores/sdk.js";
15+
export { Doc, User, Collection, Node, NodeList, FirebaseApp, SignedOut, SignedIn, docStore, collectionStore, nodeStore as refStore, nodeListStore as listStore, userStore, getFirebaseContext };

dist/index.js

Lines changed: 28 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,30 @@
11
// Reexport your entry components here
2-
import User from './components/User.svelte';
3-
import Collection from './components/Collection.svelte';
4-
import Doc from './components/Doc.svelte';
5-
import FirebaseApp from './components/FirebaseApp.svelte';
6-
import SignedIn from './components/SignedIn.svelte';
7-
import SignedOut from './components/SignedOut.svelte';
8-
import { userStore } from './stores/auth.js';
9-
import { docStore, collectionStore } from './stores/firestore.js';
10-
import { getFirebaseContext } from './stores/sdk.js';
11-
2+
import FirebaseApp from "./components/FirebaseApp.svelte";
3+
import User from "./components/User.svelte";
4+
import Collection from "./components/Collection.svelte";
5+
import Doc from "./components/Doc.svelte";
6+
import NodeList from "./components/NodeList.svelte";
7+
import Node from "./components/Node.svelte";
8+
import SignedIn from "./components/SignedIn.svelte";
9+
import SignedOut from "./components/SignedOut.svelte";
10+
import { userStore } from "./stores/auth.js";
11+
import { docStore, collectionStore } from "./stores/firestore.js";
12+
import { nodeStore, nodeListStore } from './stores/rtdb.js';
13+
import { getFirebaseContext } from "./stores/sdk.js";
14+
1215
export {
13-
Doc,
14-
User,
15-
Collection,
16-
FirebaseApp,
17-
SignedOut,
18-
SignedIn,
19-
docStore,
20-
collectionStore,
21-
userStore,
22-
getFirebaseContext
23-
}
16+
Doc,
17+
User,
18+
Collection,
19+
Node,
20+
NodeList,
21+
FirebaseApp,
22+
SignedOut,
23+
SignedIn,
24+
docStore,
25+
collectionStore,
26+
nodeStore as refStore,
27+
nodeListStore as listStore,
28+
userStore,
29+
getFirebaseContext,
30+
};

dist/stores/sdk.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import type { Firestore } from "firebase/firestore";
2+
import type { Database } from "firebase/database";
23
import type { Auth } from "firebase/auth";
34
export interface FirebaseSDKContext {
45
auth?: Auth;
56
firestore?: Firestore;
7+
rtdb?: Database;
68
}
79
export declare const contextKey = "firebase";
810
export declare function setFirebaseContext(sdks: FirebaseSDKContext): void;

dist/stores/sdk.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { writable } from "svelte/store";
21
import { getContext, setContext } from "svelte";
32
export const contextKey = "firebase";
43
export function setFirebaseContext(sdks) {

src/routes/+page.svelte

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
<ul>
1616
<li data-testid="auth">Auth Context: {!!ctx.auth}</li>
1717
<li data-testid="firestore">Firestore Context: {!!ctx.firestore}</li>
18+
<li data-testid="rtdb">Realtime Database Context: {!!ctx.rtdb}</li>
1819
</ul>

src/routes/rtdb-test/+page.svelte

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<h2>Single Data Reference</h2>
2424

2525
<Node path="posts/test" let:data={post}>
26-
<p data-testid="ref-data">{post?.title}</p>
26+
<p data-testid="node-data">{post?.title}</p>
2727
<div slot="loading">
2828
<p data-testid="loading">Loading...</p>
2929
</div>
@@ -52,6 +52,6 @@
5252
{/each}
5353
</ul>
5454

55-
<button on:click={() => addPost(user.uid)}>Add Data</button>
55+
<button on:click={() => addPost(user.uid)}>Add Post</button>
5656
</NodeList>
5757
</SignedIn>

tests/main.test.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
import { expect, test } from '@playwright/test';
1+
import { expect, test } from "@playwright/test";
22

3-
test('SvelteFire app initializes properly', async ({ page }) => {
4-
await page.goto('/');
5-
expect(await page.textContent('h1')).toBe('Welcome to SvelteFire');
3+
test("SvelteFire app initializes properly", async ({ page }) => {
4+
await page.goto("/");
5+
expect(await page.textContent("h1")).toBe("Welcome to SvelteFire");
66
});
77

8-
test('Firebase SDK context is defined via FirebaseApp component', async ({ page }) => {
9-
await page.goto('/');
10-
await expect( page.getByTestId('auth')).toContainText('true');
11-
await expect( page.getByTestId('firestore')).toContainText('true');
12-
});
8+
test("Firebase SDK context is defined via FirebaseApp component", async ({
9+
page,
10+
}) => {
11+
await page.goto("/");
12+
await expect(page.getByTestId("auth")).toContainText("true");
13+
await expect(page.getByTestId("firestore")).toContainText("true");
14+
await expect(page.getByTestId("rtdb")).toContainText("true");
15+
});

tests/rtdb.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { expect, test } from "@playwright/test";
2+
3+
test("Renders a single node", async ({ page }) => {
4+
await page.goto("/rtdb-test");
5+
await expect(page.getByTestId("node-data")).toContainText("Hi Mom");
6+
});
7+
8+
test("Renders a list of nodes for an authenticated user in realtime", async ({
9+
page,
10+
}) => {
11+
await page.goto("/rtdb-test");
12+
13+
await page.click("text=Sign In");
14+
await expect(page.getByTestId("count")).toContainText("0 posts");
15+
(await page.waitForSelector("text=Add Post")).click();
16+
await expect(page.getByTestId("count")).toContainText("1 posts");
17+
(await page.waitForSelector("text=Add Post")).click();
18+
await expect(page.getByTestId("count")).toContainText("2 posts");
19+
expect((await page.$$("li")).length).toBe(2);
20+
expect(await page.textContent("li")).toContain("RTDB item");
21+
});

0 commit comments

Comments
 (0)