Skip to content

Commit

Permalink
Implement a delete method that uses StateProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
addisonbeck committed Feb 9, 2024
1 parent 081e15a commit f731ee5
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 0 deletions.
Expand Up @@ -185,6 +185,22 @@ describe("Organization Service", () => {
});
});

describe("deleteActiveUserOrganization", () => {
it("deletes one organization from state for the active user", async () => {
await organizationService.deleteActiveUserOrganization("1");
expect((await firstValueFrom(organizationService.activeUserOrganizations$)).length).toBe(0);
});
it("ignores requests with invalid organization ids", async () => {
const originalOrganizationCount = (
await firstValueFrom(organizationService.activeUserMemberOrganizations$)
).length;
await organizationService.deleteActiveUserOrganization("BADID");
expect(
(await firstValueFrom(organizationService.activeUserMemberOrganizations$)).length,
).toBe(originalOrganizationCount);
});
});

describe("updateAllActiveUserOrganizations", () => {
it("replaces all organization data in state", async () => {
await organizationService.updateAllActiveUserOrganizations({
Expand Down
Expand Up @@ -33,6 +33,9 @@ export class OrganizationService implements InternalOrganizationServiceAbstracti
private stateService: StateService,
private stateProvider: StateProvider,
) {
this.activeUserOrganizations$ = this.stateProvider
.getActive(ORGANIZATIONS)
.state$.pipe(map((data) => Object.values(data ?? {})?.map((o) => new Organization(o))));
this.activeUserMemberOrganizations$ = this.activeUserOrganizations$.pipe(
map((orgs) => orgs.filter(isMember)),
);
Expand Down Expand Up @@ -84,6 +87,7 @@ export class OrganizationService implements InternalOrganizationServiceAbstracti
await this.replace(organizations);
}

// marked for removal during AC-2009
async delete(id: string): Promise<void> {
const organizations = await this.stateService.getOrganizations();
if (organizations == null) {
Expand All @@ -96,6 +100,17 @@ export class OrganizationService implements InternalOrganizationServiceAbstracti

delete organizations[id];
await this.replace(organizations);
await this.deleteActiveUserOrganization(id);
}

async deleteActiveUserOrganization(id: string): Promise<void> {
await this.stateProvider.getActive(ORGANIZATIONS).update((organizations) => {
if (organizations == null || organizations[id] == null) {
return;
}
delete organizations[id];
return organizations;
});
}

get(id: string): Organization {
Expand Down

0 comments on commit f731ee5

Please sign in to comment.