This commit is contained in:
@@ -773,3 +773,83 @@ test.describe('Historia cen', () => {
|
||||
await expect(page.locator('.history-chart-empty')).toContainText('Wybierz lokalizację');
|
||||
});
|
||||
});
|
||||
|
||||
// Minimalizacja danych (art. 5 ust. 1 lit. c RODO): w ustawieniach konta zbieramy tylko to,
|
||||
// czego uzywa jakas funkcja serwisu. Data urodzenia zniknela calkowicie, adres zostal firmom.
|
||||
test.describe('Zakres danych w ustawieniach konta', () => {
|
||||
test('konto prywatne nie ma daty urodzenia ani adresu zamieszkania', async ({ page }) => {
|
||||
await login(page);
|
||||
await goto(page, ROUTES.accountSettings);
|
||||
|
||||
await expect(page.getByText('Data urodzenia')).toHaveCount(0);
|
||||
await expect(page.getByText('Adres zamieszkania')).toHaveCount(0);
|
||||
await expect(page.getByText('Adres siedziby')).toHaveCount(0);
|
||||
// Pola, ktore maja zastosowanie, zostaja na miejscu.
|
||||
await expect(page.getByText('Numer telefonu').first()).toBeVisible();
|
||||
});
|
||||
|
||||
test('backend nie zapisze adresu przyslanego z konta prywatnego', async ({ page }) => {
|
||||
await login(page);
|
||||
const token = await page.evaluate(() => window.localStorage.getItem('polskalokalnie-auth-token'));
|
||||
expect(token).toBeTruthy();
|
||||
|
||||
const me = await page.request.get('/api/auth/me', { headers: { Authorization: `Bearer ${token}` } }).then((r) => r.json());
|
||||
expect(me.accountType).toBe('PERSONAL');
|
||||
|
||||
const updated = await page.request.put('/api/auth/me', {
|
||||
headers: { Authorization: `Bearer ${token}` },
|
||||
data: {
|
||||
fullName: me.fullName,
|
||||
phone: me.phone ?? undefined,
|
||||
address: 'ul. Podrzucona 1, Warszawa',
|
||||
contactPreference: me.contactPreference,
|
||||
preferredLanguage: me.preferredLanguage,
|
||||
},
|
||||
}).then((r) => r.json());
|
||||
|
||||
expect(updated.address).toBeNull();
|
||||
// Data urodzenia nie jest juz czescia profilu w API.
|
||||
expect(updated.birthDate).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
// Przelaczniki powiadomien maja realnie sterowac lista na /powiadomienia - nie byc ozdoba.
|
||||
test.describe('Ustawienia powiadomien', () => {
|
||||
test('w karcie nie ma martwych przelacznikow', async ({ page }) => {
|
||||
await login(page);
|
||||
await goto(page, ROUTES.accountSettings);
|
||||
|
||||
const card = page.locator('section[aria-label="Powiadomienia"]');
|
||||
await expect(card).toBeVisible();
|
||||
await expect(card).not.toContainText('Wkrótce');
|
||||
// Kazdy przelacznik w karcie da sie klikac.
|
||||
const switches = card.getByRole('switch');
|
||||
await expect(switches).toHaveCount(5);
|
||||
for (let index = 0; index < 5; index += 1) {
|
||||
await expect(switches.nth(index)).toBeEnabled();
|
||||
}
|
||||
// Naglowek prowadzi na liste powiadomien.
|
||||
await card.getByRole('link', { name: 'listę powiadomień' }).click();
|
||||
await expect(page).toHaveURL(new RegExp(`${ROUTES.notifications}$`));
|
||||
});
|
||||
|
||||
test('wylaczenie zapisanych wyszukiwan przezywa odswiezenie', async ({ page }) => {
|
||||
await login(page);
|
||||
await goto(page, ROUTES.accountSettings);
|
||||
|
||||
const row = page.locator('.toggle-row').filter({ hasText: 'Nowe oferty z zapisanych wyszukiwań' });
|
||||
const toggle = row.getByRole('switch');
|
||||
const wasOn = await toggle.getAttribute('aria-checked');
|
||||
|
||||
await toggle.click();
|
||||
await page.waitForTimeout(700);
|
||||
await page.reload();
|
||||
await page.waitForTimeout(1200);
|
||||
await expect(page.locator('.toggle-row').filter({ hasText: 'Nowe oferty z zapisanych wyszukiwań' }).getByRole('switch'))
|
||||
.toHaveAttribute('aria-checked', wasOn === 'true' ? 'false' : 'true');
|
||||
|
||||
// Sprzatanie: wracamy do stanu sprzed testu.
|
||||
await page.locator('.toggle-row').filter({ hasText: 'Nowe oferty z zapisanych wyszukiwań' }).getByRole('switch').click();
|
||||
await page.waitForTimeout(700);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user