0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-02-03 23:00:14 -05:00
ghost/apps/admin-x-settings/test/e2e/membership/stripe.test.ts
Jono M 05e6588832
Wired up AdminX Labs settings (#17844)
refs https://github.com/TryGhost/Product/issues/3745

---

This pull request adds and refactors several components and hooks for
the labs and advanced settings in the admin app. It introduces feature
flags for alpha and beta features, and allows the user to upload and
download redirects, routes and content files.
2023-08-28 16:24:03 +01:00

89 lines
3.7 KiB
TypeScript

import {expect, test} from '@playwright/test';
import {globalDataRequests, mockApi, responseFixtures, updatedSettingsResponse} from '../../utils/e2e';
test.describe('Stripe settings', async () => {
test('Supports the Stripe Connect flow', async ({page}) => {
const {lastApiRequests} = await mockApi({page, requests: {
...globalDataRequests,
editSettings: {method: 'PUT', path: '/settings/', response: updatedSettingsResponse([
{key: 'stripe_connect_account_name', value: 'Dummy'},
{key: 'stripe_connect_livemode', value: false},
{key: 'stripe_connect_account_id', value: 'acct_123'},
{key: 'stripe_connect_publishable_key', value: 'pk_test_123'},
{key: 'stripe_connect_secret_key', value: 'sk_test_123'}
])}
}});
await page.goto('/');
const section = page.getByTestId('tiers');
await section.getByRole('button', {name: 'Connect with Stripe'}).click();
const modal = page.getByTestId('stripe-modal');
await modal.getByRole('button', {name: /I have a Stripe account/}).click();
await expect(modal.locator('a', {hasText: 'Connect with Stripe'})).toHaveAttribute('href', '/ghost/api/admin/members/stripe_connect?mode=live');
await modal.getByLabel('Test mode').check();
await expect(modal.locator('a', {hasText: 'Connect with Stripe'})).toHaveAttribute('href', '/ghost/api/admin/members/stripe_connect?mode=test');
await modal.getByPlaceholder('Paste your secure key here').fill('token_test');
await modal.getByRole('button', {name: 'Save Stripe settings'}).click();
await expect(modal.getByText('You are connected with Stripe!')).toHaveCount(1);
await modal.getByRole('button', {name: 'Close'}).click();
await expect(modal).toHaveCount(0);
await expect(section.getByText('Connected to Stripe')).toHaveCount(1);
// We actually do two settings update requests here, this just checks the last one
expect(lastApiRequests.editSettings?.body).toEqual({
settings: [{
key: 'portal_plans',
value: '["free","monthly","yearly"]'
}]
});
});
test('Supports updating Stripe Direct settings', async ({page}) => {
const {lastApiRequests} = await mockApi({page, requests: {
...globalDataRequests,
browseConfig: {method: 'GET', path: '/config/', response: {
config: {
...responseFixtures.config.config,
stripeDirect: true
}
}},
editSettings: {method: 'PUT', path: '/settings/', response: updatedSettingsResponse([
{key: 'stripe_publishable_key', value: 'pk_test_123'},
{key: 'stripe_secret_key', value: 'sk_test_123'}
])}
}});
await page.goto('/');
const section = page.getByTestId('tiers');
await section.getByRole('button', {name: 'Connect with Stripe'}).click();
const modal = page.getByTestId('stripe-modal');
await modal.getByLabel('Publishable key').fill('pk_test_123');
await modal.getByLabel('Secure key').fill('sk_test_123');
await modal.getByRole('button', {name: 'Save Stripe settings'}).click();
await expect(modal).toHaveCount(0);
await expect(section.getByText('Connected to Stripe')).toHaveCount(1);
expect(lastApiRequests.editSettings?.body).toEqual({
settings: [{
key: 'stripe_secret_key',
value: 'sk_test_123'
}, {
key: 'stripe_publishable_key',
value: 'pk_test_123'
}]
});
});
});