Skip to content
Snippets Groups Projects
Commit 1f12565b authored by OZGCloud's avatar OZGCloud
Browse files

Merge branch 'master' into OZG-5294-HideCloseButtons

parents 14010e8a 56439e79
No related branches found
No related tags found
No related merge requests found
Showing
with 147 additions and 102 deletions
......@@ -39,12 +39,15 @@ export class VorgangBescheidWizardE2EComponent {
private readonly stepButton3: string = 'step-3-button';
private readonly closeButton: string = 'close-bescheid';
private readonly closeDialog: string = 'bescheid-close-dialog';
private readonly bescheidResultBox: string = 'bescheiden-result';
private readonly bescheidVerwerfenButton: string =
'bescheiderstellung-abbrechen-entwurf-verwerfen';
private readonly bescheidSpeichernButton: string =
'bescheiderstellung-abbrechen-entwurf-speichern';
private readonly uploadBescheidFile: string = '-single-file-upload-button';
private readonly uploadAttachment: string = 'Attachment_hochladen-file-upload-button';
private readonly saveBescheid: string = 'save-button';
private readonly confirmAndSaveButton: string = 'confirm-and-save-button';
private readonly fileBescheidValid: string = 'Bescheid_validpdf-file-item';
private readonly fileAnhangValid: string = 'Anhang_validpdf-file-item';
......@@ -141,11 +144,11 @@ export class VorgangBescheidWizardE2EComponent {
}
public getFileBescheidValid() {
return cy.getTestElement(this.fileBescheidValid);
return cy.getTestElement(this.locatorRoot).find(`[data-test-id=${this.fileBescheidValid}]`);
}
public getFileAnhangValid() {
return cy.getTestElement(this.fileAnhangValid);
return cy.getTestElement(this.locatorRoot).find(`[data-test-id=${this.fileAnhangValid}]`);
}
public getDeleteButtonOfElement(element: string) {
......@@ -171,4 +174,16 @@ export class VorgangBescheidWizardE2EComponent {
public getAttachmentUploadSpinner() {
return cy.get(this.attachmentUploadSpinner);
}
public getSaveButton() {
return cy.getTestElement(this.saveBescheid);
}
public getResultBox() {
return cy.getTestElement(this.bescheidResultBox);
}
public getConfirmAndSaveButton() {
return cy.getTestElement(this.confirmAndSaveButton);
}
}
......@@ -42,6 +42,7 @@ describe('Bescheid Wizard', () => {
const documentError: string = 'Erlaubte Dateiendungen';
const sizeError: string = 'Anhänge größer';
const missingBescheidError: string = 'Bitte fügen Sie';
before(() => {
initVorgaenge([bescheidVorgang]);
......@@ -136,4 +137,11 @@ describe('Bescheid Wizard', () => {
contains(bescheidWizard.getAttachmentDocument(), sizeError);
});
});
describe('do not continue without attached Bescheid', () => {
it('should show error if no Bescheid is attached and step 3 is clicked', () => {
bescheidWizard.getWeiterButton().click();
contains(bescheidWizard.getBescheidDocument(), missingBescheidError);
});
});
});
import { registerLocaleData } from '@angular/common';
import localeDe from '@angular/common/locales/de';
import localeDeExtra from '@angular/common/locales/extra/de';
import { VorgangBescheidWizardE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-bescheid-wizard.e2e.component';
import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
import {
VorgangE2E,
VorgangStatusE2E,
vorgangStatusLabelE2E,
} from 'apps/alfa-e2e/src/model/vorgang';
import { uploadFile } from 'apps/alfa-e2e/src/support/file-upload';
import { getAdjustedDateGerman } from 'apps/alfa-e2e/src/support/tech.util';
import 'cypress-real-events/support';
import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
import { VorgangPage } from '../../../page-objects/vorgang.po';
import { dropCollections } from '../../../support/cypress-helper';
import { contains, enterWith, exist, haveText, notExist } from '../../../support/cypress.util';
import {
TEST_FILE_BESCHEID_ANHANG_VALID,
TEST_FILE_BESCHEID_VALID,
} from '../../../support/data.util';
import { initUsermanagerUsers, loginAsSabine } from '../../../support/user-util';
import { buildVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
registerLocaleData(localeDe, 'de', localeDeExtra);
describe('Bescheid Wizard', () => {
const mainPage: MainPage = new MainPage();
const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
const abgelehntText: string = 'Abgelehnt am';
const manuellText: string = 'Bescheid muss manuell';
const vorgangPage: VorgangPage = new VorgangPage();
const bescheidWizard: VorgangBescheidWizardE2EComponent = vorgangPage.getBescheidWizard();
const bescheidVorgang: VorgangE2E = {
...buildVorgang(objectIds[0], 'Wizard Vorgang'),
status: VorgangStatusE2E.IN_BEARBEITUNG,
};
const vorgangFormularButtons: VorgangFormularButtonsE2EComponent =
vorgangPage.getFormularButtons();
before(() => {
initVorgaenge([bescheidVorgang]);
initUsermanagerUsers();
loginAsSabine();
waitForSpinnerToDisappear();
exist(vorgangList.getRoot());
});
after(() => {
dropCollections();
});
describe('Only save Bescheid', () => {
it('should update Bescheid info after click on Nur Speichern', () => {
vorgangList.getListItem(bescheidVorgang.name).getRoot().click();
waitForSpinnerToDisappear();
vorgangFormularButtons.getBescheidenButton().click();
bescheidWizard.getAbgelehntButton().click();
enterWith(bescheidWizard.getDateInput(), getAdjustedDateGerman(-1));
bescheidWizard.getWeiterButton().click();
uploadFile(bescheidWizard.getUploadBescheidButton(), TEST_FILE_BESCHEID_VALID);
notExist(bescheidWizard.getBescheidUploadSpinner());
uploadFile(bescheidWizard.getUploadAttachmentButton(), TEST_FILE_BESCHEID_ANHANG_VALID);
notExist(bescheidWizard.getAttachmentUploadSpinner());
bescheidWizard.getWeiterButton().click();
bescheidWizard.getSaveButton().click();
contains(bescheidWizard.getStatusText(), abgelehntText + ' ' + getAdjustedDateGerman(-1));
exist(bescheidWizard.getFileAnhangValid());
exist(bescheidWizard.getFileBescheidValid());
contains(bescheidWizard.getResultBox(), manuellText);
exist(bescheidWizard.getConfirmAndSaveButton());
});
it('should update Vorgang status after saving', () => {
bescheidWizard.getConfirmAndSaveButton().click();
notExist(bescheidWizard.getRoot());
waitForSpinnerToDisappear();
haveText(
vorgangPage.getVorgangDetailHeader().getStatus(),
vorgangStatusLabelE2E[VorgangStatusE2E.BESCHIEDEN],
);
});
});
});
......@@ -13,7 +13,7 @@ import 'cypress-real-events/support';
import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
import { VorgangPage } from '../../../page-objects/vorgang.po';
import { dropCollections } from '../../../support/cypress-helper';
import { dropCollections, wait } from '../../../support/cypress-helper';
import { contains, enterWith, exist, haveText, notExist } from '../../../support/cypress.util';
import { TEST_FILE_BESCHEID_VALID } from '../../../support/data.util';
import { getAdjustedDateEnglish, getAdjustedDateGerman } from '../../../support/tech.util';
......@@ -131,7 +131,7 @@ describe('Bescheid Wizard', () => {
bescheidWizard.getUeberspringenAbschliessen().click();
notExist(bescheidWizard.getRoot());
cy.wait(1000);
wait(1000);
haveText(
vorgangPage.getVorgangDetailHeader().getStatus(),
vorgangStatusLabelE2E[VorgangStatusE2E.ABGESCHLOSSEN],
......
......@@ -36,7 +36,6 @@ import {
countDownloadFiles,
deleteDownloadFolder,
dropCollections,
wait,
} from '../../../support/cypress-helper';
import { exist, notExist } from '../../../support/cypress.util';
import { loginAsSabine } from '../../../support/user-util';
......@@ -89,18 +88,21 @@ describe('Vorgang exportieren', () => {
it('should show "Herunterladen" button', () => {
exist(menuItem.getButton());
vorgangMoreMenu.getButton().click({ force: true });
});
it('should have 1 file in download folder after download', () => {
deleteDownloadFolder();
wait(1000);
deleteDownloadFolder().then(() => {
vorgangMoreMenu.getButton().click();
menuItem.getButton().click();
waitForSpinnerToDisappear();
countDownloadFiles().then((count) => {
expect(count).to.eq(1);
});
});
});
it('should close menu after download', () => {
notExist(menuItem.getRoot());
......
......@@ -60,15 +60,11 @@ describe('Vorgang Verwerfen', () => {
const vorgangVerwerfenRevoke: VorgangE2E = { ...buildVorgang(objectIds[0], 'DoRevokeVerwerfen') };
before(() => {
console.log('initVorgaenge');
initVorgaenge([vorgangVerwerfen, vorgangVerwerfenRevoke]);
console.log('loginAsSabine');
loginAsSabine();
console.log('waitforspinner');
waitForSpinnerToDisappear();
console.log('exists vorganglist.root');
exist(vorgangList.getRoot());
});
......
......@@ -131,8 +131,8 @@ export function countDownloadFiles(): Cypress.Chainable<number> {
return cy.task(CypressTasks.COUNT_FILES, DOWNLOAD_FOLDER);
}
export function deleteDownloadFolder(): void {
cy.task(CypressTasks.DELETE_FOLDER, DOWNLOAD_FOLDER);
export function deleteDownloadFolder() {
return cy.task(CypressTasks.DELETE_FOLDER, DOWNLOAD_FOLDER);
}
export function scrollToWindowBottom(): void {
......
import { rmdir } from 'fs';
import { readdir, remove } from 'fs-extra';
import { Db, Long, MongoClient, ObjectId } from 'mongodb';
const fs = require('fs');
const Binary = require('mongodb').Binary;
......@@ -317,26 +316,20 @@ function dropCollections(databaseUrl, databaseName, collections) {
});
}
function countFiles(folderName: string): Promise<number> {
return new Promise((resolve, reject) => {
fs.readdir(folderName, (err, files) => {
if (err) {
console.error(err);
return reject(err);
}
resolve(files.length);
});
function countFiles(folderName) {
return readdir(folderName)
.then((files) => files.length)
.catch((err) => {
throw new Error(`Counting files failed: ${err.message}`);
});
}
function deleteFolder(folderName: string): void {
new Promise((resolve, reject) => {
rmdir(folderName, { maxRetries: 10, recursive: true }, (err) => {
if (err) {
console.error(err);
return reject(err);
}
resolve(null);
});
return remove(folderName)
.then(() => {
return null;
})
.catch((err) => {
throw new Error(`Failed to delete folder: ${err.message}`);
});
}
......@@ -81,7 +81,7 @@
<ods-button-with-spinner
class="self-end"
*ngIf="canSave$ | async"
data-test-id="save-and-send-button"
data-test-id="confirm-and-save-button"
[stateResource]="saveAndSendInProgress$ | async"
text="Antrag bescheiden und speichern"
(clickEmitter)="saveAndSendManually(bescheidDraftStateResource.resource)"
......
......@@ -21,7 +21,7 @@
[name]="formServiceClass.FIELD_SEND_BY"
variant="bescheid_save"
[fullWidthText]="true"
data-test-id="save-and-send-button"
data-test-id="save-button"
><ods-save-icon></ods-save-icon
></ods-radio-button-card>
</ng-container>
......
{{- if not (.Values.sso).disableOzgOperator -}}
{{ range $client := (.Values.sso).keycloak_clients }}
---
{{- if $client.kopOperator }}
apiVersion: api.kop-stack.de/v1
kind: KopKeycloakClient
{{- else }}
apiVersion: operator.ozgcloud.de/v1
kind: OzgCloudKeycloakClient
{{- end }}
metadata:
name: {{ include "app.generateKeycloakClientRessourceName" $client.client_name }}
namespace: {{ include "app.namespace" $ }}
{{- if $client.kopOperator }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
keep_after_delete: {{ $.Values.sso.keep_after_delete | default false }}
client_name: {{ $client.client_name }}
......
{{- if not (.Values.sso).disableOzgOperator -}}
{{ range $user := concat ((.Values.sso).api_users | default list) ((.Values.sso).keycloak_users | default list) }}
---
{{- if $user.kopOperator }}
apiVersion: api.kop-stack.de/v1
kind: KopKeycloakUser
{{- else }}
apiVersion: operator.ozgcloud.de/v1
kind: OzgCloudKeycloakUser
{{- end }}
metadata:
name: {{ include "app.generateKeycloakUserRessourceName" (deepCopy $user.name) }}
namespace: {{ include "app.namespace" $ }}
{{- if $user.kopOperator }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
keep_after_delete: {{ $.Values.sso.keep_after_delete | default false }}
update_user: {{ $user.update_user | default false }}
......
......@@ -58,29 +58,6 @@ tests:
- equal:
path: metadata.namespace
value: by-helm-test
- it: should contain header data for kopOperator
set:
baseUrl: "test.by.ozg-cloud.de"
sso:
keycloak_clients:
- client_name: alfa
kopOperator: true
asserts:
- isAPIVersion:
of: api.kop-stack.de/v1
- isKind:
of: KopKeycloakClient
- it: should have annotations for kopOperator
set:
baseUrl: "test.by.ozg-cloud.de"
sso:
keycloak_clients:
- client_name: alfa
kopOperator: true
asserts:
- equal:
path: metadata.annotations["helm.sh/resource-policy"]
value: keep
- it: should have default Values
set:
baseUrl: test.by.ozg-cloud.de
......
......@@ -533,28 +533,6 @@ tests:
- isNull:
path: spec.keycloak_user.client_roles
- it: should use kopOperator
set:
ozgcloud:
bundesland: by
bezeichner: helm
environment: test
sso:
keycloak_users:
- name: kop
kopOperator: true
asserts:
- isAPIVersion:
of: api.kop-stack.de/v1
- isKind:
of: KopKeycloakUser
- equal:
path: spec.keycloak_user.username
value: kop
- equal:
path: metadata.annotations["helm.sh/resource-policy"]
value: keep
- it: should not create user cr if ozg operator is disabled
set:
sso:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment