Skip to content
Snippets Groups Projects
Commit 38fd971e authored by Jan Zickermann's avatar Jan Zickermann
Browse files

Merge pull request 'OZG-4948-PostfachOnly' (#432) from OZG-4948-PostfachOnly into master

parents fd0dd3aa 6df805dd
Branches
Tags
No related merge requests found
Showing
with 260 additions and 25 deletions
...@@ -2,13 +2,17 @@ ...@@ -2,13 +2,17 @@
<header class="flex items-center justify-between bg-white p-6" data-test-id="admin-header"> <header class="flex items-center justify-between bg-white p-6" data-test-id="admin-header">
<div class="text-ozgblue font-extrabold">OZG-Cloud Administration</div> <div class="text-ozgblue font-extrabold">OZG-Cloud Administration</div>
<div> <div>
<user-profile-button-container data-test-id="user-profile-button"></user-profile-button-container> <user-profile-button-container
data-test-id="user-profile-button"
></user-profile-button-container>
</div> </div>
</header> </header>
<div class="relative flex w-full flex-auto justify-center"> <div class="relative flex w-full flex-auto justify-center">
<div class="w-96 bg-slate-300 p-6"> <div class="w-60 bg-slate-100 p-6">
<nav> <nav>
NAV <postfach-navigation-item
data-test-id="postfach-navigation-item"
></postfach-navigation-item>
</nav> </nav>
</div> </div>
<main class="flex-auto bg-slate-200 p-6"> <main class="flex-auto bg-slate-200 p-6">
......
...@@ -10,6 +10,7 @@ import { of } from 'rxjs'; ...@@ -10,6 +10,7 @@ import { of } from 'rxjs';
import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
import { MockComponent } from 'ng-mocks'; import { MockComponent } from 'ng-mocks';
import { UserProfileButtonContainerComponent } from '../common/user-profile-button-container/user-profile.button-container.component'; import { UserProfileButtonContainerComponent } from '../common/user-profile-button-container/user-profile.button-container.component';
import { PostfachNavigationItemComponent } from '../pages/postfach/postfach-navigation-item/postfach-navigation-item.component';
describe('AppComponent', () => { describe('AppComponent', () => {
let component: AppComponent; let component: AppComponent;
...@@ -18,13 +19,18 @@ describe('AppComponent', () => { ...@@ -18,13 +19,18 @@ describe('AppComponent', () => {
const adminHeader: string = getDataTestIdOf('admin-header'); const adminHeader: string = getDataTestIdOf('admin-header');
const buildVersion: string = getDataTestIdOf('build-version'); const buildVersion: string = getDataTestIdOf('build-version');
const userProfileButton: string = getDataTestIdOf('user-profile-button'); const userProfileButton: string = getDataTestIdOf('user-profile-button');
const postfachNavigationItem: string = getDataTestIdOf('postfach-navigation-item');
const authService: Mock<AuthService> = mock(AuthService); const authService: Mock<AuthService> = mock(AuthService);
const apiRootService: Mock<ApiRootService> = mock(ApiRootService); const apiRootService: Mock<ApiRootService> = mock(ApiRootService);
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [AppComponent, MockComponent(UserProfileButtonContainerComponent)], declarations: [
AppComponent,
MockComponent(UserProfileButtonContainerComponent),
MockComponent(PostfachNavigationItemComponent),
],
imports: [RouterTestingModule], imports: [RouterTestingModule],
providers: [ providers: [
{ {
...@@ -94,6 +100,17 @@ describe('AppComponent', () => { ...@@ -94,6 +100,17 @@ describe('AppComponent', () => {
}); });
}); });
describe('navigation', () => {
beforeEach(() => {
component.apiRoot$ = of(createStateResource(createApiRootResource()));
});
it('should have postfach item', () => {
fixture.detectChanges();
existsAsHtmlElement(fixture, postfachNavigationItem);
});
});
describe('build version', () => { describe('build version', () => {
beforeEach(() => { beforeEach(() => {
component.apiRoot$ = of(createStateResource(createApiRootResource())); component.apiRoot$ = of(createStateResource(createApiRootResource()));
......
...@@ -16,11 +16,19 @@ import { environment } from '../environments/environment'; ...@@ -16,11 +16,19 @@ import { environment } from '../environments/environment';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { initializeKeycloak } from './app.config'; import { initializeKeycloak } from './app.config';
import { appRoutes } from './app.routes'; import { appRoutes } from './app.routes';
import { PostfachPageComponent } from '../pages/postfach/postfach-page/postfach-page.component';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { UserProfileButtonContainerComponent } from '../common/user-profile-button-container/user-profile.button-container.component'; import { UserProfileButtonContainerComponent } from '../common/user-profile-button-container/user-profile.button-container.component';
import { AdminSettingsModule } from '@admin-client/admin-settings';
import { PostfachNavigationItemComponent } from '../pages/postfach/postfach-navigation-item/postfach-navigation-item.component';
@NgModule({ @NgModule({
declarations: [AppComponent, UserProfileButtonContainerComponent], declarations: [
AppComponent,
PostfachPageComponent,
UserProfileButtonContainerComponent,
PostfachNavigationItemComponent,
],
imports: [ imports: [
CommonModule, CommonModule,
TestbtnComponent, TestbtnComponent,
...@@ -37,6 +45,7 @@ import { UserProfileButtonContainerComponent } from '../common/user-profile-butt ...@@ -37,6 +45,7 @@ import { UserProfileButtonContainerComponent } from '../common/user-profile-butt
StoreRouterConnectingModule.forRoot(), StoreRouterConnectingModule.forRoot(),
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
AdminSettingsModule,
], ],
providers: [ providers: [
{ {
......
import { Route } from '@angular/router'; import { Route } from '@angular/router';
import { PostfachPageComponent } from '../pages/postfach/postfach-page/postfach-page.component';
export const appRoutes: Route[] = []; export const appRoutes: Route[] = [
{
path: '',
redirectTo: 'postfach',
pathMatch: 'full',
},
{
path: 'postfach',
component: PostfachPageComponent,
title: 'Admin | Postfach',
},
];
<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z"/></svg>
\ No newline at end of file
import { loadEnvironment } from '@alfa-client/environment-shared'; import { loadEnvironment } from '@alfa-client/environment-shared';
import { enableProdMode } from '@angular/core'; import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { isNil } from 'lodash-es';
import { AppModule } from './app/app.module'; import { AppModule } from './app/app.module';
import { isNil } from 'lodash-es';
import { environment } from './environments/environment'; import { environment } from './environments/environment';
loadEnvironment(environment.environmentUrl).then((env) => { loadEnvironment(environment.environmentUrl).then((env) => {
if (isNil(env)) { if (isNil(env?.production)) {
console.error('Connection Error: environment is undefined'); console.error('Connection Error: environment is ', env);
return; return;
} }
if (env.production) { if (env.production) {
enableProdMode(); enableProdMode();
} }
......
<navigation-item name="Postfach" imageSrc="/assets/mail.svg" link="/postfach"></navigation-item>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PostfachNavigationItemComponent } from './postfach-navigation-item.component';
import { MockComponent } from 'ng-mocks';
import { ReactiveFormsModule } from '@angular/forms';
import { NavigationItemComponent } from '@admin-client/admin-settings';
describe('PostfachPageComponent', () => {
let component: PostfachNavigationItemComponent;
let fixture: ComponentFixture<PostfachNavigationItemComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [PostfachNavigationItemComponent, MockComponent(NavigationItemComponent)],
imports: [ReactiveFormsModule],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(PostfachNavigationItemComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component } from '@angular/core';
@Component({
selector: 'postfach-navigation-item',
templateUrl: './postfach-navigation-item.component.html',
})
export class PostfachNavigationItemComponent {}
<postfach-container></postfach-container>
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PostfachPageComponent } from './postfach-page.component';
import { MockComponent } from 'ng-mocks';
import { ReactiveFormsModule } from '@angular/forms';
import { PostfachContainerComponent } from '@admin-client/admin-settings';
describe('PostfachPageComponent', () => {
let component: PostfachPageComponent;
let fixture: ComponentFixture<PostfachPageComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [PostfachPageComponent, MockComponent(PostfachContainerComponent)],
imports: [ReactiveFormsModule],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(PostfachPageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component } from '@angular/core';
@Component({
selector: 'postfach-page',
templateUrl: './postfach-page.component.html',
})
export class PostfachPageComponent {}
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.json"],
"parser": "jsonc-eslint-parser",
"rules": {
"@nx/dependency-checks": "error"
}
}
]
}
# admin-settings
This library was generated with [Nx](https://nx.dev).
## Running unit tests
Run `nx test admin-settings` to execute the unit tests via [Jest](https://jestjs.io).
/* eslint-disable */
export default {
displayName: 'admin-settings',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
globals: {},
coverageDirectory: '../../coverage/libs/admin-settings',
transform: {
'^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular',
{
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
],
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
};
{
"name": "admin-settings",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/admin-settings/src",
"projectType": "library",
"prefix": "admin",
"targets": {
"lint": {
"executor": "@nx/eslint:lint",
"outputs": ["{options.outputFile}"],
"options": {
"lintFilePatterns": ["libs/admin-settings/package.json"]
}
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "libs/admin-settings/jest.config.ts",
"passWithNoTests": true
}
}
},
"tags": []
}
export * from './lib/admin-settings.module';
export * from './lib/postfach/postfach-container/postfach-container.component';
export * from './lib/shared/navigation-item/navigation-item.component';
import { TestBed } from '@angular/core/testing';
import { AdminSettingsModule } from './admin-settings.module';
describe('AdminSettingsModule', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [AdminSettingsModule],
});
});
it('should create', () => {
expect(AdminSettingsModule).toBeDefined();
});
});
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { TechSharedModule } from '@alfa-client/tech-shared';
import { NavigationItemComponent } from './shared/navigation-item/navigation-item.component';
import { RouterModule } from '@angular/router';
import { ReactiveFormsModule } from '@angular/forms';
import { PostfachContainerComponent } from './postfach/postfach-container/postfach-container.component';
import { PostfachFormComponent } from './postfach/postfach-container/postfach-form/postfach-form.component';
import { TextFieldComponent } from './shared/text-field/text-field.component';
@NgModule({
declarations: [
PostfachContainerComponent,
PostfachFormComponent,
NavigationItemComponent,
TextFieldComponent,
],
imports: [CommonModule, TechSharedModule, RouterModule, ReactiveFormsModule],
exports: [PostfachContainerComponent, NavigationItemComponent],
})
export class AdminSettingsModule {}
<postfach-form></postfach-form>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment