Skip to content
Snippets Groups Projects
Commit 02ad430e authored by Alexander Reifschneider's avatar Alexander Reifschneider
Browse files

Merge branch 'OZG-7166-impressum-page' into 'main'

OZG-7166 Add impressum page

See merge request !37
parents be387bc9 0e85a1c7
Branches
Tags
1 merge request!37OZG-7166 Add impressum page
Showing
with 191 additions and 30 deletions
...@@ -8,25 +8,16 @@ ...@@ -8,25 +8,16 @@
"targets": { "targets": {
"build": { "build": {
"executor": "@angular-devkit/build-angular:browser-esbuild", "executor": "@angular-devkit/build-angular:browser-esbuild",
"outputs": [ "outputs": ["{options.outputPath}"],
"{options.outputPath}"
],
"options": { "options": {
"outputPath": "dist/apps/info", "outputPath": "dist/apps/info",
"index": "apps/info/src/index.html", "index": "apps/info/src/index.html",
"main": "apps/info/src/main.ts", "main": "apps/info/src/main.ts",
"polyfills": [ "polyfills": ["zone.js"],
"zone.js"
],
"tsConfig": "apps/info/tsconfig.app.json", "tsConfig": "apps/info/tsconfig.app.json",
"inlineStyleLanguage": "scss", "inlineStyleLanguage": "scss",
"assets": [ "assets": ["apps/info/src/favicon.svg", "apps/info/src/assets"],
"apps/info/src/favicon.svg", "styles": ["apps/info/src/styles.scss"],
"apps/info/src/assets"
],
"styles": [
"apps/info/src/styles.scss"
],
"scripts": [], "scripts": [],
"stylePreprocessorOptions": { "stylePreprocessorOptions": {
"includePaths": [ "includePaths": [
...@@ -40,6 +31,10 @@ ...@@ -40,6 +31,10 @@
"configurations": { "configurations": {
"production-by": { "production-by": {
"fileReplacements": [ "fileReplacements": [
{
"replace": "apps/info/src/environments/environment.ts",
"with": "apps/info/src/environments/environment.prod.by.ts"
},
{ {
"replace": "apps/info/src/pages/accessibility/accessibility-page.component.ts", "replace": "apps/info/src/pages/accessibility/accessibility-page.component.ts",
"with": "apps/info/src/pages/accessibility/accessibility-page-by.component.ts" "with": "apps/info/src/pages/accessibility/accessibility-page-by.component.ts"
...@@ -61,9 +56,17 @@ ...@@ -61,9 +56,17 @@
}, },
"production-sh": { "production-sh": {
"fileReplacements": [ "fileReplacements": [
{
"replace": "apps/info/src/environments/environment.ts",
"with": "apps/info/src/environments/environment.prod.sh.ts"
},
{ {
"replace": "apps/info/src/pages/accessibility/accessibility-page.component.ts", "replace": "apps/info/src/pages/accessibility/accessibility-page.component.ts",
"with": "apps/info/src/pages/accessibility/accessibility-page-sh.component.ts" "with": "apps/info/src/pages/accessibility/accessibility-page-sh.component.ts"
},
{
"replace": "apps/info/src/pages/impressum/impressum-page.component.ts",
"with": "apps/info/src/pages/impressum/impressum-page-sh.component.ts"
} }
], ],
"budgets": [ "budgets": [
...@@ -85,6 +88,10 @@ ...@@ -85,6 +88,10 @@
{ {
"replace": "apps/info/src/pages/accessibility/accessibility-page.component.ts", "replace": "apps/info/src/pages/accessibility/accessibility-page.component.ts",
"with": "apps/info/src/pages/accessibility/accessibility-page-sh.component.ts" "with": "apps/info/src/pages/accessibility/accessibility-page-sh.component.ts"
},
{
"replace": "apps/info/src/pages/impressum/impressum-page.component.ts",
"with": "apps/info/src/pages/impressum/impressum-page-sh.component.ts"
} }
], ],
"buildOptimizer": false, "buildOptimizer": false,
...@@ -100,8 +107,11 @@ ...@@ -100,8 +107,11 @@
"serve": { "serve": {
"executor": "@angular-devkit/build-angular:dev-server", "executor": "@angular-devkit/build-angular:dev-server",
"configurations": { "configurations": {
"production": { "production-by": {
"buildTarget": "info:build:production" "buildTarget": "info:build:production-by"
},
"production-sh": {
"buildTarget": "info:build:production-sh"
}, },
"development": { "development": {
"buildTarget": "info:build:development" "buildTarget": "info:build:development"
...@@ -120,9 +130,7 @@ ...@@ -120,9 +130,7 @@
}, },
"test": { "test": {
"executor": "@nx/jest:jest", "executor": "@nx/jest:jest",
"outputs": [ "outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"{workspaceRoot}/coverage/{projectRoot}"
],
"options": { "options": {
"jestConfig": "apps/info/jest.config.ts" "jestConfig": "apps/info/jest.config.ts"
} }
...@@ -137,20 +145,14 @@ ...@@ -137,20 +145,14 @@
}, },
"container": { "container": {
"executor": "@nx-tools/nx-container:build", "executor": "@nx-tools/nx-container:build",
"dependsOn": [ "dependsOn": ["build"],
"build"
],
"options": { "options": {
"engine": "docker", "engine": "docker",
"push": true, "push": true,
"metadata": { "metadata": {
"images": [ "images": ["docker.ozg-sh.de/info"],
"docker.ozg-sh.de/info"
],
"load": true, "load": true,
"tags": [ "tags": ["snapshot-latest"]
"snapshot-latest"
]
} }
} }
} }
......
...@@ -11,4 +11,18 @@ ...@@ -11,4 +11,18 @@
<main class="flex-auto bg-background-50"> <main class="flex-auto bg-background-50">
<router-outlet></router-outlet> <router-outlet></router-outlet>
</main> </main>
@if (!isBayern) {
<footer class="ozg-prose flex justify-center gap-4" data-test-id="navigation-footer">
<nav>
<ul class="flex flex-wrap justify-center gap-9">
<li>
<a routerLink="/barrierefreiheit">Barrierefreiheit</a>
</li>
<li>
<a routerLink="/impressum">Impressum</a>
</li>
</ul>
</nav>
</footer>
}
</div> </div>
import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { provideRouter } from '@angular/router'; import { provideRouter } from '@angular/router';
import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
describe('AppComponent', () => { describe('AppComponent', () => {
let component: AppComponent; let component: AppComponent;
let fixture: ComponentFixture<AppComponent>; let fixture: ComponentFixture<AppComponent>;
const navigationLocator: string = getDataTestIdOf('navigation-footer');
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [AppComponent], imports: [AppComponent],
...@@ -20,4 +24,34 @@ describe('AppComponent', () => { ...@@ -20,4 +24,34 @@ describe('AppComponent', () => {
it('should create', () => { it('should create', () => {
expect(component).toBeTruthy(); expect(component).toBeTruthy();
}); });
describe('component', () => {
describe('ngOnInit', () => {
it('should set isBayern', () => {
component.ngOnInit();
expect(component.isBayern).toBe(false);
});
});
});
describe('template', () => {
describe('bundesland bayern', () => {
it('should NOT show navigation footer', () => {
component.isBayern = true;
fixture.detectChanges();
notExistsAsHtmlElement(fixture, navigationLocator);
});
it('should show navigation footer', () => {
component.isBayern = false;
fixture.detectChanges();
existsAsHtmlElement(fixture, navigationLocator);
});
});
});
}); });
import { Component } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { OzgLogoIconComponent } from '@ods/system'; import { OzgLogoIconComponent } from '@ods/system';
import { environment } from '../environments/environment';
@Component({ @Component({
standalone: true, standalone: true,
...@@ -8,4 +9,10 @@ import { OzgLogoIconComponent } from '@ods/system'; ...@@ -8,4 +9,10 @@ import { OzgLogoIconComponent } from '@ods/system';
selector: 'app-root', selector: 'app-root',
templateUrl: './app.component.html', templateUrl: './app.component.html',
}) })
export class AppComponent {} export class AppComponent implements OnInit {
public isBayern: boolean;
ngOnInit() {
this.isBayern = environment.bundesland === 'by';
}
}
import { Route } from '@angular/router'; import { Route } from '@angular/router';
import { AccessibilityPageComponent } from '../pages/accessibility/accessibility-page.component'; import { AccessibilityPageComponent } from '../pages/accessibility/accessibility-page.component';
import { ImpressumPageComponent } from '../pages/impressum/impressum-page.component';
export const appRoutes: Route[] = [ export const appRoutes: Route[] = [
{ {
...@@ -12,4 +13,10 @@ export const appRoutes: Route[] = [ ...@@ -12,4 +13,10 @@ export const appRoutes: Route[] = [
component: AccessibilityPageComponent, component: AccessibilityPageComponent,
title: 'Barrierefreiheit', title: 'Barrierefreiheit',
}, },
{
path: 'impressum',
component: ImpressumPageComponent,
title: 'Impressum',
},
{ path: '**', redirectTo: 'barrierefreiheit' },
]; ];
export const environment = {
production: true,
bundesland: 'by',
};
export const environment = {
production: true,
bundesland: 'sh',
};
export const environment = {
production: false,
bundesland: 'sh',
};
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ImpressumPageComponent } from './impressum-page-sh.component';
describe('ImpressumPageComponent', () => {
let component: ImpressumPageComponent;
let fixture: ComponentFixture<ImpressumPageComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [ImpressumPageComponent],
}).compileComponents();
fixture = TestBed.createComponent(ImpressumPageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
@Component({
selector: 'app-impressum-page',
standalone: true,
imports: [CommonModule],
template: `<div class="ozg-prose prose prose-h1:text-4xl prose-h2:text-2xl">
<h1>Impressum</h1>
<p>
Der Ministerpräsident - Staatskanzlei <br />
StK 3 – Digitalisierung und Zentrales IT-Management <br />
Düsternbrooker Weg 104 <br />
24105 Kiel
</p>
<p>
E-Mail: <br />
<a href="mailto:digitalisierung@stk.landsh.de">digitalisierung&#64;stk.landsh.de</a>
</p>
<p>
Verantwortlich <br />
Dr. Moritz Karg <br />
StK 30 – Grundsatzangelegenheiten der Digitalisierung und des EGovernments
</p>
<p>
E-Mail: <br />
<a href="mailto:digitalisierung@stk.landsh.de">digitalisierung&#64;stk.landsh.de</a>
</p>
</div>`,
})
export class ImpressumPageComponent {}
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ImpressumPageComponent } from './impressum-page.component';
describe('ImpressumPageComponent', () => {
let component: ImpressumPageComponent;
let fixture: ComponentFixture<ImpressumPageComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [ImpressumPageComponent],
}).compileComponents();
fixture = TestBed.createComponent(ImpressumPageComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
@Component({
selector: 'app-impressum-page',
standalone: true,
imports: [CommonModule],
// template will be set during build time - see fileReplacements in apps/info/project.json
template: ``,
})
export class ImpressumPageComponent {}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment