Skip to content

Commit

Permalink
SPSH 643 Test Gueltige Knoten in dem Dropdown Administrationsebene in…
Browse files Browse the repository at this point in the history
… Abhaengi… (#31)

* Test Gueltige Knoten in dem Dropdown Administrationsebene in Abhaengigkeit von der ausgewaehlten Rolle pruefen fertig

* Testfallbeschreibung angepasst
  • Loading branch information
jakobmadp authored May 16, 2024
1 parent 393edef commit 89f4458
Show file tree
Hide file tree
Showing 2 changed files with 118 additions and 0 deletions.
2 changes: 2 additions & 0 deletions pages/admin/PersonCreationView.page.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export class PersonCreationViewPage{
readonly page: Page;
readonly text_h2_PersonAnlegen: Locator;
readonly combobox_Rolle: Locator;
readonly combobox_Rolle_Clear: Locator;
readonly Input_Vorname: Locator;
readonly Input_Nachname: Locator;
readonly combobox_Schulstrukturknoten: Locator;
Expand All @@ -17,6 +18,7 @@ export class PersonCreationViewPage{
this.page = page;
this.text_h2_PersonAnlegen = page.getByTestId('layout-card-headline');
this.combobox_Rolle = page.getByTestId('rolle-select').locator('.v-field__input');
this.combobox_Rolle_Clear = page.getByTestId('rolle-select').getByLabel('Clear');
this.Input_Vorname = page.getByTestId('vorname-input').locator('.v-field__input');
this.Input_Nachname = page.getByTestId('familienname-input').locator('.v-field__input');
this.combobox_Schulstrukturknoten = page.getByTestId('organisation-select').locator('.v-field__input');
Expand Down
116 changes: 116 additions & 0 deletions tests/Person.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,120 @@ test.describe(`Testfälle für die Administration von Personen: Umgebung: ${proc
await expect(PersonManagementView.table_header_Klasse).toBeVisible();
})
})

test('Prüfung auf ungültige Organisationen bei Anlage Benutzer', async ({ page }) => {
// Bei Auswahl einer Rolle dürfen in dem Dropdown Administrationsebene nur Organisationen angezeigt werden, die für die Rolle auch gültig sind. Z.B dürfen für die Rolle Landesadmin nur die Organisationen mit Typ ROOT und LAND angezeigt werden.
const Landing = new LandingPage(page);
const Startseite = new StartPage(page);
const Login = new LoginPage(page);
const Menue = new MenuPage(page);
const PersonCreationView = new PersonCreationViewPage(page);

const Rolle_LANDESADMIN = 'Landesadmin';
const Rolle_LEHR = 'Lehrkraft';
const Rolle_LIV = 'LiV';
const Rolle_SCHULADMIN = 'Schuladmin';
const Rolle_SUS = 'SuS';

const TYP_ORGA_ROOT = 'ROOT'
const TYP_ORGA_LAND = 'LAND';
const TYP_ORGA_SCHULE = 'SCHULE';

await test.step(`Annmelden mit Benutzer ${ADMIN}`, async () => {
await page.goto(FRONTEND_URL);
await Landing.button_Anmelden.click();
await Login.login(ADMIN, PW);
await expect(Startseite.text_h2_Ueberschrift).toBeVisible();
})

await test.step(`Dialog Person anlegen öffnen`, async () => {
await Startseite.card_item_schulportal_administration.click();
await Menue.menueItem_BenutzerAnlegen.click();
await expect(PersonCreationView.text_h2_PersonAnlegen).toHaveText('Neuen Benutzer hinzufügen');
})

await test.step(`Rolle Landesadmin auswaehlen und verfügbare Einträge für die Organisationsebene prüfen(Gültige Organisationen: ROOT, LAND)`, async () => {
await PersonCreationView.combobox_Rolle.click();
await page.getByText(Rolle_LANDESADMIN).click();

const response_schulstrukturknoten = await page.waitForResponse((response) => response.url().includes("/api/personenkontext/schulstrukturknoten"));
const responseBody_schulstrukturknoten = await response_schulstrukturknoten.json();
let gueltig = true;

(responseBody_schulstrukturknoten.moeglicheSsks).forEach(element => {
if(!(element.typ === TYP_ORGA_ROOT) && !(element.typ === TYP_ORGA_LAND)) {
gueltig = false; // element hat eine Organisation mit einem ungültigen Typ
expect(gueltig).toBe(true); // Der Testfall wird auf failed gesetzt
}
});
})

await test.step(`Rolle Lehrkraft auswaehlen und verfügbare Einträge für die Organisationsebene prüfen(Gültige Organisationen: SCHULE)`, async () => {
await PersonCreationView.combobox_Rolle_Clear.click();
await PersonCreationView.combobox_Rolle.click();
await page.getByText(Rolle_LEHR).click();

const response_schulstrukturknoten = await page.waitForResponse((response) => response.url().includes("/api/personenkontext/schulstrukturknoten"));
const responseBody_schulstrukturknoten = await response_schulstrukturknoten.json();
let gueltig = true;

(responseBody_schulstrukturknoten.moeglicheSsks).forEach(element => {
if(!(element.typ === TYP_ORGA_SCHULE)) {
gueltig = false; // element hat eine Organisation mit einem ungültigen Typ
expect(gueltig).toBe(true); // Der Testfall wird auf failed gesetzt
}
});
})

await test.step(`Rolle LiV auswaehlen und verfügbare Einträge für die Organisationsebene prüfen(Gültige Organisationen: SCHULE)`, async () => {
await PersonCreationView.combobox_Rolle_Clear.click();
await PersonCreationView.combobox_Rolle.click();
await page.getByText(Rolle_LIV).click();

const response_schulstrukturknoten = await page.waitForResponse((response) => response.url().includes("/api/personenkontext/schulstrukturknoten"));
const responseBody_schulstrukturknoten = await response_schulstrukturknoten.json();
let gueltig = true;

(responseBody_schulstrukturknoten.moeglicheSsks).forEach(element => {
if(!(element.typ === TYP_ORGA_SCHULE)) {
gueltig = false; // element hat eine Organisation mit einem ungültigen Typ
expect(gueltig).toBe(true); // Der Testfall wird auf failed gesetzt
}
});
})

await test.step(`Rolle Schuladmin auswaehlen und verfügbare Einträge für die Organisationsebene prüfen(Gültige Organisationen: SCHULE)`, async () => {
await PersonCreationView.combobox_Rolle_Clear.click();
await PersonCreationView.combobox_Rolle.click();
await page.getByText(Rolle_SCHULADMIN).click();

const response_schulstrukturknoten = await page.waitForResponse((response) => response.url().includes("/api/personenkontext/schulstrukturknoten"));
const responseBody_schulstrukturknoten = await response_schulstrukturknoten.json();
let gueltig = true;

(responseBody_schulstrukturknoten.moeglicheSsks).forEach(element => {
if(!(element.typ === TYP_ORGA_SCHULE)) {
gueltig = false; // element hat eine Organisation mit einem ungültigen Typ
expect(gueltig).toBe(true); // Der Testfall wird auf failed gesetzt
}
});
})

await test.step(`Rolle SuS auswaehlen und verfügbare Einträge für die Organisationsebene prüfen(Gültige Organisationen: SCHULE)`, async () => {
await PersonCreationView.combobox_Rolle_Clear.click();
await PersonCreationView.combobox_Rolle.click();
await page.getByText(Rolle_SUS).click();

const response_schulstrukturknoten = await page.waitForResponse((response) => response.url().includes("/api/personenkontext/schulstrukturknoten"));
const responseBody_schulstrukturknoten = await response_schulstrukturknoten.json();
let gueltig = true;

(responseBody_schulstrukturknoten.moeglicheSsks).forEach(element => {
if(!(element.typ === TYP_ORGA_SCHULE)) {
gueltig = false; // element hat eine Organisation mit einem ungültigen Typ
expect(gueltig).toBe(true); // Der Testfall wird auf failed gesetzt
}
});
})
})
})

0 comments on commit 89f4458

Please sign in to comment.