Skip to content
Snippets Groups Projects
Commit 8ff8d381 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-531 styling spinner, add test for loaded spinner

parent 4ae7370c
No related branches found
No related tags found
No related merge requests found
mat-spinner { mat-spinner {
margin: auto; margin: auto;
} }
p {
color: #999;
}
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MatIcon } from '@angular/material/icon'; import { MatIcon } from '@angular/material/icon';
import { MatSpinner } from '@angular/material/progress-spinner'; import { MatSpinner } from '@angular/material/progress-spinner';
import { createEmptyStateResource, StateResource } from '@goofy-client/tech-shared'; import { createEmptyStateResource } from '@goofy-client/tech-shared';
import { SpinnerComponent } from './spinner.component'; import { SpinnerComponent } from './spinner.component';
import { Component } from '@angular/core';
@Component({
template: `<goofy-client-spinner [stateResource]="stateResource"></goofy-client-spinner>`,
})
export class TestWrapperComponent {
stateResource: StateResource<any> = createEmptyStateResource();
}
describe('SpinnerComponent', () => { describe('SpinnerComponent', () => {
let component: TestWrapperComponent; let component: SpinnerComponent;
let fixture: ComponentFixture<TestWrapperComponent>; let fixture: ComponentFixture<SpinnerComponent>;
const spinnerSelector = '[data-test-class="spinner"]' const spinnerSelector = '[data-test-class="spinner"]'
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
declarations: [ declarations: [
SpinnerComponent, SpinnerComponent,
TestWrapperComponent,
MatIcon, MatIcon,
MatSpinner MatSpinner
] ],
}) }).compileComponents();
.compileComponents();
}); });
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(TestWrapperComponent); fixture = TestBed.createComponent(SpinnerComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
fixture.detectChanges(); fixture.detectChanges();
}); });
...@@ -58,4 +49,27 @@ describe('SpinnerComponent', () => { ...@@ -58,4 +49,27 @@ describe('SpinnerComponent', () => {
expect(spinner).toBeInstanceOf(HTMLElement); expect(spinner).toBeInstanceOf(HTMLElement);
}); });
}); });
describe('loaded spinner', () => {
beforeEach(() => {
component.showWhileLoaded = true;
fixture.detectChanges();
})
it('should NOT be visible if NOT loaded', () => {
const spinner = fixture.nativeElement.querySelector(spinnerSelector);
expect(spinner).not.toBeInstanceOf(HTMLElement);
})
it('should be visible if loaded', () => {
component.showWhileLoaded = true;
component.stateResource = { ...createEmptyStateResource(), loaded: true };
fixture.detectChanges();
const spinner = fixture.nativeElement.querySelector(spinnerSelector);
expect(spinner).toBeInstanceOf(HTMLElement);
});
});
}); });
...@@ -6,7 +6,7 @@ import { createEmptyStateResource, StateResource } from '@goofy-client/tech-shar ...@@ -6,7 +6,7 @@ import { createEmptyStateResource, StateResource } from '@goofy-client/tech-shar
templateUrl: './spinner.component.html', templateUrl: './spinner.component.html',
styleUrls: ['./spinner.component.scss'] styleUrls: ['./spinner.component.scss']
}) })
export class SpinnerComponent implements OnChanges { export class SpinnerComponent {
@Input() stateResource: StateResource<any> = createEmptyStateResource(); @Input() stateResource: StateResource<any> = createEmptyStateResource();
@Input() diameter: number = 70; @Input() diameter: number = 70;
...@@ -14,12 +14,10 @@ export class SpinnerComponent implements OnChanges { ...@@ -14,12 +14,10 @@ export class SpinnerComponent implements OnChanges {
@Input() text: string; @Input() text: string;
@Input() showWhileLoaded: boolean; @Input() showWhileLoaded: boolean;
showSpinner: boolean; get showSpinner(): boolean {
console.log(this.showWhileLoaded)
ngOnChanges(changes: SimpleChanges) { if (this.showWhileLoaded) return this.stateResource.loaded && this.stateResource.resource;
if (changes.stateResource) { return this.stateResource.loading;
if (this.showWhileLoaded) this.showSpinner = this.stateResource.loaded;
else this.showSpinner = this.stateResource.loading;
}
} }
} }
<ng-container *ngIf="redirectStateResource$ | async as redirectStateResource"> <ng-container *ngIf="redirectStateResource$ | async as redirectStateResource">
<goofy-client-spinner [stateResource]="redirectStateResource" [showWhileLoaded]="true" text="Vorgang wird weitergeleitet"> <goofy-client-spinner
[stateResource]="redirectStateResource"
[showWhileLoaded]="true"
padding="0"
text="Vorgang wird weitergeleitet">
<form class="form" [formGroup]="formService.form" (submit)="submit()"> <form class="form" [formGroup]="formService.form" (submit)="submit()">
<goofy-client-text-editor <goofy-client-text-editor
......
:host {
width: 100%;
max-width: 320px;
display: block;
}
.form { .form {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
position: relative;
max-width: 320px;
width: 100%;
::ng-deep { ::ng-deep {
mat-form-field { mat-form-field {
...@@ -12,16 +15,8 @@ ...@@ -12,16 +15,8 @@
} }
} }
.spinner { goofy-client-spinner {
display: inline-flex; ::ng-deep .spinner {
flex-direction: column; text-align: center;
align-items: center;
.mat-spinner {
margin: 8px;
}
p {
color: #999;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment