Skip to content

Commit 6dbe9f9

Browse files
authored
Merge pull request #3304 from SeedCompany/drop-deprecations
Drop deprecated ceremony / project member GQL queries
2 parents 814a806 + ebf13c2 commit 6dbe9f9

File tree

6 files changed

+33
-225
lines changed

6 files changed

+33
-225
lines changed
Lines changed: 4 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,12 @@
1-
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
2-
import {
3-
AnonSession,
4-
ID,
5-
IdArg,
6-
ListArg,
7-
LoggedInSession,
8-
Session,
9-
} from '~/common';
10-
import { Loader, LoaderOf } from '~/core';
11-
import { CeremonyLoader, CeremonyService } from '../ceremony';
12-
import {
13-
Ceremony,
14-
CeremonyListInput,
15-
CeremonyListOutput,
16-
UpdateCeremonyInput,
17-
UpdateCeremonyOutput,
18-
} from './dto';
1+
import { Args, Mutation, Resolver } from '@nestjs/graphql';
2+
import { LoggedInSession, Session } from '~/common';
3+
import { CeremonyService } from '../ceremony';
4+
import { UpdateCeremonyInput, UpdateCeremonyOutput } from './dto';
195

206
@Resolver()
217
export class CeremonyResolver {
228
constructor(private readonly service: CeremonyService) {}
239

24-
@Query(() => Ceremony, {
25-
description: 'Look up a ceremony by its ID',
26-
deprecationReason: 'Query via engagement instead',
27-
})
28-
async ceremony(
29-
@IdArg() id: ID,
30-
@Loader(CeremonyLoader) ceremonies: LoaderOf<CeremonyLoader>,
31-
): Promise<Ceremony> {
32-
return await ceremonies.load(id);
33-
}
34-
35-
@Query(() => CeremonyListOutput, {
36-
description: 'Look up ceremonies',
37-
deprecationReason: 'Query via engagement instead',
38-
})
39-
async ceremonies(
40-
@AnonSession() session: Session,
41-
@ListArg(CeremonyListInput) input: CeremonyListInput,
42-
@Loader(CeremonyLoader) ceremonies: LoaderOf<CeremonyLoader>,
43-
): Promise<CeremonyListOutput> {
44-
const list = await this.service.list(input, session);
45-
ceremonies.primeAll(list.items);
46-
return list;
47-
}
48-
4910
@Mutation(() => UpdateCeremonyOutput, {
5011
description: 'Update a ceremony',
5112
})
@@ -56,10 +17,4 @@ export class CeremonyResolver {
5617
const ceremony = await this.service.update(input, session);
5718
return { ceremony };
5819
}
59-
60-
// Ceremonies are created automatically via engagements
61-
// async createCeremony() {}
62-
63-
// Ceremonies are deleted automatically via engagements
64-
// async deleteCeremony() {}
6520
}

src/components/ceremony/ceremony.service.ts

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,7 @@ import {
1010
import { HandleIdLookup, ILogger, Logger } from '~/core';
1111
import { Privileges } from '../authorization';
1212
import { CeremonyRepository } from './ceremony.repository';
13-
import {
14-
Ceremony,
15-
CeremonyListInput,
16-
CeremonyListOutput,
17-
CreateCeremony,
18-
UpdateCeremony,
19-
} from './dto';
13+
import { Ceremony, CreateCeremony, UpdateCeremony } from './dto';
2014

2115
@Injectable()
2216
export class CeremonyService {
@@ -85,15 +79,4 @@ export class CeremonyService {
8579
throw new ServerException('Failed to delete Ceremony');
8680
}
8781
}
88-
89-
async list(
90-
input: CeremonyListInput,
91-
session: Session,
92-
): Promise<CeremonyListOutput> {
93-
const results = await this.repo.list(input, session);
94-
return {
95-
...results,
96-
items: results.items.map((dto) => this.secure(dto, session)),
97-
};
98-
}
9982
}

src/components/ceremony/dto/list-ceremony.dto.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { Field, InputType, ObjectType } from '@nestjs/graphql';
2-
import { FilterField, PaginatedList, SortablePaginationInput } from '~/common';
1+
import { Field, InputType } from '@nestjs/graphql';
2+
import { FilterField, SortablePaginationInput } from '~/common';
33
import { CeremonyType } from './ceremony-type.enum';
44
import { Ceremony } from './ceremony.dto';
55

@@ -21,6 +21,3 @@ export class CeremonyListInput extends SortablePaginationInput<
2121
@FilterField(() => CeremonyFilters)
2222
readonly filter?: CeremonyFilters;
2323
}
24-
25-
@ObjectType()
26-
export class CeremonyListOutput extends PaginatedList(Ceremony) {}

src/components/project/project-member/project-member.resolver.ts

Lines changed: 3 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,10 @@
1-
import { Args, Mutation, Query, Resolver } from '@nestjs/graphql';
2-
import {
3-
AnonSession,
4-
ID,
5-
IdArg,
6-
ListArg,
7-
LoggedInSession,
8-
Session,
9-
} from '~/common';
10-
import { Loader, LoaderOf } from '~/core';
11-
import { ProjectMemberLoader, ProjectMemberService } from '../project-member';
1+
import { Args, Mutation, Resolver } from '@nestjs/graphql';
2+
import { ID, IdArg, LoggedInSession, Session } from '~/common';
3+
import { ProjectMemberService } from '../project-member';
124
import {
135
CreateProjectMemberInput,
146
CreateProjectMemberOutput,
157
DeleteProjectMemberOutput,
16-
ProjectMember,
17-
ProjectMemberListInput,
18-
ProjectMemberListOutput,
198
UpdateProjectMemberInput,
209
UpdateProjectMemberOutput,
2110
} from './dto';
@@ -35,31 +24,6 @@ export class ProjectMemberResolver {
3524
return { projectMember };
3625
}
3726

38-
@Query(() => ProjectMember, {
39-
description: 'Look up a project member by ID',
40-
deprecationReason: 'Query via project instead',
41-
})
42-
async projectMember(
43-
@Loader(ProjectMemberLoader) projectMembers: LoaderOf<ProjectMemberLoader>,
44-
@IdArg() id: ID,
45-
): Promise<ProjectMember> {
46-
return await projectMembers.load(id);
47-
}
48-
49-
@Query(() => ProjectMemberListOutput, {
50-
description: 'Look up project members',
51-
deprecationReason: 'Query via project instead',
52-
})
53-
async projectMembers(
54-
@AnonSession() session: Session,
55-
@ListArg(ProjectMemberListInput) input: ProjectMemberListInput,
56-
@Loader(ProjectMemberLoader) projectMembers: LoaderOf<ProjectMemberLoader>,
57-
): Promise<ProjectMemberListOutput> {
58-
const list = await this.service.list(input, session);
59-
projectMembers.primeAll(list.items);
60-
return list;
61-
}
62-
6327
@Mutation(() => UpdateProjectMemberOutput, {
6428
description: 'Update a project member',
6529
})

test/engagement.e2e-spec.ts

Lines changed: 22 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -569,12 +569,20 @@ describe('Engagement e2e', () => {
569569

570570
await registerUser(app, { roles: [Role.FieldOperationsDirector] });
571571
const date = '2020-05-13';
572-
await app.graphql.mutate(
572+
const result = await app.graphql.mutate(
573573
gql`
574574
mutation updateCeremony($input: UpdateCeremonyInput!) {
575575
updateCeremony(input: $input) {
576576
ceremony {
577577
id
578+
planned {
579+
value
580+
}
581+
estimatedDate {
582+
value
583+
canRead
584+
canEdit
585+
}
578586
}
579587
}
580588
}
@@ -589,28 +597,8 @@ describe('Engagement e2e', () => {
589597
},
590598
},
591599
);
592-
const result = await app.graphql.query(
593-
gql`
594-
query ceremony($id: ID!) {
595-
ceremony(id: $id) {
596-
id
597-
planned {
598-
value
599-
}
600-
estimatedDate {
601-
value
602-
canRead
603-
canEdit
604-
}
605-
}
606-
}
607-
`,
608-
{
609-
id: languageEngagementRead?.engagement?.ceremony?.value?.id,
610-
},
611-
);
612-
expect(result.ceremony.planned.value).toBeTruthy();
613-
expect(result.ceremony.estimatedDate.value).toBe(date);
600+
expect(result.updateCeremony.ceremony.planned.value).toBeTruthy();
601+
expect(result.updateCeremony.ceremony.estimatedDate.value).toBe(date);
614602

615603
await user.login();
616604
});
@@ -645,12 +633,20 @@ describe('Engagement e2e', () => {
645633

646634
await registerUser(app, { roles: [Role.FieldOperationsDirector] });
647635
const date = '2020-05-13';
648-
await app.graphql.mutate(
636+
const result = await app.graphql.mutate(
649637
gql`
650638
mutation updateCeremony($input: UpdateCeremonyInput!) {
651639
updateCeremony(input: $input) {
652640
ceremony {
653641
id
642+
planned {
643+
value
644+
}
645+
estimatedDate {
646+
value
647+
canRead
648+
canEdit
649+
}
654650
}
655651
}
656652
}
@@ -665,28 +661,8 @@ describe('Engagement e2e', () => {
665661
},
666662
},
667663
);
668-
const result = await app.graphql.query(
669-
gql`
670-
query ceremony($id: ID!) {
671-
ceremony(id: $id) {
672-
id
673-
planned {
674-
value
675-
}
676-
estimatedDate {
677-
value
678-
canRead
679-
canEdit
680-
}
681-
}
682-
}
683-
`,
684-
{
685-
id: internshipEngagementRead?.engagement?.ceremony?.value?.id,
686-
},
687-
);
688-
expect(result.ceremony.planned.value).toBeTruthy();
689-
expect(result.ceremony.estimatedDate.value).toBe(date);
664+
expect(result.updateCeremony.ceremony.planned.value).toBeTruthy();
665+
expect(result.updateCeremony.ceremony.estimatedDate.value).toBe(date);
690666

691667
await user.login();
692668
});

test/project-member.e2e-spec.ts

Lines changed: 1 addition & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import { times } from 'lodash';
21
import { DateTime, Interval } from 'luxon';
3-
import { isValidId, Role } from '~/common';
2+
import { Role } from '~/common';
43
import { Project } from '../src/components/project/dto';
54
import { ProjectMember } from '../src/components/project/project-member/dto';
65
import {
@@ -71,72 +70,6 @@ describe('ProjectMember e2e', () => {
7170
);
7271
});
7372

74-
it('read one projectMember by id', async () => {
75-
const member = await createPerson(app);
76-
const projectMember = await createProjectMember(app, {
77-
userId: member.id,
78-
projectId: project.id,
79-
});
80-
const result = await app.graphql.query(
81-
gql`
82-
query projectMember($id: ID!) {
83-
projectMember(id: $id) {
84-
...projectMember
85-
}
86-
}
87-
${fragments.projectMember}
88-
`,
89-
{
90-
id: projectMember.id,
91-
},
92-
);
93-
94-
const actual: ProjectMember = result.projectMember;
95-
expect(actual.id).toBe(projectMember.id);
96-
expect(isValidId(actual.id)).toBe(true);
97-
expect(actual.user.value?.id).toBe(member.id);
98-
});
99-
100-
it.skip('list view of ProjectMember', async () => {
101-
const numProjectMembers = 2;
102-
const userForList = await createPerson(app);
103-
const userId = userForList.id;
104-
const projectIds = await Promise.all(
105-
times(numProjectMembers).map(async () => {
106-
await createPerson(app);
107-
const project = await createProject(app);
108-
return project.id;
109-
}),
110-
);
111-
112-
await Promise.all(
113-
times(numProjectMembers, async (index) => {
114-
await createProjectMember(app, {
115-
userId: userId,
116-
projectId: projectIds[index],
117-
roles: [Role.Consultant],
118-
});
119-
}),
120-
);
121-
122-
const { projectMembers } = await app.graphql.query(
123-
gql`
124-
query {
125-
projectMembers(input: { filter: { roles: [Consultant] } }) {
126-
items {
127-
id
128-
}
129-
hasMore
130-
total
131-
}
132-
}
133-
`,
134-
);
135-
expect(projectMembers.items.length).toBeGreaterThanOrEqual(
136-
numProjectMembers,
137-
);
138-
});
139-
14073
it.skip('delete projectMember', async () => {
14174
const member = await createPerson(app);
14275
const projectMember = await createProjectMember(app, {

0 commit comments

Comments
 (0)