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

OZG-400 subnavigation button

parent b16d3146
No related branches found
No related tags found
No related merge requests found
Showing
with 117 additions and 16 deletions
export * from './lib/assign-user-profile-button-container/assign-user-profile-button-container.component';
export * from './lib/user-icon-container/user-icon-container.component'; export * from './lib/user-icon-container/user-icon-container.component';
export * from './lib/user-profile.module'; export * from './lib/user-profile.module';
<goofy-client-icon-button-with-spinner *ngIf="vorgang | hasLink: linkRel.ASSIGN" data-test-id="assign-user-profile-button"
icon="assignment_ind" toolTip="Bearbeiter zuordnen"
(clickEmitter)="showUserProfileSearch()">
</goofy-client-icon-button-with-spinner>
\ No newline at end of file
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HasLinkPipe } from '@goofy-client/tech-shared';
import { mock } from '@goofy-client/test-utils';
import { IconButtonWithSpinnerComponent } from '@goofy-client/ui';
import { UserProfileService } from '@goofy-client/user-profile-shared';
import { VorgangHeaderLinkRel } from '@goofy-client/vorgang-shared';
import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
import { configureTestSuite } from 'ng-bullet';
import { MockComponent } from 'ng-mocks';
import { AssignUserProfileButtonContainerComponent } from './assign-user-profile-button-container.component';
describe('AssignUserProfileButtonContainerComponent', () => {
let component: AssignUserProfileButtonContainerComponent;
let fixture: ComponentFixture<AssignUserProfileButtonContainerComponent>;
const assignUserProfileButton: string = '[data-test-id="assign-user-profile-button"]';
const userProfileService = mock(UserProfileService);
configureTestSuite(() => {
TestBed.configureTestingModule({
declarations: [
AssignUserProfileButtonContainerComponent,
HasLinkPipe,
MockComponent(IconButtonWithSpinnerComponent)
],
providers: [
{
provide: UserProfileService,
useValue: userProfileService
}
]
})
})
beforeEach(() => {
fixture = TestBed.createComponent(AssignUserProfileButtonContainerComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
describe('button', () => {
it('should be visible', () => {
component.vorgang = createVorgangWithEingangResource([VorgangHeaderLinkRel.ASSIGN]);
fixture.detectChanges();
const button = fixture.nativeElement.querySelector(assignUserProfileButton);
expect(button).toBeInstanceOf(HTMLElement);
})
it('should be hidden', () => {
component.vorgang = createVorgangWithEingangResource();
fixture.detectChanges();
const button = fixture.nativeElement.querySelector(assignUserProfileButton);
expect(button).not.toBeInstanceOf(HTMLElement);
})
})
describe('showUserProfileSearch', () => {
it('should call service', () => {
component.showUserProfileSearch();
expect(userProfileService.showUserProfileSearch).toHaveBeenCalled();
})
})
});
\ No newline at end of file
import { Component, Input } from '@angular/core';
import { UserProfileService } from '@goofy-client/user-profile-shared';
import { VorgangHeaderLinkRel, VorgangWithEingangResource } from '@goofy-client/vorgang-shared';
@Component({
selector: 'goofy-client-assign-user-profile-button-container',
templateUrl: './assign-user-profile-button-container.component.html',
styleUrls: ['./assign-user-profile-button-container.component.scss']
})
export class AssignUserProfileButtonContainerComponent {
@Input() vorgang: VorgangWithEingangResource;
readonly linkRel = VorgangHeaderLinkRel;
constructor(private userProfileService: UserProfileService) { }
showUserProfileSearch(): void {
this.userProfileService.showUserProfileSearch();
}
}
\ No newline at end of file
<div <div *ngIf="apiRoot$ | async as apiRoot"
*ngIf="apiRoot$ | async as apiRoot"
(mouseenter)="showUserProfileSearch()" (mouseenter)="showUserProfileSearch()"
(focusin)="showUserProfileSearch()"
(focusout)="hideUserProfileSearch()"
tabindex="0"> tabindex="0">
<goofy-client-user-icon data-test-id="user-profile-icon" <goofy-client-user-icon [userProfileStateResource]="userProfile$ | async" data-test-id="user-profile-icon"
[userProfileStateResource]="userProfile$ | async"
[disableTooltip]="disableTooltip" [disableTooltip]="disableTooltip"
[scaleFactor]="scaleFactor" [scaleFactor]="scaleFactor"
[transformOrigin]="transformOrigin"> [transformOrigin]="transformOrigin">
</goofy-client-user-icon> </goofy-client-user-icon>
<goofy-client-user-profile-search-container <goofy-client-user-profile-search-container *ngIf="(apiRoot.resource | hasLink: apiRootLinkRel.SEARCH_USER_PROFILES) && allowAssigning" data-test-id="user-profile-search-container"
*ngIf="(apiRoot.resource | hasLink: apiRootLinkRel.SEARCH_USER_PROFILES) && allowAssigning" [apiRoot]="apiRoot">
[apiRoot]="apiRoot"
data-test-id="user-profile-search-container">
</goofy-client-user-profile-search-container> </goofy-client-user-profile-search-container>
</div> </div>
\ No newline at end of file
...@@ -3,6 +3,7 @@ import { NgModule } from '@angular/core'; ...@@ -3,6 +3,7 @@ import { NgModule } from '@angular/core';
import { TechSharedModule } from '@goofy-client/tech-shared'; import { TechSharedModule } from '@goofy-client/tech-shared';
import { UiModule } from '@goofy-client/ui'; import { UiModule } from '@goofy-client/ui';
import { UserProfileSharedModule } from '@goofy-client/user-profile-shared'; import { UserProfileSharedModule } from '@goofy-client/user-profile-shared';
import { AssignUserProfileButtonContainerComponent } from './assign-user-profile-button-container/assign-user-profile-button-container.component';
import { UserIconContainerComponent } from './user-icon-container/user-icon-container.component'; import { UserIconContainerComponent } from './user-icon-container/user-icon-container.component';
import { UserIconComponent } from './user-icon/user-icon.component'; import { UserIconComponent } from './user-icon/user-icon.component';
import { UserProfileSearchContainerComponent } from './user-profile-search-container/user-profile-search-container.component'; import { UserProfileSearchContainerComponent } from './user-profile-search-container/user-profile-search-container.component';
...@@ -19,10 +20,12 @@ import { UserProfileSearchComponent } from './user-profile-search-container/user ...@@ -19,10 +20,12 @@ import { UserProfileSearchComponent } from './user-profile-search-container/user
UserIconComponent, UserIconComponent,
UserIconContainerComponent, UserIconContainerComponent,
UserProfileSearchComponent, UserProfileSearchComponent,
UserProfileSearchContainerComponent UserProfileSearchContainerComponent,
AssignUserProfileButtonContainerComponent
], ],
exports: [ exports: [
UserIconContainerComponent UserIconContainerComponent,
AssignUserProfileButtonContainerComponent
] ]
}) })
export class UserProfileModule { } export class UserProfileModule { }
\ No newline at end of file
...@@ -17,3 +17,4 @@ ...@@ -17,3 +17,4 @@
<goofy-client-verwerfen-button [showButton]="showButton" [vorgang]="vorgangWithEingang.resource"></goofy-client-verwerfen-button> <goofy-client-verwerfen-button [showButton]="showButton" [vorgang]="vorgangWithEingang.resource"></goofy-client-verwerfen-button>
<goofy-client-wiedereroeffnen-button [showButton]="showButton" [vorgang]="vorgangWithEingang.resource"></goofy-client-wiedereroeffnen-button> <goofy-client-wiedereroeffnen-button [showButton]="showButton" [vorgang]="vorgangWithEingang.resource"></goofy-client-wiedereroeffnen-button>
<goofy-client-assign-user-profile-button-container [vorgang]="vorgangWithEingang.resource"></goofy-client-assign-user-profile-button-container>
\ No newline at end of file
...@@ -3,6 +3,7 @@ import { MatIcon } from '@angular/material/icon'; ...@@ -3,6 +3,7 @@ import { MatIcon } from '@angular/material/icon';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { createStateResource } from '@goofy-client/tech-shared'; import { createStateResource } from '@goofy-client/tech-shared';
import { IconButtonWithSpinnerComponent } from '@goofy-client/ui'; import { IconButtonWithSpinnerComponent } from '@goofy-client/ui';
import { AssignUserProfileButtonContainerComponent } from '@goofy-client/user-profile';
import { VorgangWithEingangLinkRel } from '@goofy-client/vorgang-shared'; import { VorgangWithEingangLinkRel } from '@goofy-client/vorgang-shared';
import { WiedervorlageListLinkRel } from '@goofy-client/wiedervorlage-shared'; import { WiedervorlageListLinkRel } from '@goofy-client/wiedervorlage-shared';
import { HasLinkPipe } from 'libs/tech-shared/src/lib/pipes/has-link.pipe'; import { HasLinkPipe } from 'libs/tech-shared/src/lib/pipes/has-link.pipe';
...@@ -39,7 +40,8 @@ describe('VorgangDetailActionButtonsComponent', () => { ...@@ -39,7 +40,8 @@ describe('VorgangDetailActionButtonsComponent', () => {
MockComponent(BescheidenButtonComponent), MockComponent(BescheidenButtonComponent),
MockComponent(AbschliessenButtonComponent), MockComponent(AbschliessenButtonComponent),
MockComponent(ZurueckstellenButtonComponent), MockComponent(ZurueckstellenButtonComponent),
MockComponent(WiedereroeffnenButtonComponent) MockComponent(WiedereroeffnenButtonComponent),
MockComponent(AssignUserProfileButtonContainerComponent)
], ],
imports: [ imports: [
RouterTestingModule RouterTestingModule
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment