From 20e62d524d5292b1e64030016b2ccfaf866d623b Mon Sep 17 00:00:00 2001 From: Dimple K H <31147415+Dimple16@users.noreply.github.com> Date: Thu, 16 May 2024 23:49:35 +0530 Subject: [PATCH] fix: Revert platform projects (#3000) * Revert "fix: Improved test cases ProjectsService (#2980)" This reverts commit 77e6f4cbc81be3ca38d139608fce1fa5f9adc32c. * Revert "feat: Migrate getByParamsUnformatted -> spenderPlatformV1ApiService (#2954)" This reverts commit 53f20fb7700e350011e677e3304c0f23b8e0d16f. * Revert "feat: Migrate getAllActive -> spenderPlatformV1ApiService (#2967)" This reverts commit b5c9e2e82850866adb718d92d1da1be17d512076. * Revert "feat: Migrate getbyId -> spenderPlatformV1ApiService (#2946)" This reverts commit e110648801a794dd1ecce8ebac27d55435ef8e9d. * Revert "feat: Add transformToV1Response & transformToV2Response for PlatformProject (#2942)" This reverts commit 5ca606e14a4d799dea79d59edb1530b5cfe5252c. --------- Co-authored-by: Dimple --- .../platform/v1/platform-project.data.ts | 102 --------------- .../v1/platform-projects-params.data.ts | 13 -- .../models/platform/platform-project.model.ts | 13 -- .../v1/platform-project-params.model.ts | 13 -- src/app/core/models/v2/project-v2.model.ts | 12 +- .../core/services/projects.service.spec.ts | 62 ++++----- src/app/core/services/projects.service.ts | 118 ++++++++---------- .../recently-used-items.service.spec.ts | 4 +- .../services/recently-used-items.service.ts | 4 +- src/app/core/test-data/projects.spec.data.ts | 50 +++++++- .../fy-select-project-modal.component.spec.ts | 42 ++++--- .../fy-select-project-modal.component.ts | 4 +- 12 files changed, 151 insertions(+), 286 deletions(-) delete mode 100644 src/app/core/mock-data/platform/v1/platform-project.data.ts delete mode 100644 src/app/core/mock-data/platform/v1/platform-projects-params.data.ts delete mode 100644 src/app/core/models/platform/platform-project.model.ts delete mode 100644 src/app/core/models/platform/v1/platform-project-params.model.ts diff --git a/src/app/core/mock-data/platform/v1/platform-project.data.ts b/src/app/core/mock-data/platform/v1/platform-project.data.ts deleted file mode 100644 index 39a6e36fd4..0000000000 --- a/src/app/core/mock-data/platform/v1/platform-project.data.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { PlatformApiResponse } from '../../../models/platform/platform-api-response.model'; -import { PlatformProject } from '../../../models/platform/platform-project.model'; -import deepFreeze from 'deep-freeze-strict'; - -export const platformProjectSingleRes: PlatformApiResponse = deepFreeze({ - count: 1, - data: [ - { - is_enabled: true, - code: '1184', - created_at: new Date('2021-05-12T10:28:40.834844'), - description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', - id: 257528, - name: 'Customer Mapped Project', - category_ids: [122269, 122270, 122271, null], - org_id: 'orFdTTTNcyye', - updated_at: new Date('2021-07-08T10:28:27.686886'), - display_name: 'Customer Mapped Project', - sub_project: null, - }, - ], - offset: 0, -}); - -export const platformAPIResponseMultiple: PlatformApiResponse = deepFreeze({ - count: 2, - data: [ - { - is_enabled: true, - code: '1184', - created_at: new Date('2021-05-12T10:28:40.834844'), - description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', - id: 257528, - display_name: 'Customer Mapped Project', - category_ids: [122269, 122270, 122271, null], - org_id: 'orFdTTTNcyye', - updated_at: new Date('2021-07-08T10:28:27.686886'), - name: 'Customer Mapped Project', - sub_project: null, - }, - { - is_enabled: true, - code: '1182', - created_at: new Date('2021-05-12T10:28:40.834844'), - description: 'Sage Intacct Project - Fyle Engineering, Id - 1182', - id: 257529, - display_name: 'Fyle Engineering', - category_ids: [122269, 122270, 122271], - org_id: 'orFdTTTNcyye', - updated_at: new Date('2021-07-08T10:28:27.686886'), - name: 'Fyle Engineering', - sub_project: null, - }, - ], - offset: 0, -}); - -export const platformAPIResponseActiveOnly: PlatformApiResponse = deepFreeze({ - count: 4, - data: [ - { - id: 257528, - created_at: new Date('2021-05-12T10:28:40.834Z'), - updated_at: new Date('2021-07-08T10:28:27.686Z'), - name: 'Customer Mapped Project', - sub_project: null, - code: '1184', - org_id: 'orFdTTTNcyye', - description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', - is_enabled: true, - category_ids: [null, 145429, 122269, 122271], - display_name: 'Customer Mapped Project', - }, - { - id: 257541, - created_at: new Date('2021-05-12T10:28:40.834Z'), - updated_at: new Date('2021-07-08T10:28:27.686Z'), - name: 'Sage Project 8', - sub_project: null, - code: '1178', - org_id: 'orFdTTTNcyye', - description: 'Sage Intacct Project - Sage Project 8, Id - 1178', - is_enabled: true, - category_ids: [null, 145429, 122269, 122271], - display_name: 'Customer Mapped Project', - }, - { - id: 257531, - created_at: new Date('2021-05-12T10:28:40.834Z'), - updated_at: new Date('2021-07-08T10:28:27.686Z'), - name: 'Fyle Team Integrations', - sub_project: null, - code: '1183', - org_id: 'orFdTTTNcyye', - description: 'Sage Intacct Project - Fyle Team Integrations, Id - 1183', - is_enabled: true, - category_ids: null, - display_name: 'Customer Mapped Project', - }, - ], - offset: 0, -}); diff --git a/src/app/core/mock-data/platform/v1/platform-projects-params.data.ts b/src/app/core/mock-data/platform/v1/platform-projects-params.data.ts deleted file mode 100644 index 43eab3cb31..0000000000 --- a/src/app/core/mock-data/platform/v1/platform-projects-params.data.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { PlatformProjectParams } from 'src/app/core/models/platform/v1/platform-project-params.model'; -import deepFreeze from 'deep-freeze-strict'; - -export const ProjectPlatformParams: PlatformProjectParams = deepFreeze({ - org_id: 'eq.orNVthTo2Zyo', - order: 'name.asc', - limit: 10, - offset: 0, - is_enabled: 'eq.true', - category_ids: 'ov.{,122269,122270,122271,122272,122273}', - id: 'in.(3943,305792,148971,247936)', - name: 'ilike.%search%', -}); diff --git a/src/app/core/models/platform/platform-project.model.ts b/src/app/core/models/platform/platform-project.model.ts deleted file mode 100644 index e92b323356..0000000000 --- a/src/app/core/models/platform/platform-project.model.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface PlatformProject { - id: number; - org_id: string; - created_at: Date; - updated_at: Date; - name: string; - sub_project: string; - code: string; - display_name: string; - description: string; - is_enabled: boolean; - category_ids: number[]; -} diff --git a/src/app/core/models/platform/v1/platform-project-params.model.ts b/src/app/core/models/platform/v1/platform-project-params.model.ts deleted file mode 100644 index d55325d0b3..0000000000 --- a/src/app/core/models/platform/v1/platform-project-params.model.ts +++ /dev/null @@ -1,13 +0,0 @@ -export interface PlatformProjectParams { - limit: number; - offset: number; - order?: string; - sortDirection?: string; - sortOrder?: string; - searchNameText?: string; - is_enabled?: string; - id?: string; - category_ids?: string; - org_id?: string; - name?: string; -} diff --git a/src/app/core/models/v2/project-v2.model.ts b/src/app/core/models/v2/project-v2.model.ts index 8af239ae40..59edb030b5 100644 --- a/src/app/core/models/v2/project-v2.model.ts +++ b/src/app/core/models/v2/project-v2.model.ts @@ -1,11 +1,11 @@ export interface ProjectV2 { - ap1_email?: string; - ap1_full_name?: string; - ap2_email?: string; - ap2_full_name?: string; + ap1_email: string; + ap1_full_name: string; + ap2_email: string; + ap2_full_name: string; project_active: boolean; - project_approver1_id?: string; - project_approver2_id?: string; + project_approver1_id: string; + project_approver2_id: string; project_code: string; project_created_at: Date; project_description: string; diff --git a/src/app/core/services/projects.service.spec.ts b/src/app/core/services/projects.service.spec.ts index e5a0c6dac8..3152ac6a44 100644 --- a/src/app/core/services/projects.service.spec.ts +++ b/src/app/core/services/projects.service.spec.ts @@ -16,13 +16,6 @@ import { params, } from '../test-data/projects.spec.data'; import { ProjectsService } from './projects.service'; -import { SpenderPlatformV1ApiService } from './spender-platform-v1-api.service'; -import { - platformAPIResponseMultiple, - platformProjectSingleRes, - platformAPIResponseActiveOnly, -} from '../mock-data/platform/v1/platform-project.data'; -import { ProjectPlatformParams } from '../mock-data/platform/v1/platform-projects-params.data'; const fixDate = (data) => data.map((datum) => ({ @@ -35,12 +28,10 @@ describe('ProjectsService', () => { let projectsService: ProjectsService; let apiService: jasmine.SpyObj; let apiV2Service: jasmine.SpyObj; - let spenderPlatformV1ApiService: jasmine.SpyObj; beforeEach(() => { const apiServiceSpy = jasmine.createSpyObj('ApiService', ['get']); const apiv2ServiceSpy = jasmine.createSpyObj('ApiV2Service', ['get']); - const spenderPlatformApiServiceSpy = jasmine.createSpyObj('SpenderPlatformV1ApiService', ['get']); TestBed.configureTestingModule({ providers: [ @@ -53,18 +44,11 @@ describe('ProjectsService', () => { provide: ApiV2Service, useValue: apiv2ServiceSpy, }, - { - provide: SpenderPlatformV1ApiService, - useValue: spenderPlatformApiServiceSpy, - }, ], }); projectsService = TestBed.inject(ProjectsService); apiService = TestBed.inject(ApiService) as jasmine.SpyObj; apiV2Service = TestBed.inject(ApiV2Service) as jasmine.SpyObj; - spenderPlatformV1ApiService = TestBed.inject( - SpenderPlatformV1ApiService - ) as jasmine.SpyObj; }); it('should be created', () => { @@ -72,37 +56,35 @@ describe('ProjectsService', () => { }); it('should be able to fetch project by id', (done) => { - spenderPlatformV1ApiService.get.and.returnValue(of(platformProjectSingleRes)); - spyOn(projectsService, 'transformToV2Response').and.returnValue([apiV2ResponseSingle.data[0]]); + apiV2Service.get.and.returnValue(of(apiV2ResponseSingle)); projectsService.getbyId(257528).subscribe((res) => { - expect(res).toEqual(apiV2ResponseSingle.data[0]); - expect(spenderPlatformV1ApiService.get).toHaveBeenCalledOnceWith('/projects', { - params: { - id: 'eq.257528', - }, - }); - expect(projectsService.transformToV2Response).toHaveBeenCalled(); + expect(res).toEqual(fixDate(apiV2ResponseSingle.data)[0]); done(); }); + + expect(apiV2Service.get).toHaveBeenCalledWith('/projects', { + params: { + project_id: 'eq.257528', + }, + }); }); it('should be able to fetch all active projects', (done) => { - spenderPlatformV1ApiService.get.and.returnValue(of(platformAPIResponseActiveOnly)); - spyOn(projectsService, 'transformToV1Response').and.returnValue(expectedReponseActiveOnly); + apiService.get.and.returnValue(of(apiResponseActiveOnly)); projectsService.getAllActive().subscribe((res) => { expect(res).toEqual(expectedReponseActiveOnly); - expect(spenderPlatformV1ApiService.get).toHaveBeenCalledOnceWith('/projects', { - params: { - is_enabled: `eq.true`, - }, - }); - expect(projectsService.transformToV1Response).toHaveBeenCalled(); done(); }); + + expect(apiService.get).toHaveBeenCalledWith('/projects', { + params: { + active_only: true, + }, + }); }); it('should be able to fetch data when no params provided', (done) => { - spenderPlatformV1ApiService.get.and.returnValue(of(platformAPIResponseMultiple)); + apiV2Service.get.and.returnValue(of(apiV2ResponseMultiple)); projectsService.getByParamsUnformatted({}).subscribe((res) => { expect(res).toEqual(fixDate(apiV2ResponseMultiple.data)); @@ -111,17 +93,15 @@ describe('ProjectsService', () => { }); it('should be able to fetch data when params are provided', (done) => { - spenderPlatformV1ApiService.get.and.returnValue(of(platformAPIResponseMultiple)); - const params = ProjectPlatformParams; + apiV2Service.get.and.returnValue(of(apiV2ResponseMultiple)); + const result = projectsService.getByParamsUnformatted(testProjectParams); - spyOn(projectsService, 'transformToV2Response').and.returnValue(expectedProjectsResponse); result.subscribe((res) => { expect(res).toEqual(expectedProjectsResponse); - expect(spenderPlatformV1ApiService.get).toHaveBeenCalledWith('/projects', { + expect(apiV2Service.get).toHaveBeenCalledWith('/projects', { params, }); - expect(projectsService.transformToV2Response).toHaveBeenCalled(); done(); }); }); @@ -137,7 +117,7 @@ describe('ProjectsService', () => { }); it('should get project count restricted by a set of category IDs', (done) => { - spenderPlatformV1ApiService.get.and.returnValue(of(platformAPIResponseActiveOnly)); + apiService.get.and.returnValue(of(apiResponseActiveOnly)); const result = projectsService.getProjectCount({ categoryIds: testCategoryIds }); result.subscribe((res) => { @@ -147,7 +127,7 @@ describe('ProjectsService', () => { }); it('should get project count not restricted by a set of category IDs', (done) => { - spenderPlatformV1ApiService.get.and.returnValue(of(platformAPIResponseActiveOnly)); + apiService.get.and.returnValue(of(apiResponseActiveOnly)); const resultWithOutParam = projectsService.getProjectCount(); const resultWithParam = projectsService.getProjectCount({ categoryIds: null }); diff --git a/src/app/core/services/projects.service.ts b/src/app/core/services/projects.service.ts index 2e464f579a..7b4b8d7081 100644 --- a/src/app/core/services/projects.service.ts +++ b/src/app/core/services/projects.service.ts @@ -9,26 +9,18 @@ import { ProjectV1 } from '../models/v1/extended-project.model'; import { ProjectParams } from '../models/project-params.model'; import { intersection } from 'lodash'; import { OrgCategory } from '../models/v1/org-category.model'; -import { PlatformProject } from '../models/platform/platform-project.model'; -import { SpenderPlatformV1ApiService } from './spender-platform-v1-api.service'; -import { PlatformApiResponse } from '../models/platform/platform-api-response.model'; -import { PlatformProjectParams } from '../models/platform/v1/platform-project-params.model'; @Injectable({ providedIn: 'root', }) export class ProjectsService { - constructor( - private apiService: ApiService, - private apiV2Service: ApiV2Service, - private spenderPlatformV1ApiService: SpenderPlatformV1ApiService - ) {} + constructor(private apiService: ApiService, private apiV2Service: ApiV2Service) {} @Cacheable() getByParamsUnformatted( projectParams: Partial<{ orgId: string; - isEnabled: boolean; + active: boolean; orgCategoryIds: string[]; searchNameText: string; limit: number; @@ -39,20 +31,20 @@ export class ProjectsService { }> ): Observable { // eslint-disable-next-line prefer-const - let { orgId, isEnabled, orgCategoryIds, searchNameText, limit, offset, sortOrder, sortDirection, projectIds } = + let { orgId, active, orgCategoryIds, searchNameText, limit, offset, sortOrder, sortDirection, projectIds } = projectParams; sortOrder = sortOrder || 'project_updated_at'; sortDirection = sortDirection || 'desc'; - const params: PlatformProjectParams = { - org_id: 'eq.' + orgId, + const params: ProjectParams = { + project_org_id: 'eq.' + orgId, order: sortOrder + '.' + sortDirection, limit: limit || 200, offset: offset || 0, }; // `active` can be optional - this.addActiveFilter(isEnabled, params); + this.addActiveFilter(active, params); // `orgCategoryIds` can be optional this.addOrgCategoryIdsFilter(orgCategoryIds, params); @@ -63,11 +55,19 @@ export class ProjectsService { // `searchNameText` can be optional this.addNameSearchFilter(searchNameText, params); - return this.spenderPlatformV1ApiService - .get>('/projects', { + return this.apiV2Service + .get('/projects', { params, }) - .pipe(map((res) => this.transformToV2Response(res.data))); + .pipe( + map((res) => + res.data.map((datum) => ({ + ...datum, + project_created_at: new Date(datum.project_created_at), + project_updated_at: new Date(datum.project_updated_at), + })) + ) + ); } @Cacheable() @@ -87,27 +87,27 @@ export class ProjectsService { ); } - addNameSearchFilter(searchNameText: string, params: PlatformProjectParams): void { + addNameSearchFilter(searchNameText: string, params: ProjectParams): void { if (typeof searchNameText !== 'undefined' && searchNameText !== null) { - params.name = 'ilike.%' + searchNameText + '%'; + params.project_name = 'ilike.%' + searchNameText + '%'; } } - addProjectIdsFilter(projectIds: number[], params: PlatformProjectParams): void { + addProjectIdsFilter(projectIds: number[], params: ProjectParams): void { if (typeof projectIds !== 'undefined' && projectIds !== null) { - params.id = 'in.(' + projectIds.join(',') + ')'; + params.project_id = 'in.(' + projectIds.join(',') + ')'; } } - addOrgCategoryIdsFilter(orgCategoryIds: string[], params: PlatformProjectParams): void { + addOrgCategoryIdsFilter(orgCategoryIds: string[], params: ProjectParams): void { if (typeof orgCategoryIds !== 'undefined' && orgCategoryIds !== null) { - params.category_ids = 'ov.{' + orgCategoryIds.join(',') + '}'; + params.project_org_category_ids = 'ov.{' + orgCategoryIds.join(',') + '}'; } } - addActiveFilter(isEnabled: boolean, params: PlatformProjectParams): void { - if (typeof isEnabled !== 'undefined' && isEnabled !== null) { - params.is_enabled = 'eq.' + isEnabled; + addActiveFilter(active: boolean, params: ProjectParams): void { + if (typeof active !== 'undefined' && active !== null) { + params.project_active = 'eq.' + active; } } @@ -129,57 +129,37 @@ export class ProjectsService { getAllActive(): Observable { const data = { params: { - is_enabled: `eq.true`, + active_only: true, }, }; - return this.spenderPlatformV1ApiService - .get>('/projects', data) - .pipe(map((res) => this.transformToV1Response(res.data))); + return this.apiService.get('/projects', data).pipe( + map((res) => + res.map((datum) => ({ + ...datum, + created_at: new Date(datum.created_at), + updated_at: new Date(datum.updated_at), + })) + ) + ); } getbyId(projectId: number | string): Observable { - return this.spenderPlatformV1ApiService - .get>('/projects', { + return this.apiV2Service + .get('/projects', { params: { - id: `eq.${projectId}`, + project_id: `eq.${projectId}`, }, }) - .pipe(map((res) => this.transformToV2Response(res.data)[0])); - } - - transformToV1Response(platformProject: PlatformProject[]): ProjectV1[] { - const projectV1 = platformProject.map((platformProject) => ({ - id: platformProject.id, - created_at: new Date(platformProject.created_at), - updated_at: new Date(platformProject.updated_at), - name: platformProject.name, - sub_project: platformProject.sub_project, - code: platformProject.code, - org_id: platformProject.org_id, - description: platformProject.description, - active: platformProject.is_enabled, - org_category_ids: platformProject.category_ids, - })); - - return projectV1; - } - - transformToV2Response(platformProject: PlatformProject[]): ProjectV2[] { - const projectV2 = platformProject.map((platformProject) => ({ - project_active: platformProject.is_enabled, - project_code: platformProject.code, - project_created_at: new Date(platformProject.created_at), - project_description: platformProject.description, - project_id: platformProject.id, - project_name: platformProject.display_name, - project_org_category_ids: platformProject.category_ids, - project_org_id: platformProject.org_id, - project_updated_at: new Date(platformProject.updated_at), - projectv2_name: platformProject.name, - sub_project_name: platformProject.sub_project, - })); - - return projectV2; + .pipe( + map( + (res) => + res.data.map((datum) => ({ + ...datum, + project_created_at: new Date(datum.project_created_at), + project_updated_at: new Date(datum.project_updated_at), + }))[0] + ) + ); } } diff --git a/src/app/core/services/recently-used-items.service.spec.ts b/src/app/core/services/recently-used-items.service.spec.ts index 0a56aaa58c..437ab4cde6 100644 --- a/src/app/core/services/recently-used-items.service.spec.ts +++ b/src/app/core/services/recently-used-items.service.spec.ts @@ -65,9 +65,9 @@ describe('RecentlyUsedItemsService', () => { recentlyUsedItemsService.getRecentlyUsedProjects(config).subscribe((res) => { expect(projectsService.getByParamsUnformatted).toHaveBeenCalledOnceWith({ orgId: config.eou.ou.org_id, - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: config.categoryIds, projectIds: config.recentValues.recent_project_ids, offset: 0, diff --git a/src/app/core/services/recently-used-items.service.ts b/src/app/core/services/recently-used-items.service.ts index 4a29a5d995..5a0bba0475 100644 --- a/src/app/core/services/recently-used-items.service.ts +++ b/src/app/core/services/recently-used-items.service.ts @@ -33,9 +33,9 @@ export class RecentlyUsedItemsService { return this.projectsService .getByParamsUnformatted({ orgId: config.eou.ou.org_id, - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: config.categoryIds, projectIds: config.recentValues.recent_project_ids, offset: 0, diff --git a/src/app/core/test-data/projects.spec.data.ts b/src/app/core/test-data/projects.spec.data.ts index a63bae5b1c..64c42dcece 100644 --- a/src/app/core/test-data/projects.spec.data.ts +++ b/src/app/core/test-data/projects.spec.data.ts @@ -1,4 +1,6 @@ import deepFreeze from 'deep-freeze-strict'; + +import { ProjectParams } from '../models/project-params.model'; import { ProjectV1 } from '../models/v1/extended-project.model'; import { OrgCategory, OrgCategoryListItem } from '../models/v1/org-category.model'; import { ProjectV2 } from '../models/v2/project-v2.model'; @@ -14,6 +16,8 @@ export const apiResponseActiveOnly = deepFreeze([ org_id: 'orFdTTTNcyye', description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', active: true, + approver1_id: null, + approver2_id: null, org_category_ids: [null, 145429, 122269, 122271], }, { @@ -26,6 +30,8 @@ export const apiResponseActiveOnly = deepFreeze([ org_id: 'orFdTTTNcyye', description: 'Sage Intacct Project - Sage Project 8, Id - 1178', active: true, + approver1_id: null, + approver2_id: null, org_category_ids: [null, 145429, 122269, 122271], }, { @@ -38,6 +44,8 @@ export const apiResponseActiveOnly = deepFreeze([ org_id: 'orFdTTTNcyye', description: 'Sage Intacct Project - Fyle Team Integrations, Id - 1183', active: true, + approver1_id: null, + approver2_id: null, org_category_ids: null, }, ]); @@ -53,6 +61,8 @@ export const expectedReponseActiveOnly = deepFreeze([ org_id: 'orFdTTTNcyye', description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', active: true, + approver1_id: null, + approver2_id: null, org_category_ids: [null, 145429, 122269, 122271], }, { @@ -65,6 +75,8 @@ export const expectedReponseActiveOnly = deepFreeze([ org_id: 'orFdTTTNcyye', description: 'Sage Intacct Project - Sage Project 8, Id - 1178', active: true, + approver1_id: null, + approver2_id: null, org_category_ids: [null, 145429, 122269, 122271], }, { @@ -77,6 +89,8 @@ export const expectedReponseActiveOnly = deepFreeze([ org_id: 'orFdTTTNcyye', description: 'Sage Intacct Project - Fyle Team Integrations, Id - 1183', active: true, + approver1_id: null, + approver2_id: null, org_category_ids: null, }, ]); @@ -85,7 +99,13 @@ export const apiV2ResponseMultiple = deepFreeze({ count: 2, data: [ { + ap1_email: null, + ap1_full_name: null, + ap2_email: null, + ap2_full_name: null, project_active: true, + project_approver1_id: null, + project_approver2_id: null, project_code: '1184', project_created_at: new Date('2021-05-12T10:28:40.834844'), project_description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', @@ -98,7 +118,13 @@ export const apiV2ResponseMultiple = deepFreeze({ sub_project_name: null, }, { + ap1_email: null, + ap1_full_name: null, + ap2_email: null, + ap2_full_name: null, project_active: true, + project_approver1_id: null, + project_approver2_id: null, project_code: '1182', project_created_at: new Date('2021-05-12T10:28:40.834844'), project_description: 'Sage Intacct Project - Fyle Engineering, Id - 1182', @@ -120,7 +146,13 @@ export const apiV2ResponseSingle = deepFreeze({ count: 1, data: [ { + ap1_email: null, + ap1_full_name: null, + ap2_email: null, + ap2_full_name: null, project_active: true, + project_approver1_id: null, + project_approver2_id: null, project_code: '1184', project_created_at: new Date('2021-05-12T10:28:40.834844'), project_description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', @@ -287,7 +319,13 @@ export const allowedActiveCategoriesListOptions: OrgCategoryListItem[] = deepFre export const expectedProjectsResponse: ProjectV2[] = deepFreeze([ { + ap1_email: null, + ap1_full_name: null, + ap2_email: null, + ap2_full_name: null, project_active: true, + project_approver1_id: null, + project_approver2_id: null, project_code: '1184', project_created_at: new Date('2021-05-12T10:28:40.834844'), project_description: 'Sage Intacct Project - Customer Mapped Project, Id - 1184', @@ -300,7 +338,13 @@ export const expectedProjectsResponse: ProjectV2[] = deepFreeze([ sub_project_name: null, }, { + ap1_email: null, + ap1_full_name: null, + ap2_email: null, + ap2_full_name: null, project_active: true, + project_approver1_id: null, + project_approver2_id: null, project_code: '1182', project_created_at: new Date('2021-05-12T10:28:40.834844'), project_description: 'Sage Intacct Project - Fyle Engineering, Id - 1182', @@ -314,11 +358,11 @@ export const expectedProjectsResponse: ProjectV2[] = deepFreeze([ }, ]); -export const testProjectParams = deepFreeze({ +export const testProjectParams: ProjectParams = deepFreeze({ orgId: 'orNVthTo2Zyo', - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: [null, '122269', '122270', '122271', '122272', '122273'], projectIds: [3943, 305792, 148971, 247936], offset: 0, diff --git a/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.spec.ts b/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.spec.ts index b546517f11..0f3cd2eb22 100644 --- a/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.spec.ts +++ b/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.spec.ts @@ -117,7 +117,7 @@ describe('FyProjectSelectModalComponent', () => { projectsService.getbyId.and.returnValue(of(singleProjects1)); orgSettingsService.get.and.returnValue(of(orgSettingsData)); - authService.getEou.and.resolveTo(apiEouRes); + authService.getEou.and.returnValue(Promise.resolve(apiEouRes)); orgUserSettingsService.get.and.returnValue(of(orgUserSettingsData)); projectsService.getByParamsUnformatted.and.returnValue(of([singleProject2])); @@ -125,7 +125,7 @@ describe('FyProjectSelectModalComponent', () => { component.cacheName = 'projects'; component.defaultValue = true; component.searchBarRef = fixture.debugElement.query(By.css('.selection-modal--search-input')); - recentLocalStorageItemsService.get.and.resolveTo([testProjectV2]); + recentLocalStorageItemsService.get.and.returnValue(Promise.resolve([testProjectV2])); utilityService.searchArrayStream.and.returnValue(() => of([{ label: '', value: '' }])); fixture.detectChanges(); @@ -140,7 +140,7 @@ describe('FyProjectSelectModalComponent', () => { it('should get projects when current selection is not defined', (done) => { projectsService.getByParamsUnformatted.and.returnValue(of(projects)); projectsService.getbyId.and.returnValue(of(expectedProjects[0].value)); - authService.getEou.and.resolveTo(apiEouRes); + authService.getEou.and.returnValue(Promise.resolve(apiEouRes)); component.getProjects('projects').subscribe((res) => { expect(res).toEqual(expectedProjects); @@ -149,9 +149,9 @@ describe('FyProjectSelectModalComponent', () => { expect(orgUserSettingsService.get).toHaveBeenCalledTimes(4); expect(projectsService.getByParamsUnformatted).toHaveBeenCalledWith({ orgId: 'orNVthTo2Zyo', - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: undefined, projectIds: null, searchNameText: '', @@ -175,9 +175,9 @@ describe('FyProjectSelectModalComponent', () => { expect(orgUserSettingsService.get).toHaveBeenCalledTimes(4); expect(projectsService.getByParamsUnformatted).toHaveBeenCalledWith({ orgId: 'orNVthTo2Zyo', - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: undefined, projectIds: null, searchNameText: '', @@ -201,9 +201,9 @@ describe('FyProjectSelectModalComponent', () => { expect(orgUserSettingsService.get).toHaveBeenCalledTimes(4); expect(projectsService.getByParamsUnformatted).toHaveBeenCalledWith({ orgId: 'orNVthTo2Zyo', - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: undefined, projectIds: null, searchNameText: '', @@ -251,12 +251,14 @@ describe('FyProjectSelectModalComponent', () => { }); it('should get project from recently used storage if not already present', (done) => { - recentLocalStorageItemsService.get.and.resolveTo([ - { - label: 'label', - value: testProjectV2, - }, - ]); + recentLocalStorageItemsService.get.and.returnValue( + Promise.resolve([ + { + label: 'label', + value: testProjectV2, + }, + ]) + ); component.recentlyUsed = null; component.cacheName = 'project'; fixture.detectChanges(); @@ -275,16 +277,16 @@ describe('FyProjectSelectModalComponent', () => { }); }); - it('onDoneClick(): should dimiss the modal on clicking the done CTA', async () => { - modalController.dismiss.and.resolveTo(true); + it('onDoneClick(): should dimiss the modal on clicking the done CTA', () => { + modalController.dismiss.and.returnValue(Promise.resolve(true)); - await component.onDoneClick(); + component.onDoneClick(); expect(modalController.dismiss).toHaveBeenCalledTimes(1); }); describe('onElementSelect():', () => { it('should dismiss the modal with selected option', () => { - modalController.dismiss.and.resolveTo(true); + modalController.dismiss.and.returnValue(Promise.resolve(true)); component.onElementSelect({ label: '', value: null }); expect(modalController.dismiss).toHaveBeenCalledWith({ label: '', value: null }); @@ -292,7 +294,7 @@ describe('FyProjectSelectModalComponent', () => { }); it('should cache the selected option and dismiss the modal', () => { - modalController.dismiss.and.resolveTo(true); + modalController.dismiss.and.returnValue(Promise.resolve(true)); recentLocalStorageItemsService.post.and.returnValue(null); component.cacheName = 'cache'; fixture.detectChanges(); diff --git a/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.ts b/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.ts index a90a510e50..a5581fca4b 100644 --- a/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.ts +++ b/src/app/shared/components/fy-select-project/fy-select-modal/fy-select-project-modal.component.ts @@ -85,9 +85,9 @@ export class FyProjectSelectModalComponent implements AfterViewInit { switchMap((eou) => this.projectsService.getByParamsUnformatted({ orgId: eou.ou.org_id, - isEnabled: true, + active: true, sortDirection: 'asc', - sortOrder: 'name', + sortOrder: 'project_name', orgCategoryIds: this.categoryIds, projectIds: allowedProjectIds, searchNameText,