Unify use of Collection and Project resource types
[arvados.git] / src / models / test-utils.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { GroupClass, GroupResource } from "./group";
6 import { ResourceKind } from "./kinds";
7 import { Resource } from "../common/api/common-resource-service";
8
9 type ResourceUnion = GroupResource;
10
11 export const mockResource = (kind: ResourceKind, data: Partial<Exclude<ResourceUnion, "kind">>) => {
12     switch (kind) {
13         case ResourceKind.Group:
14             return mockGroupResource({ ...data, kind });
15         default:
16             return mockCommonResource({ ...data, kind });
17     }
18 };
19
20 export const mockGroupResource = (data: Partial<Exclude<GroupResource, "kind">>): GroupResource => ({
21     createdAt: "",
22     deleteAt: "",
23     description: "",
24     etag: "",
25     groupClass: null,
26     href: "",
27     isTrashed: false,
28     kind: ResourceKind.Group,
29     modifiedAt: "",
30     modifiedByClientUuid: "",
31     modifiedByUserUuid: "",
32     name: "",
33     ownerUuid: "",
34     properties: "",
35     trashAt: "",
36     uuid: "",
37     writeableBy: []
38 });
39
40 const mockCommonResource = <T extends Resource>(data: Partial<T> & { kind: ResourceKind }): Resource => ({
41     createdAt: "",
42     etag: "",
43     href: "",
44     kind: data.kind,
45     modifiedAt: "",
46     modifiedByClientUuid: "",
47     modifiedByUserUuid: "",
48     ownerUuid: "",
49     uuid: ""
50 });