0
Fork 0
mirror of https://github.com/TryGhost/Ghost.git synced 2025-01-20 22:42:53 -05:00
ghost/apps/admin-x-settings/test/acceptance/general/socialAccounts.test.ts
Djordje Vlaisavljevic bce8687004
Added nicer apostrophes (#21271)
ref https://linear.app/tryghost/issue/DES-814/replace-dumb-quotes-with-smart-quotes-in-admin

- Replaced “dumb” apostrophes with “smart” (or “curly”) apostrophes, see
http://quotesandaccents.com/
2024-10-10 10:11:19 +01:00

144 lines
4.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import {expect, test} from '@playwright/test';
import {globalDataRequests} from '../../utils/acceptance';
import {mockApi, testUrlValidation, updatedSettingsResponse} from '@tryghost/admin-x-framework/test/acceptance';
test.describe('Social account settings', async () => {
test('Supports editing social URLs', async ({page}) => {
const {lastApiRequests} = await mockApi({page, requests: {
...globalDataRequests,
editSettings: {method: 'PUT', path: '/settings/', response: updatedSettingsResponse([
{key: 'facebook', value: 'fb'},
{key: 'twitter', value: '@tw'}
])}
}});
await page.goto('/');
const section = page.getByTestId('social-accounts');
await expect(section.getByText('https://www.facebook.com/ghost')).toHaveCount(1);
await expect(section.getByText('https://x.com/ghost')).toHaveCount(1);
await section.getByRole('button', {name: 'Edit'}).click();
await section.getByLabel(`URL of your publications Facebook Page`).fill('https://www.facebook.com/fb');
await section.getByLabel('URL of your X (formerly Twitter) profile').fill('https://x.com/tw');
await section.getByRole('button', {name: 'Save'}).click();
await expect(section.getByLabel('URL of your X (formerly Twitter) profile')).toHaveCount(0);
await expect(section.getByText('https://www.facebook.com/fb')).toHaveCount(1);
await expect(section.getByText('https://x.com/tw')).toHaveCount(1);
expect(lastApiRequests.editSettings?.body).toEqual({
settings: [
{key: 'facebook', value: 'fb'},
{key: 'twitter', value: '@tw'}
]
});
});
test('Formats and validates the URLs', async ({page}) => {
await mockApi({page, requests: {
...globalDataRequests
}});
await page.goto('/');
const section = page.getByTestId('social-accounts');
await section.getByRole('button', {name: 'Edit'}).click();
const facebookInput = section.getByLabel(`URL of your publications Facebook Page`);
await testUrlValidation(
facebookInput,
'facebook.com/username',
'https://www.facebook.com/username'
);
await testUrlValidation(
facebookInput,
'testuser',
'https://www.facebook.com/testuser'
);
await testUrlValidation(
facebookInput,
'ab99',
'https://www.facebook.com/ab99'
);
await testUrlValidation(
facebookInput,
'page/ab99',
'https://www.facebook.com/page/ab99'
);
await testUrlValidation(
facebookInput,
'page/*(&*(%%))',
'https://www.facebook.com/page/*(&*(%%))'
);
await testUrlValidation(
facebookInput,
'facebook.com/pages/some-facebook-page/857469375913?ref=ts',
'https://www.facebook.com/pages/some-facebook-page/857469375913?ref=ts'
);
await testUrlValidation(
facebookInput,
'https://www.facebook.com/groups/savethecrowninn',
'https://www.facebook.com/groups/savethecrowninn'
);
await testUrlValidation(
facebookInput,
'http://github.com/username',
'http://github.com/username',
'The URL must be in a format like https://www.facebook.com/yourPage'
);
await testUrlValidation(
facebookInput,
'http://github.com/pages/username',
'http://github.com/pages/username',
'The URL must be in a format like https://www.facebook.com/yourPage'
);
const twitterInput = section.getByLabel('URL of your X (formerly Twitter) profile');
await testUrlValidation(
twitterInput,
'twitter.com/username',
'https://x.com/username'
);
await testUrlValidation(
twitterInput,
'testuser',
'https://x.com/testuser'
);
await testUrlValidation(
twitterInput,
'http://github.com/username',
'https://x.com/username'
);
await testUrlValidation(
twitterInput,
'*(&*(%%))',
'*(&*(%%))',
'The URL must be in a format like https://x.com/yourUsername'
);
await testUrlValidation(
twitterInput,
'thisusernamehasmorethan15characters',
'thisusernamehasmorethan15characters',
'Your Username is not a valid Twitter Username'
);
});
});