From 140f68bcfa7cb3df2ffd1f487b7433c169c96c85 Mon Sep 17 00:00:00 2001 From: Abigail Cabascango Date: Fri, 23 Sep 2022 10:05:22 -0500 Subject: [PATCH] refactor: TTA-164 refactor services --- .../components/services/project.service.ts | 2 +- .../services-management.service.spec.ts | 138 ++++++++++++++++++ .../effects/services-management.service.ts | 23 +++ 3 files changed, 162 insertions(+), 1 deletion(-) create mode 100644 src/app/modules/effects/services-management.service.spec.ts create mode 100644 src/app/modules/effects/services-management.service.ts diff --git a/src/app/modules/customer-management/components/projects/components/services/project.service.ts b/src/app/modules/customer-management/components/projects/components/services/project.service.ts index c5b431b1a..4d3a95194 100644 --- a/src/app/modules/customer-management/components/projects/components/services/project.service.ts +++ b/src/app/modules/customer-management/components/projects/components/services/project.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs'; + import { environment } from '../../../../../../../environments/environment'; import { EnvironmentType } from '../../../../../../../environments/enum'; import { Project } from '../../../../../shared/models'; @@ -9,7 +10,6 @@ import { Project } from '../../../../../shared/models'; providedIn: 'root', }) export class ProjectService { - projects: Project[] = []; url = `${environment.timeTrackerApiUrl}/projects`; isDevelopmentOrProd = environment.production === EnvironmentType.TT_DEV || environment.production === EnvironmentType.TT_PROD; diff --git a/src/app/modules/effects/services-management.service.spec.ts b/src/app/modules/effects/services-management.service.spec.ts new file mode 100644 index 000000000..23eae8d80 --- /dev/null +++ b/src/app/modules/effects/services-management.service.spec.ts @@ -0,0 +1,138 @@ +// import { TestBed, inject } from '@angular/core/testing'; +// import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; + +// import { ServicesManagementService } from './services-management.service'; + +// describe('ServicesManagementService', () => { +// let service: ServicesManagementService; +// let httpMock: HttpTestingController; + +// const projectsList: Project[] = [ +// { +// id: '1', +// name: 'app 1', +// description: 'It is a good app', +// project_type_id: '123', +// }, +// { +// id: '2', +// name: 'app 2', +// description: 'It is a good app', +// project_type_id: '123', +// }, +// { +// id: '3', +// name: 'app 3', +// description: 'It is a good app', +// project_type_id: '123', +// }, +// ]; + +// beforeEach(() => { +// TestBed.configureTestingModule({ +// imports: [HttpClientTestingModule], +// }); +// service = TestBed.inject(ServicesManagementService); +// httpMock = TestBed.inject(HttpTestingController); +// }); + +// afterEach(() => { +// httpMock.verify(); +// }); + +// it('should be created', inject( +// [HttpClientTestingModule, ServicesManagementService], +// (httpClient: HttpClientTestingModule, apiService: ServicesManagementService) => { +// expect(apiService).toBeTruthy(); +// expect(httpClient).toBeTruthy(); +// } +// )); + +// it('all projects are read using GET from url', () => { +// const projectsFoundSize = projectsList.length; +// service.getAll().subscribe((projectsInResponse) => { +// expect(projectsInResponse.length).toBe(projectsFoundSize); +// }); +// const getProjectsRequest = httpMock.expectOne(service.url); +// expect(getProjectsRequest.request.method).toBe('GET'); +// getProjectsRequest.flush(projectsList); +// }); + +// it('projects are read using GET from url', () => { +// const projectsFoundSize = projectsList.length; +// service.url = '/projects'; +// service.getProjects({ customerId: 'xyz' }).subscribe((projectsInResponse) => { +// expect(projectsInResponse.length).toBe(projectsFoundSize); +// }); +// const getProjectsRequest = httpMock.expectOne(`${service.url}?customer_id=xyz`); +// expect(getProjectsRequest.request.method).toBe('GET'); +// getProjectsRequest.flush(projectsList); +// }); + +// it('recent projects are read using GET from url/recent', () => { +// const projectsFoundSize = projectsList.length; +// service.getRecentProjects().subscribe((projectsInResponse) => { +// expect(projectsInResponse.length).toBe(projectsFoundSize); +// }); +// const getProjectsRequest = httpMock.expectOne(`${service.url}/recent`); +// expect(getProjectsRequest.request.method).toBe('GET'); +// getProjectsRequest.flush(projectsList); +// }); + +// it('create project using POST from url', () => { +// const project: Project[] = [{ id: '1', name: 'ccc', description: 'xxx', project_type_id: '123' }]; +// service.url = 'projects'; +// service.createProject(project).subscribe((response) => { +// expect(response.length).toBe(1); +// }); +// const createProjectsRequest = httpMock.expectOne(service.url); +// expect(createProjectsRequest.request.method).toBe('POST'); +// createProjectsRequest.flush(project); +// }); + +// it('update project using PUT from url', () => { +// const project: Project = { id: '1', name: 'new name', description: 'description', project_type_id: '123' }; +// service.url = 'projects'; +// service.updateProject(project).subscribe((response) => { +// expect(response.name).toBe('new name'); +// }); +// const updateProjectRequest = httpMock.expectOne(`${service.url}/${project.id}`); +// expect(updateProjectRequest.request.method).toBe('PUT'); +// updateProjectRequest.flush(project); +// }); + +// it('update project using PUT from url locally', () => { +// const project: Project = { id: '1', name: 'new name', description: 'description', project_type_id: '123', status: 'active'}; +// service.url = 'projects'; +// service.isDevelopmentOrProd = true; +// service.updateProject(project).subscribe((response) => { +// expect(response.name).toBe('new name'); +// }); +// const updateProjectRequest = httpMock.expectOne(`${service.url}/${project.id}`); +// expect(updateProjectRequest.request.method).toBe('PUT'); +// updateProjectRequest.flush(project); +// }); + +// it('delete project using DELETE from baseUrl', () => { +// const url = `${service.url}/1`; +// service.isDevelopmentOrProd = false; +// service.deleteProject(projectsList[0].id).subscribe((projectsInResponse) => { +// expect(projectsInResponse.filter((project) => project.id !== projectsList[0].id).length).toEqual(2); +// }); +// const deleteActivitiesRequest = httpMock.expectOne(url); +// expect(deleteActivitiesRequest.request.method).toBe('DELETE'); +// deleteActivitiesRequest.flush(projectsList); +// }); + +// it('update status project using PUT from baseUrl locally', () => { +// const url = `${service.url}/1`; +// service.isDevelopmentOrProd = true; +// service.deleteProject(projectsList[0].id).subscribe((projectsInResponse) => { +// expect(projectsInResponse.filter((project) => project.id !== projectsList[0].id).length).toEqual(2); +// }); +// const deleteActivitiesRequest = httpMock.expectOne(url); +// expect(deleteActivitiesRequest.request.method).toBe('PUT'); +// deleteActivitiesRequest.flush(projectsList); +// }); + +// }); diff --git a/src/app/modules/effects/services-management.service.ts b/src/app/modules/effects/services-management.service.ts new file mode 100644 index 000000000..f13a28bd3 --- /dev/null +++ b/src/app/modules/effects/services-management.service.ts @@ -0,0 +1,23 @@ +// import { Injectable } from '@angular/core'; +// import { Interface } from 'readline'; +// import { HttpClient, HttpParams } from '@angular/common/http'; +// import { Observable } from 'rxjs'; + +// import { environment } from '../../../environments/environment'; +// import { EnvironmentType } from '../../../environments/enum'; +// import { Project } from '../shared/models'; + +// @Injectable({ +// providedIn: 'root' +// }) +// export abstract class ServicesManagementService { +// url = `${environment.timeTrackerApiUrl}/projects`; +// isDevelopmentOrProd = environment.production === EnvironmentType.TT_DEV || environment.production === EnvironmentType.TT_PROD; + +// constructor(private http: HttpClient) { } + +// protected getAll(interfaceModel: any): Observable { +// return this.http.get(this.url); +// } + +// }