diff --git a/src/app/modules/activities-management/components/activity-list/activity-list.component.ts b/src/app/modules/activities-management/components/activity-list/activity-list.component.ts index cf4df9b94..3da790a52 100644 --- a/src/app/modules/activities-management/components/activity-list/activity-list.component.ts +++ b/src/app/modules/activities-management/components/activity-list/activity-list.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { select, Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import { delay, map } from 'rxjs/operators'; @@ -14,6 +14,9 @@ import { ActivityState } from './../../store/activity-management.reducers'; styleUrls: ['./activity-list.component.scss'], }) export class ActivityListComponent implements OnInit { + @Input() showActivityForm: boolean; + @Output() changeValueShowActivityForm = new EventEmitter(); + constructor(private store: Store) { this.isLoading$ = store.pipe(delay(0), select(getIsLoading)); } @@ -66,6 +69,8 @@ export class ActivityListComponent implements OnInit { updateActivity(activityId: string): void { this.store.dispatch(new SetActivityToEdit(activityId)); + this.showActivityForm = true; + this.changeValueShowActivityForm.emit(this.showActivityForm); } unarchiveActivity(): void { diff --git a/src/app/modules/activities-management/components/create-activity/create-activity.component.html b/src/app/modules/activities-management/components/create-activity/create-activity.component.html index daec24118..6af39d04d 100644 --- a/src/app/modules/activities-management/components/create-activity/create-activity.component.html +++ b/src/app/modules/activities-management/components/create-activity/create-activity.component.html @@ -1,7 +1,4 @@ -

Activities

-
-
@@ -21,7 +18,7 @@

Activities

-
diff --git a/src/app/modules/activities-management/components/create-activity/create-activity.component.ts b/src/app/modules/activities-management/components/create-activity/create-activity.component.ts index 7460cfa5f..af4b2d8c6 100644 --- a/src/app/modules/activities-management/components/create-activity/create-activity.component.ts +++ b/src/app/modules/activities-management/components/create-activity/create-activity.component.ts @@ -1,7 +1,6 @@ import { FormBuilder, Validators, FormGroup } from '@angular/forms'; -import { Component, OnInit } from '@angular/core'; +import { Component, EventEmitter, OnInit, Output } from '@angular/core'; import { Store, select } from '@ngrx/store'; - import { Activity } from '../../../shared/models'; import { ActivityState } from './../../store/activity-management.reducers'; import { CreateActivity, UpdateActivity, getActivityById, ResetActivityToEdit } from '../../store'; @@ -12,9 +11,9 @@ import { CreateActivity, UpdateActivity, getActivityById, ResetActivityToEdit } styleUrls: ['./create-activity.component.scss'], }) export class CreateActivityComponent implements OnInit { + @Output() closeActivityForm = new EventEmitter(); activityForm: FormGroup; activityToEdit: Activity; - constructor(private formBuilder: FormBuilder, private store: Store) { this.activityForm = this.formBuilder.group({ name: ['', Validators.required], @@ -60,9 +59,12 @@ export class CreateActivityComponent implements OnInit { this.store.dispatch(new CreateActivity(activityData)); this.activityForm.get('description').setValue(''); } + this.closeActivityForm.emit(false); } cancelButton() { + this.activityForm.reset(); this.store.dispatch(new ResetActivityToEdit()); + this.closeActivityForm.emit(false); } } diff --git a/src/app/modules/activities-management/pages/activities-management.component.html b/src/app/modules/activities-management/pages/activities-management.component.html index 92f75b9bf..9abbb4cfc 100644 --- a/src/app/modules/activities-management/pages/activities-management.component.html +++ b/src/app/modules/activities-management/pages/activities-management.component.html @@ -1,4 +1,13 @@
- - +
+
+ +
+
+
+ +
+
diff --git a/src/app/modules/activities-management/pages/activities-management.component.spec.ts b/src/app/modules/activities-management/pages/activities-management.component.spec.ts index 92f8a918a..af4ae32cc 100644 --- a/src/app/modules/activities-management/pages/activities-management.component.spec.ts +++ b/src/app/modules/activities-management/pages/activities-management.component.spec.ts @@ -1,14 +1,19 @@ import { waitForAsync, TestBed, ComponentFixture } from '@angular/core/testing'; +import { MockStore, provideMockStore } from '@ngrx/store/testing'; import { ActivitiesManagementComponent } from './activities-management.component'; +import { SetActivityToEdit } from '../store'; +import { Activity } from '../../shared/models'; describe('ActivitiesManagementComponent', () => { let component: ActivitiesManagementComponent; let fixture: ComponentFixture; + let store: MockStore; beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [], - declarations: [ActivitiesManagementComponent] + declarations: [ActivitiesManagementComponent], + providers: [provideMockStore({ initialState: {} })], }).compileComponents(); })); @@ -16,9 +21,26 @@ describe('ActivitiesManagementComponent', () => { fixture = TestBed.createComponent(ActivitiesManagementComponent); component = fixture.componentInstance; fixture.detectChanges(); + store = TestBed.inject(MockStore); }); it('should create the component', () => { expect(component).toBeTruthy(); }); + + it('should dispatch an action on activateActivityForm', () => { + spyOn(store, 'dispatch'); + + component.activateActivityForm(); + + expect(store.dispatch).toHaveBeenCalledWith(new SetActivityToEdit(null)); + }); + + it('should call closeActivityForm function', () => { + component.closeFormActivity(false); + + expect(component.showActivityForm).toBe(false); + }); + + }); diff --git a/src/app/modules/activities-management/pages/activities-management.component.ts b/src/app/modules/activities-management/pages/activities-management.component.ts index 94c1de433..1c8ef9676 100644 --- a/src/app/modules/activities-management/pages/activities-management.component.ts +++ b/src/app/modules/activities-management/pages/activities-management.component.ts @@ -1,4 +1,7 @@ -import { Component } from '@angular/core'; +import { Component, EventEmitter, Output } from '@angular/core'; +import { Store } from '@ngrx/store'; +import { Activity } from '../../shared/models'; +import { SetActivityToEdit } from '../store'; @Component({ selector: 'app-activities-management', @@ -6,5 +9,16 @@ import { Component } from '@angular/core'; styleUrls: ['./activities-management.component.scss'], }) export class ActivitiesManagementComponent { - constructor() {} + @Output() closeActivityForm = new EventEmitter(); + showActivityForm = false; + constructor(private store: Store) {} + + activateActivityForm() { + this.store.dispatch(new SetActivityToEdit(null)); + this.showActivityForm = true; + } + + closeFormActivity(event) { + this.showActivityForm = event; + } }