update e2e about test

pull/347/head
Dario Piotrowicz 2023-02-28 13:35:34 +00:00
rodzic 246edfc789
commit d15916ddd2
4 zmienionych plików z 57 dodań i 20 usunięć

Wyświetl plik

@ -7,6 +7,8 @@ import { createReply as createReplyInBackend } from 'wildebeest/backend/test/sha
import { createStatus } from 'wildebeest/backend/src/mastodon/status' import { createStatus } from 'wildebeest/backend/src/mastodon/status'
import type { APObject } from 'wildebeest/backend/src/activitypub/objects' import type { APObject } from 'wildebeest/backend/src/activitypub/objects'
import { type Database } from 'wildebeest/backend/src/database' import { type Database } from 'wildebeest/backend/src/database'
import { upsertRule } from 'wildebeest/functions/api/wb/settings/server/rules'
import { upsertServerSettings } from 'wildebeest/functions/api/wb/settings/server/server'
/** /**
* Run helper commands to initialize the database with actors, statuses, etc. * Run helper commands to initialize the database with actors, statuses, etc.
@ -41,6 +43,17 @@ export async function init(domain: string, db: Database) {
for (const reply of replies) { for (const reply of replies) {
await createReply(domain, db, reply, loadedStatuses) await createReply(domain, db, reply, loadedStatuses)
} }
await createServerData(db)
}
async function createServerData(db: Database) {
await upsertServerSettings(db, {
'extended description': 'this is a test wildebeest instance!',
})
await upsertRule(db, "don't be mean")
await upsertRule(db, "don't insult people")
await upsertRule(db, 'respect the rules')
} }
/** /**

Wyświetl plik

@ -5,6 +5,21 @@ import { type Database, getDatabase } from 'wildebeest/backend/src/database'
import { parse } from 'cookie' import { parse } from 'cookie'
import { isUserAdmin } from 'wildebeest/frontend/src/utils/isUserAdmin' import { isUserAdmin } from 'wildebeest/frontend/src/utils/isUserAdmin'
export const onRequestGet: PagesFunction<Env, any, ContextData> = async ({ env, request }) => {
return handleRequestPost(await getDatabase(env), request)
}
export async function handleRequestGet(db: Database) {
const query = `SELECT * from server_rules;`
const result = await db.prepare(query).all<{ id: string; text: string }>()
if (!result.success) {
return new Response('SQL error: ' + result.error, { status: 500 })
}
return new Response(JSON.stringify(result.results ?? []), { status: 200 })
}
export const onRequestPost: PagesFunction<Env, any, ContextData> = async ({ env, request }) => { export const onRequestPost: PagesFunction<Env, any, ContextData> = async ({ env, request }) => {
return handleRequestPost(await getDatabase(env), request) return handleRequestPost(await getDatabase(env), request)
} }

Wyświetl plik

@ -2,9 +2,9 @@ import type { Env } from 'wildebeest/backend/src/types/env'
import type { ContextData } from 'wildebeest/backend/src/types/context' import type { ContextData } from 'wildebeest/backend/src/types/context'
import * as errors from 'wildebeest/backend/src/errors' import * as errors from 'wildebeest/backend/src/errors'
import { type Database, getDatabase } from 'wildebeest/backend/src/database' import { type Database, getDatabase } from 'wildebeest/backend/src/database'
import { ServerBrandingData } from 'wildebeest/frontend/src/routes/(admin)/settings/server-settings/branding'
import { parse } from 'cookie' import { parse } from 'cookie'
import { isUserAdmin } from 'wildebeest/frontend/src/utils/isUserAdmin' import { isUserAdmin } from 'wildebeest/frontend/src/utils/isUserAdmin'
import { ServerSettingsData } from 'wildebeest/frontend/src/routes/(admin)/settings/server-settings/layout'
export const onRequestGet: PagesFunction<Env, any, ContextData> = async ({ env, request }) => { export const onRequestGet: PagesFunction<Env, any, ContextData> = async ({ env, request }) => {
return handleRequestPost(await getDatabase(env), request) return handleRequestPost(await getDatabase(env), request)
@ -42,23 +42,32 @@ export async function handleRequestPost(db: Database, request: Request) {
return errors.notAuthorized('Lacking authorization rights to edit server settings') return errors.notAuthorized('Lacking authorization rights to edit server settings')
} }
const data = await request.json<ServerBrandingData>() const data = await request.json<ServerSettingsData>()
const settingsEntries = Object.entries(data) const result = await upsertServerSettings(db, data)
if (result && !result.success) {
return new Response('SQL error: ' + result.error, { status: 500 })
}
return new Response('', { status: 200 })
}
export async function upsertServerSettings(db: Database, settings: Partial<ServerSettingsData>) {
const settingsEntries = Object.entries(settings)
if (!settingsEntries.length) {
return null
}
const query = ` const query = `
INSERT INTO server_settings (setting_name, setting_value) INSERT INTO server_settings (setting_name, setting_value)
VALUES ${settingsEntries.map(() => `(?, ?)`).join(', ')} VALUES ${settingsEntries.map(() => `(?, ?)`).join(', ')}
ON CONFLICT(setting_name) DO UPDATE SET setting_value=excluded.setting_value ON CONFLICT(setting_name) DO UPDATE SET setting_value=excluded.setting_value
` `
const result = await db
return await db
.prepare(query) .prepare(query)
.bind(...settingsEntries.flat()) .bind(...settingsEntries.flat())
.run() .run()
if (!result.success) {
return new Response('SQL error: ' + result.error, { status: 500 })
}
return new Response('', { status: 200 })
} }

Wyświetl plik

@ -11,28 +11,28 @@ test.skip('View of the about page', async ({ page }) => {
await expect(page.getByTestId('domain-text')).toHaveText('0.0.0.0') await expect(page.getByTestId('domain-text')).toHaveText('0.0.0.0')
await expect(page.getByTestId('social-text')).toHaveText('Decentralised social media powered by Mastodon') await expect(page.getByTestId('social-text')).toHaveText('Decentralised social media powered by Mastodon')
await expect(page.getByTestId('contact').getByText('Administered by:George 👍@george')).toBeVisible() // await expect(page.getByTestId('contact').getByText('Administered by: ...')).toBeVisible()
await expect(page.getByTestId('contact').getByText('contact:test@test.com')).toBeVisible() // await expect(page.getByTestId('contact').getByText('contact: ...')).toBeVisible()
await expect(page.getByRole('region').filter({ hasText: 'Please mind that the staff' })).not.toBeVisible() await expect(page.getByRole('region').filter({ hasText: 'this is a test wildebeest instance!' })).not.toBeVisible()
await page.getByRole('button', { name: 'About' }).click() await page.getByRole('button', { name: 'About' }).click()
await expect(page.getByRole('region').filter({ hasText: 'Please mind that the staff' })).toBeVisible() await expect(page.getByRole('region').filter({ hasText: 'this is a test wildebeest instance!' })).toBeVisible()
await page.getByRole('button', { name: 'About' }).click() await page.getByRole('button', { name: 'About' }).click()
await expect(page.getByRole('region').filter({ hasText: 'Please mind that the staff' })).not.toBeVisible() await expect(page.getByRole('region').filter({ hasText: 'this is a test wildebeest instance!' })).not.toBeVisible()
const getRuleLocator = (ruleId: string) => const getRuleLocator = (ruleId: string) =>
page.getByRole('listitem').filter({ has: page.getByText(ruleId, { exact: true }) }) page.getByRole('listitem').filter({ has: page.getByText(ruleId, { exact: true }) })
await expect(page.getByRole('listitem')).toHaveCount(0)
await expect(getRuleLocator('1')).not.toBeVisible() await expect(getRuleLocator('1')).not.toBeVisible()
await expect(getRuleLocator('2')).not.toBeVisible() await expect(getRuleLocator('2')).not.toBeVisible()
await expect(getRuleLocator('3')).not.toBeVisible() await expect(getRuleLocator('3')).not.toBeVisible()
await page.getByRole('button', { name: 'Server rules' }).click() await page.getByRole('button', { name: 'Server rules' }).click()
await expect(page.getByRole('listitem')).toHaveCount(3)
await expect(getRuleLocator('1')).toBeVisible() await expect(getRuleLocator('1')).toBeVisible()
await expect(getRuleLocator('1')).toContainText( await expect(getRuleLocator('1')).toContainText("don't be mean")
'Sexually explicit or violent media must be marked as sensitive when posting'
)
await expect(getRuleLocator('2')).toBeVisible() await expect(getRuleLocator('2')).toBeVisible()
await expect(getRuleLocator('2')).toContainText('No racism, sexism, homophobia, transphobia, xenophobia, or casteism') await expect(getRuleLocator('2')).toContainText("don't insult people")
await expect(getRuleLocator('3')).toBeVisible() await expect(getRuleLocator('3')).toBeVisible()
await expect(getRuleLocator('3')).toContainText('No incitement of violence or promotion of violent ideologies') await expect(getRuleLocator('3')).toContainText('respect the rules')
}) })