Skip to content

Commit 799eb03

Browse files
authored
feat(api): refactor Query.organization + expose via public API (#6653)
1 parent e53bc9d commit 799eb03

32 files changed

+258
-338
lines changed

integration-tests/testkit/flow.ts

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -87,18 +87,16 @@ export function getOrganization(organizationSlug: string, authToken: string) {
8787
return execute({
8888
document: graphql(`
8989
query getOrganization($organizationSlug: String!) {
90-
organization(selector: { organizationSlug: $organizationSlug }) {
91-
organization {
92-
id
93-
slug
94-
getStarted {
95-
creatingProject
96-
publishingSchema
97-
checkingSchema
98-
invitingMembers
99-
reportingOperations
100-
enablingUsageBasedBreakingChanges
101-
}
90+
organization(reference: { bySelector: { organizationSlug: $organizationSlug } }) {
91+
id
92+
slug
93+
getStarted {
94+
creatingProject
95+
publishingSchema
96+
checkingSchema
97+
invitingMembers
98+
reportingOperations
99+
enablingUsageBasedBreakingChanges
102100
}
103101
}
104102
}
@@ -205,20 +203,18 @@ export function getOrganizationMembers(selector: OrganizationSelectorInput, auth
205203
return execute({
206204
document: graphql(`
207205
query getOrganizationMembers($selector: OrganizationSelectorInput!) {
208-
organization(selector: $selector) {
209-
organization {
210-
members {
211-
nodes {
206+
organization(reference: { bySelector: $selector }) {
207+
members {
208+
nodes {
209+
id
210+
user {
212211
id
213-
user {
214-
id
215-
email
216-
}
217-
role {
218-
id
219-
name
220-
permissions
221-
}
212+
email
213+
}
214+
role {
215+
id
216+
name
217+
permissions
222218
}
223219
}
224220
}
@@ -236,14 +232,12 @@ export function getOrganizationProjects(selector: OrganizationSelectorInput, aut
236232
return execute({
237233
document: graphql(`
238234
query getOrganizationProjects($selector: OrganizationSelectorInput!) {
239-
organization(selector: $selector) {
240-
organization {
241-
projects {
242-
nodes {
243-
id
244-
slug
245-
name
246-
}
235+
organization(reference: { bySelector: $selector }) {
236+
projects {
237+
nodes {
238+
id
239+
slug
240+
name
247241
}
248242
}
249243
}
@@ -590,11 +584,9 @@ export function readOrganizationInfo(
590584
return execute({
591585
document: graphql(`
592586
query readOrganizationInfo($selector: OrganizationSelectorInput!) {
593-
organization(selector: $selector) {
594-
organization {
595-
id
596-
slug
597-
}
587+
organization(reference: { bySelector: $selector }) {
588+
id
589+
slug
598590
}
599591
}
600592
`),

integration-tests/testkit/schema-policy.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,16 @@ import { RuleInstanceSeverityLevel, SchemaPolicyInput } from './gql/graphql';
33

44
export const OrganizationAndProjectsWithSchemaPolicy = graphql(`
55
query OrganizationAndProjectsWithSchemaPolicy($organization: String!) {
6-
organization(selector: { organizationSlug: $organization }) {
7-
organization {
6+
organization(reference: { bySelector: { organizationSlug: $organization } }) {
7+
id
8+
schemaPolicy {
89
id
9-
schemaPolicy {
10+
}
11+
projects {
12+
nodes {
1013
id
11-
}
12-
projects {
13-
nodes {
14+
schemaPolicy {
1415
id
15-
schemaPolicy {
16-
id
17-
}
1816
}
1917
}
2018
}

integration-tests/testkit/seed.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ export function initSeed() {
175175
r.expectNoGraphQLErrors(),
176176
);
177177

178-
return result.organization!.organization;
178+
return result.organization!;
179179
},
180180
async inviteMember(
181181
email = '[email protected]',
@@ -202,7 +202,7 @@ export function initSeed() {
202202
ownerToken,
203203
).then(r => r.expectNoGraphQLErrors());
204204

205-
const members = membersResult.organization?.organization.members?.nodes;
205+
const members = membersResult.organization?.members?.nodes;
206206

207207
if (!members) {
208208
throw new Error(`Could not get members for org ${organization.slug}`);
@@ -216,7 +216,7 @@ export function initSeed() {
216216
token,
217217
).then(r => r.expectNoGraphQLErrors());
218218

219-
const projects = projectsResult.organization?.organization.projects.nodes;
219+
const projects = projectsResult.organization?.projects.nodes;
220220

221221
if (!projects) {
222222
throw new Error(`Could not get projects for org ${organization.slug}`);

integration-tests/tests/api/oidc-integrations/crud.spec.ts

Lines changed: 22 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,20 @@ import { initSeed } from '../../../testkit/seed';
55

66
const OrganizationWithOIDCIntegration = graphql(`
77
query OrganizationWithOIDCIntegration($organizationSlug: String!) {
8-
organization(selector: { organizationSlug: $organizationSlug }) {
9-
organization {
8+
organization(reference: { bySelector: { organizationSlug: $organizationSlug } }) {
9+
id
10+
oidcIntegration {
1011
id
11-
oidcIntegration {
12-
id
13-
oidcUserAccessOnly
14-
}
12+
oidcUserAccessOnly
1513
}
1614
}
1715
}
1816
`);
1917

2018
const OrganizationReadTest = graphql(`
2119
query OrganizationReadTest($organizationSlug: String!) {
22-
organization(selector: { organizationSlug: $organizationSlug }) {
23-
organization {
24-
id
25-
}
20+
organization(reference: { bySelector: { organizationSlug: $organizationSlug } }) {
21+
id
2622
}
2723
}
2824
`);
@@ -119,12 +115,10 @@ describe('create', () => {
119115

120116
expect(refetchedOrg).toEqual({
121117
organization: {
122-
organization: {
123-
id: organization.id,
124-
oidcIntegration: {
125-
id: result.createOIDCIntegration.ok!.createdOIDCIntegration.id,
126-
oidcUserAccessOnly: true,
127-
},
118+
id: organization.id,
119+
oidcIntegration: {
120+
id: result.createOIDCIntegration.ok!.createdOIDCIntegration.id,
121+
oidcUserAccessOnly: true,
128122
},
129123
},
130124
});
@@ -462,12 +456,10 @@ describe('delete', () => {
462456

463457
expect(refetchedOrg).toEqual({
464458
organization: {
465-
organization: {
466-
id: organization.id,
467-
oidcIntegration: {
468-
id: oidcIntegrationId,
469-
oidcUserAccessOnly: true,
470-
},
459+
id: organization.id,
460+
oidcIntegration: {
461+
id: oidcIntegrationId,
462+
oidcUserAccessOnly: true,
471463
},
472464
},
473465
});
@@ -501,10 +493,8 @@ describe('delete', () => {
501493

502494
expect(refetchedOrg).toEqual({
503495
organization: {
504-
organization: {
505-
id: organization.id,
506-
oidcIntegration: null,
507-
},
496+
id: organization.id,
497+
oidcIntegration: null,
508498
},
509499
});
510500
});
@@ -805,9 +795,7 @@ describe('restrictions', () => {
805795
authToken: ownerToken,
806796
}).then(r => r.expectNoGraphQLErrors());
807797

808-
expect(refetchedOrg.organization?.organization.oidcIntegration?.oidcUserAccessOnly).toEqual(
809-
true,
810-
);
798+
expect(refetchedOrg.organization?.oidcIntegration?.oidcUserAccessOnly).toEqual(true);
811799

812800
const invitation = await inviteMember('[email protected]');
813801
const invitationCode = invitation.ok?.code;
@@ -847,9 +835,7 @@ describe('restrictions', () => {
847835
authToken: ownerToken,
848836
}).then(r => r.expectNoGraphQLErrors());
849837

850-
expect(orgAfterOidc.organization?.organization.oidcIntegration?.oidcUserAccessOnly).toEqual(
851-
true,
852-
);
838+
expect(orgAfterOidc.organization?.oidcIntegration?.oidcUserAccessOnly).toEqual(true);
853839

854840
const restrictionsUpdateResult = await execute({
855841
document: UpdateOIDCRestrictionsMutation,
@@ -875,8 +861,7 @@ describe('restrictions', () => {
875861
}).then(r => r.expectNoGraphQLErrors());
876862

877863
expect(
878-
orgAfterDisablingOidcRestrictions.organization?.organization.oidcIntegration
879-
?.oidcUserAccessOnly,
864+
orgAfterDisablingOidcRestrictions.organization?.oidcIntegration?.oidcUserAccessOnly,
880865
).toEqual(false);
881866

882867
const invitation = await inviteMember('[email protected]');
@@ -929,7 +914,7 @@ describe('restrictions', () => {
929914
authToken: ownerToken,
930915
}).then(r => r.expectNoGraphQLErrors());
931916

932-
expect(readAccessCheck.organization?.organization.id).toEqual(organization.id);
917+
expect(readAccessCheck.organization?.id).toEqual(organization.id);
933918
},
934919
);
935920
});
@@ -969,7 +954,7 @@ test.concurrent(
969954
authToken: memberToken,
970955
}).then(r => r.expectNoGraphQLErrors());
971956

972-
expect(result.organization!.organization.oidcIntegration).toEqual(null);
957+
expect(result.organization!.oidcIntegration).toEqual(null);
973958

974959
await updateMemberRole(role, ['oidc:modify']);
975960

@@ -981,6 +966,6 @@ test.concurrent(
981966
authToken: memberToken,
982967
}).then(r => r.expectNoGraphQLErrors());
983968

984-
expect(result.organization!.organization.oidcIntegration).not.toEqual(null);
969+
expect(result.organization!.oidcIntegration).not.toEqual(null);
985970
},
986971
);

integration-tests/tests/api/policy/policy-access.spec.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,9 @@ describe('Policy Access', () => {
134134
describe('Organization', () => {
135135
const query = graphql(`
136136
query OrganizationSchemaPolicyAccess($selector: OrganizationSelectorInput!) {
137-
organization(selector: $selector) {
138-
organization {
139-
schemaPolicy {
140-
id
141-
}
137+
organization(reference: { bySelector: $selector }) {
138+
schemaPolicy {
139+
id
142140
}
143141
}
144142
}
@@ -259,7 +257,7 @@ describe('Policy Access', () => {
259257
},
260258
authToken: memberToken,
261259
}).then(r => r.expectNoGraphQLErrors());
262-
expect(result.organization?.organization.schemaPolicy?.id).not.toBeNull();
260+
expect(result.organization?.schemaPolicy?.id).not.toBeNull();
263261
},
264262
);
265263
});

integration-tests/tests/api/policy/policy-crud.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ describe('Policy CRUD', () => {
2727
authToken: ownerToken,
2828
}).then(r => r.expectNoGraphQLErrors());
2929

30-
expect(result.organization?.organization.schemaPolicy).toBe(null);
31-
expect(result.organization?.organization.projects.nodes).toHaveLength(1);
32-
expect(result.organization?.organization.projects.nodes[0].schemaPolicy).toBeNull();
30+
expect(result.organization?.schemaPolicy).toBe(null);
31+
expect(result.organization?.projects.nodes).toHaveLength(1);
32+
expect(result.organization?.projects.nodes[0].schemaPolicy).toBeNull();
3333
},
3434
);
3535

@@ -123,8 +123,8 @@ describe('Policy CRUD', () => {
123123
authToken: ownerToken,
124124
}).then(r => r.expectNoGraphQLErrors());
125125

126-
expect(result.organization?.organization.projects.nodes).toHaveLength(1);
127-
expect(result.organization?.organization.projects.nodes[0].schemaPolicy).toBeNull();
126+
expect(result.organization?.projects.nodes).toHaveLength(1);
127+
expect(result.organization?.projects.nodes[0].schemaPolicy).toBeNull();
128128
},
129129
);
130130

@@ -178,9 +178,9 @@ describe('Policy CRUD', () => {
178178
authToken: ownerToken,
179179
}).then(r => r.expectNoGraphQLErrors());
180180

181-
expect(result.organization?.organization.schemaPolicy).toBe(null);
182-
expect(result.organization?.organization.projects.nodes).toHaveLength(1);
183-
expect(result.organization?.organization.projects.nodes[0].schemaPolicy).toBeNull();
181+
expect(result.organization?.schemaPolicy).toBe(null);
182+
expect(result.organization?.projects.nodes).toHaveLength(1);
183+
expect(result.organization?.projects.nodes[0].schemaPolicy).toBeNull();
184184

185185
const upsertResult = await setOrganizationSchemaPolicy(VALID_POLICY, true);
186186

integration-tests/tests/api/target/tokens.spec.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,7 @@ test.concurrent(
130130
await expect(organizationResult.expectNoGraphQLErrors()).resolves.toEqual(
131131
expect.objectContaining({
132132
organization: expect.objectContaining({
133-
organization: expect.objectContaining({
134-
slug: organizationSlug,
135-
}),
133+
slug: organizationSlug,
136134
}),
137135
}),
138136
);
@@ -206,9 +204,7 @@ test.concurrent(
206204
await expect(organizationResult.expectNoGraphQLErrors()).resolves.toEqual(
207205
expect.objectContaining({
208206
organization: expect.objectContaining({
209-
organization: expect.objectContaining({
210-
slug: organizationSlug,
211-
}),
207+
slug: organizationSlug,
212208
}),
213209
}),
214210
);

0 commit comments

Comments
 (0)