From a9c5122615e20422b41ae176d2ff7095c6b67407 Mon Sep 17 00:00:00 2001
From: MapleLeaf <19603573+itsMapleLeaf@users.noreply.github.com>
Date: Sun, 19 Dec 2021 23:28:20 -0600
Subject: [PATCH] embed author + some refactors
---
.../tests/rendering.test.tsx | 153 +++++++++++-------
packages/reacord/src/base-instance.ts | 6 +-
packages/reacord/src/embed-author.tsx | 35 ++++
packages/reacord/src/embed.tsx | 21 ++-
packages/reacord/src/main.ts | 1 +
packages/reacord/src/root.ts | 2 +
packages/reacord/src/text-instance.ts | 6 +-
packages/reacord/src/text.tsx | 6 +-
8 files changed, 171 insertions(+), 59 deletions(-)
create mode 100644 packages/reacord/src/embed-author.tsx
diff --git a/packages/integration-tests/tests/rendering.test.tsx b/packages/integration-tests/tests/rendering.test.tsx
index e8098f7..fe4bff4 100644
--- a/packages/integration-tests/tests/rendering.test.tsx
+++ b/packages/integration-tests/tests/rendering.test.tsx
@@ -4,7 +4,8 @@ import type { ExecutionContext } from "ava"
import test from "ava"
import type { Message } from "discord.js"
import { Client, TextChannel } from "discord.js"
-import { createRoot, Embed, Text } from "reacord"
+import type { ReacordRoot } from "reacord"
+import { createRoot, Embed, EmbedAuthor, Text } from "reacord"
import { pick } from "reacord-helpers/pick.js"
import { raise } from "reacord-helpers/raise.js"
import React from "react"
@@ -15,8 +16,9 @@ const client = new Client({
})
let channel: TextChannel
+let root: ReacordRoot
-test.before(async () => {
+test.serial.before(async () => {
await client.login(testBotToken)
const result =
@@ -29,26 +31,80 @@ test.before(async () => {
}
channel = result
+ root = createRoot(channel)
+
+ for (const [, message] of await channel.messages.fetch()) {
+ await message.delete()
+ }
})
test.after(() => {
client.destroy()
})
-test.beforeEach(async () => {
- const messages = await channel.messages.fetch()
- await Promise.all(messages.map((message) => message.delete()))
+// test.serial.beforeEach(async () => {
+// const messages = await channel.messages.fetch()
+// await Promise.all(messages.map((message) => message.delete()))
+// })
+
+test.serial("rapid updates", async (t) => {
+ // rapid updates
+ void root.render("hi world")
+ void root.render("hi the")
+ await root.render("hi moon")
+ await assertMessages(t, [{ content: "hi moon" }])
})
-test.serial("kitchen sink + destroy", async (t) => {
- const root = createRoot(channel)
+test.serial("nested text", async (t) => {
+ await root.render(
+
+ hi world{" "}
+
+ hi moon hi sun
+
+ ,
+ )
+ await assertMessages(t, [{ content: "hi world hi moon hi sun" }])
+})
+test.serial("empty embed fallback", async (t) => {
+ await root.render()
+ await assertMessages(t, [{ embeds: [{ description: "_ _" }] }])
+})
+
+test.serial("embed with only author", async (t) => {
+ await root.render(
+ ,
+ )
+ await assertMessages(t, [
+ { embeds: [{ description: "_ _", author: { name: "only author" } }] },
+ ])
+})
+
+test.serial("empty embed author", async (t) => {
+ await root.render(
+ ,
+ )
+ await assertMessages(t, [{ embeds: [{ description: "_ _" }] }])
+})
+
+test.serial("kitchen sink", async (t) => {
await root.render(
<>
message content
no space