@truedat/bg 7.0.5 → 7.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/package.json +6 -6
  2. package/src/concepts/components/DomainConcepts.js +1 -4
  3. package/src/concepts/components/__tests__/__snapshots__/ConceptForm.spec.js.snap +5 -5
  4. package/src/concepts/components/__tests__/__snapshots__/ConceptsBulkUpdate.spec.js.snap +5 -5
  5. package/src/concepts/components/__tests__/__snapshots__/SharedToForm.spec.js.snap +5 -5
  6. package/src/hooks/useDomains.js +77 -0
  7. package/src/messages/en.js +6 -0
  8. package/src/messages/es.js +5 -0
  9. package/src/reducers/index.js +0 -1
  10. package/src/taxonomy/components/AddDomainMember.js +1 -7
  11. package/src/taxonomy/components/Domain.js +80 -84
  12. package/src/taxonomy/components/DomainActions.js +57 -84
  13. package/src/taxonomy/components/DomainCrumbs.js +51 -43
  14. package/src/taxonomy/components/DomainDetail.js +88 -46
  15. package/src/taxonomy/components/DomainForm.js +34 -36
  16. package/src/taxonomy/components/DomainImplementations.js +1 -4
  17. package/src/taxonomy/components/DomainMembers.js +8 -1
  18. package/src/taxonomy/components/DomainRoutes.js +8 -55
  19. package/src/taxonomy/components/DomainStructures.js +1 -4
  20. package/src/taxonomy/components/DomainTabs.js +22 -29
  21. package/src/taxonomy/components/Domains.js +66 -27
  22. package/src/taxonomy/components/DomainsActions.js +5 -14
  23. package/src/taxonomy/components/EditDomain.js +35 -21
  24. package/src/taxonomy/components/NewDomain.js +47 -22
  25. package/src/taxonomy/components/__tests__/Domain.spec.js +17 -8
  26. package/src/taxonomy/components/__tests__/DomainActions.spec.js +62 -7
  27. package/src/taxonomy/components/__tests__/DomainCrumbs.spec.js +18 -5
  28. package/src/taxonomy/components/__tests__/DomainDetail.spec.js +87 -4
  29. package/src/taxonomy/components/__tests__/DomainForm.spec.js +189 -4
  30. package/src/taxonomy/components/__tests__/DomainMembers.spec.js +1 -3
  31. package/src/taxonomy/components/__tests__/DomainStructures.spec.js +3 -2
  32. package/src/taxonomy/components/__tests__/Domains.spec.js +103 -6
  33. package/src/taxonomy/components/__tests__/EditDomain.spec.js +56 -5
  34. package/src/taxonomy/components/__tests__/NewDomain.spec.js +65 -6
  35. package/src/taxonomy/components/__tests__/__snapshots__/AddDomainMember.spec.js.snap +0 -10
  36. package/src/taxonomy/components/__tests__/__snapshots__/Domain.spec.js.snap +35 -48
  37. package/src/taxonomy/components/__tests__/__snapshots__/DomainActions.spec.js.snap +56 -1
  38. package/src/taxonomy/components/__tests__/__snapshots__/DomainCrumbs.spec.js.snap +14 -2
  39. package/src/taxonomy/components/__tests__/__snapshots__/DomainDetail.spec.js.snap +93 -40
  40. package/src/taxonomy/components/__tests__/__snapshots__/DomainForm.spec.js.snap +7 -7
  41. package/src/taxonomy/components/__tests__/__snapshots__/Domains.spec.js.snap +75 -10
  42. package/src/taxonomy/components/__tests__/__snapshots__/DomainsActions.spec.js.snap +20 -1
  43. package/src/taxonomy/components/__tests__/__snapshots__/EditDomain.spec.js.snap +192 -30
  44. package/src/taxonomy/components/__tests__/__snapshots__/NewDomain.spec.js.snap +405 -28
  45. package/src/taxonomy/components/index.js +1 -2
  46. package/src/taxonomy/index.js +0 -1
  47. package/src/taxonomy/routines.js +0 -10
  48. package/src/taxonomy/sagas/index.js +2 -21
  49. package/src/taxonomy/selectors/getDomainsConcept.js +0 -13
  50. package/src/taxonomy/selectors/index.js +0 -16
  51. package/src/taxonomy/components/DomainCards.js +0 -97
  52. package/src/taxonomy/components/DomainLoader.js +0 -60
  53. package/src/taxonomy/components/DomainMembersLoader.js +0 -44
  54. package/src/taxonomy/components/DomainsLoader.js +0 -40
  55. package/src/taxonomy/components/__tests__/DomainCards.spec.js +0 -30
  56. package/src/taxonomy/components/__tests__/DomainsLoader.spec.js +0 -38
  57. package/src/taxonomy/components/__tests__/__snapshots__/DomainCards.spec.js.snap +0 -160
  58. package/src/taxonomy/reducers/__tests__/domain.spec.js +0 -58
  59. package/src/taxonomy/reducers/__tests__/domainConceptLoading.spec.js +0 -26
  60. package/src/taxonomy/reducers/__tests__/domainCreating.spec.js +0 -24
  61. package/src/taxonomy/reducers/__tests__/domainLoading.spec.js +0 -22
  62. package/src/taxonomy/reducers/__tests__/domainMembersActions.spec.js +0 -38
  63. package/src/taxonomy/reducers/__tests__/domainMembersLoading.spec.js +0 -26
  64. package/src/taxonomy/reducers/__tests__/domainRedirect.spec.js +0 -36
  65. package/src/taxonomy/reducers/__tests__/domainUpdating.spec.js +0 -24
  66. package/src/taxonomy/reducers/__tests__/domains.spec.js +0 -30
  67. package/src/taxonomy/reducers/__tests__/domainsActions.spec.js +0 -36
  68. package/src/taxonomy/reducers/__tests__/domainsConcept.spec.js +0 -30
  69. package/src/taxonomy/reducers/__tests__/domainsFilter.spec.js +0 -41
  70. package/src/taxonomy/reducers/__tests__/domainsLoading.spec.js +0 -22
  71. package/src/taxonomy/reducers/domain.js +0 -32
  72. package/src/taxonomy/reducers/domainActions.js +0 -19
  73. package/src/taxonomy/reducers/domainCreating.js +0 -14
  74. package/src/taxonomy/reducers/domainLoading.js +0 -14
  75. package/src/taxonomy/reducers/domainMembersActions.js +0 -22
  76. package/src/taxonomy/reducers/domainMembersLoading.js +0 -12
  77. package/src/taxonomy/reducers/domainRedirect.js +0 -25
  78. package/src/taxonomy/reducers/domainUpdating.js +0 -14
  79. package/src/taxonomy/reducers/domains.js +0 -19
  80. package/src/taxonomy/reducers/domainsActions.js +0 -20
  81. package/src/taxonomy/reducers/domainsConcept.js +0 -19
  82. package/src/taxonomy/reducers/domainsConceptLoading.js +0 -12
  83. package/src/taxonomy/reducers/domainsFilter.js +0 -24
  84. package/src/taxonomy/reducers/domainsLoading.js +0 -12
  85. package/src/taxonomy/reducers/index.js +0 -31
  86. package/src/taxonomy/sagas/__tests__/fetchDomain.spec.js +0 -69
  87. package/src/taxonomy/sagas/__tests__/fetchDomains.spec.js +0 -90
  88. package/src/taxonomy/sagas/createDomain.js +0 -27
  89. package/src/taxonomy/sagas/deleteDomain.js +0 -34
  90. package/src/taxonomy/sagas/fetchDomain.js +0 -30
  91. package/src/taxonomy/sagas/fetchDomains.js +0 -37
  92. package/src/taxonomy/sagas/updateDomain.js +0 -30
  93. package/src/taxonomy/selectors/__tests__/domainParentOptionsSelector.spec.js +0 -24
  94. package/src/taxonomy/selectors/__tests__/getDomainActions.spec.js +0 -46
  95. package/src/taxonomy/selectors/__tests__/getDomainGroups.spec.js +0 -17
  96. package/src/taxonomy/selectors/__tests__/getDomainTypes.spec.js +0 -14
  97. package/src/taxonomy/selectors/domainParentOptionsSelector.js +0 -12
  98. package/src/taxonomy/selectors/getDomainActions.js +0 -32
  99. package/src/taxonomy/selectors/getDomainGroups.js +0 -11
@@ -1,36 +0,0 @@
1
- import { fetchDomains } from "../../routines";
2
- import { domainsActions } from "..";
3
-
4
- const fooState = { foo: "bar" };
5
-
6
- describe("reducers: domainsActions", () => {
7
- it("should provide the initial state", () => {
8
- expect(domainsActions(undefined, {})).toEqual({});
9
- });
10
-
11
- it("should be an empty object after receiving the fetchDomains.TRIGGER action", () => {
12
- expect(domainsActions(fooState, { type: fetchDomains.TRIGGER })).toEqual(
13
- {}
14
- );
15
- });
16
-
17
- it("should extract _actions from the fetchDomains.SUCCESS action", () => {
18
- const _actions = { delete: { foo: "bar" } };
19
- const payload = { data: { _actions: _actions } };
20
- expect(
21
- domainsActions(fooState, { type: fetchDomains.SUCCESS, payload })
22
- ).toMatchObject(_actions);
23
- });
24
-
25
- it("should be an empty object after receiving the fetchDomains.SUCCESS action without _actions", () => {
26
- const data = [{ id: 1 }];
27
- const payload = { data };
28
- expect(
29
- domainsActions(fooState, { type: fetchDomains.SUCCESS, payload })
30
- ).toEqual({});
31
- });
32
-
33
- it("should ignore unhandled actions", () => {
34
- expect(domainsActions(fooState, { type: "FOO" })).toBe(fooState);
35
- });
36
- });
@@ -1,30 +0,0 @@
1
- import { fetchDomainsConcept } from "../../routines";
2
- import { domainsConcept } from "..";
3
-
4
- const fooState = { foo: "bar" };
5
-
6
- describe("reducers: domainsConcept", () => {
7
- const initialState = [];
8
-
9
- it("should provide the initial state", () => {
10
- expect(domainsConcept(undefined, {})).toEqual(initialState);
11
- });
12
-
13
- it("should handle the SUCCESS action", () => {
14
- const data = [
15
- { id: 1, name: "Domain 1", description: "Desc 1" },
16
- { id: 2, name: "Domain 2", description: "Desc 2", parent_id: 1 },
17
- ];
18
-
19
- expect(
20
- domainsConcept(fooState, {
21
- type: fetchDomainsConcept.SUCCESS,
22
- payload: { data: { data } },
23
- })
24
- ).toMatchObject(data);
25
- });
26
-
27
- it("should ignore unknown actions", () => {
28
- expect(domainsConcept(fooState, { type: "FOO" })).toBe(fooState);
29
- });
30
- });
@@ -1,41 +0,0 @@
1
- import {
2
- clearDomain,
3
- fetchDomain,
4
- fetchDomains,
5
- filterDomains
6
- } from "../../routines";
7
- import { domainsFilter, initialState } from "../domainsFilter";
8
-
9
- const fooState = { foo: "bar" };
10
-
11
- describe("reducers: domainsFilter", () => {
12
- it("should provide the initial state", () => {
13
- expect(domainsFilter(undefined, {})).toBe(initialState);
14
- });
15
-
16
- it("should return the initial state after receiving the clearDomain.TRIGGER action", () => {
17
- expect(domainsFilter(fooState, { type: clearDomain.TRIGGER })).toBe(
18
- initialState
19
- );
20
- });
21
-
22
- it("should return the initial state after receiving the fetchDomain.TRIGGER action", () => {
23
- expect(domainsFilter(fooState, { type: fetchDomain.TRIGGER })).toBe(
24
- initialState
25
- );
26
- });
27
-
28
- it("should return the initial state after receiving the fetchDomains.TRIGGER action", () => {
29
- expect(domainsFilter(fooState, { type: fetchDomains.TRIGGER })).toBe(
30
- initialState
31
- );
32
- });
33
-
34
- it("should contain the filter query after receiving the filterDomains.TRIGGER action", () => {
35
- const query = "My Filter Text";
36
- const payload = { query };
37
- expect(
38
- domainsFilter(fooState, { type: filterDomains.TRIGGER, payload })
39
- ).toBe(query);
40
- });
41
- });
@@ -1,22 +0,0 @@
1
- import { fetchDomains } from "../../routines";
2
- import { domainsLoading } from "..";
3
-
4
- const fooState = { foo: "bar" };
5
-
6
- describe("reducers: domainsLoading", () => {
7
- it("should provide the initial state", () => {
8
- expect(domainsLoading(undefined, {})).toBe(false);
9
- });
10
-
11
- it("should be true after receiving the fetchDomains.TRIGGER action", () => {
12
- expect(domainsLoading(false, { type: fetchDomains.TRIGGER })).toBe(true);
13
- });
14
-
15
- it("should be false after receiving the fetchDomains.FULFILL action", () => {
16
- expect(domainsLoading(true, { type: fetchDomains.FULFILL })).toBe(false);
17
- });
18
-
19
- it("should ignore unhandled actions", () => {
20
- expect(domainsLoading(fooState, { type: "FOO" })).toBe(fooState);
21
- });
22
- });
@@ -1,32 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { clearDomain, fetchDomain, updateDomain } from "../routines";
3
-
4
- const initialState = {};
5
-
6
- const pickFields = _.pick([
7
- "id",
8
- "external_id",
9
- "parent_id",
10
- "name",
11
- "description",
12
- "type",
13
- "parentable_ids",
14
- "domain_group",
15
- ]);
16
-
17
- const domain = (state = initialState, { type, payload }) => {
18
- switch (type) {
19
- case clearDomain.TRIGGER:
20
- return initialState;
21
- case fetchDomain.TRIGGER:
22
- return initialState;
23
- case fetchDomain.SUCCESS:
24
- return pickFields(payload.data);
25
- case updateDomain.SUCCESS:
26
- return pickFields(payload.data);
27
- default:
28
- return state;
29
- }
30
- };
31
-
32
- export { domain };
@@ -1,19 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { fetchDomain, clearDomain } from "../routines";
3
-
4
- const initialState = {};
5
-
6
- export const domainActions = (state = initialState, { type, payload }) => {
7
- switch (type) {
8
- case clearDomain.TRIGGER:
9
- return initialState;
10
- case fetchDomain.TRIGGER:
11
- return initialState;
12
- case fetchDomain.SUCCESS:
13
- return _.propOr(initialState, "_actions")(payload);
14
- default:
15
- return state;
16
- }
17
- };
18
-
19
- export default domainActions;
@@ -1,14 +0,0 @@
1
- import { createDomain } from "../routines";
2
-
3
- const domainCreating = (state = false, { type }) => {
4
- switch (type) {
5
- case createDomain.TRIGGER:
6
- return true;
7
- case createDomain.FULFILL:
8
- return false;
9
- default:
10
- return state;
11
- }
12
- };
13
-
14
- export { domainCreating };
@@ -1,14 +0,0 @@
1
- import { fetchDomain } from "../routines";
2
-
3
- const domainLoading = (state = false, { type }) => {
4
- switch (type) {
5
- case fetchDomain.TRIGGER:
6
- return true;
7
- case fetchDomain.FULFILL:
8
- return false;
9
- default:
10
- return state;
11
- }
12
- };
13
-
14
- export { domainLoading };
@@ -1,22 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { fetchDomain, fetchDomainMembers, clearDomain } from "../routines";
3
-
4
- export const initialState = {};
5
-
6
- export const domainMembersActions = (
7
- state = initialState,
8
- { type, payload }
9
- ) => {
10
- switch (type) {
11
- case clearDomain.TRIGGER:
12
- return initialState;
13
- case fetchDomain.TRIGGER:
14
- return initialState;
15
- case fetchDomainMembers.SUCCESS:
16
- return _.pathOr(initialState, "_links.self")(payload);
17
- default:
18
- return state;
19
- }
20
- };
21
-
22
- export default domainMembersActions;
@@ -1,12 +0,0 @@
1
- import { fetchDomainMembers } from "../routines";
2
-
3
- export const domainMembersLoading = (state = false, { type }) => {
4
- switch (type) {
5
- case fetchDomainMembers.TRIGGER:
6
- return true;
7
- case fetchDomainMembers.FULFILL:
8
- return false;
9
- default:
10
- return state;
11
- }
12
- };
@@ -1,25 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { clearRedirect } from "@truedat/core/routines";
3
- import { linkTo } from "@truedat/core/routes";
4
- import { createDomain, deleteDomain, updateDomain } from "../routines";
5
-
6
- const initialState = "";
7
-
8
- export const domainRedirect = (
9
- state = initialState,
10
- { type, payload, meta }
11
- ) => {
12
- switch (type) {
13
- case clearRedirect.TRIGGER:
14
- return initialState;
15
- case createDomain.SUCCESS:
16
- return linkTo.DOMAIN(_.prop("data", payload));
17
- case updateDomain.SUCCESS:
18
- return linkTo.DOMAIN(_.prop("data", payload));
19
- case deleteDomain.SUCCESS:
20
- const { redirectUrl } = meta;
21
- return redirectUrl;
22
- default:
23
- return state;
24
- }
25
- };
@@ -1,14 +0,0 @@
1
- import { updateDomain } from "../routines";
2
-
3
- const domainUpdating = (state = false, { type }) => {
4
- switch (type) {
5
- case updateDomain.TRIGGER:
6
- return true;
7
- case updateDomain.FULFILL:
8
- return false;
9
- default:
10
- return state;
11
- }
12
- };
13
-
14
- export { domainUpdating };
@@ -1,19 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { fetchDomains, clearDomains } from "../routines";
3
-
4
- const initialState = [];
5
-
6
- const caseInsensitiveName = ({ name }) => _.toLower(name);
7
-
8
- export const domains = (state = initialState, { type, payload }) => {
9
- switch (type) {
10
- case fetchDomains.SUCCESS:
11
- const { data } = payload;
12
- const collection = _.prop("data")(data);
13
- return _.sortBy(caseInsensitiveName)(collection);
14
- case clearDomains.TRIGGER:
15
- return initialState;
16
- default:
17
- return state;
18
- }
19
- };
@@ -1,20 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { fetchDomains, clearDomains } from "../routines";
3
-
4
- const initialState = {};
5
-
6
- export const domainsActions = (state = initialState, { type, payload }) => {
7
- switch (type) {
8
- case clearDomains.TRIGGER:
9
- return initialState;
10
- case fetchDomains.TRIGGER:
11
- return initialState;
12
- case fetchDomains.SUCCESS:
13
- const { data } = payload;
14
- return _.propOr(initialState, "_actions")(data);
15
- default:
16
- return state;
17
- }
18
- };
19
-
20
- export default domainsActions;
@@ -1,19 +0,0 @@
1
- import _ from "lodash/fp";
2
- import { fetchDomainsConcept, clearDomainsConcept } from "../routines";
3
-
4
- const initialState = [];
5
-
6
- const caseInsensitiveName = ({ name }) => _.toLower(name);
7
-
8
- export const domainsConcept = (state = initialState, { type, payload }) => {
9
- switch (type) {
10
- case fetchDomainsConcept.SUCCESS:
11
- const { data } = payload;
12
- const collection = _.prop("data")(data);
13
- return _.sortBy(caseInsensitiveName)(collection);
14
- case clearDomainsConcept.TRIGGER:
15
- return initialState;
16
- default:
17
- return state;
18
- }
19
- };
@@ -1,12 +0,0 @@
1
- import { fetchDomainsConcept } from "../routines";
2
-
3
- export const domainsConceptLoading = (state = false, { type }) => {
4
- switch (type) {
5
- case fetchDomainsConcept.TRIGGER:
6
- return true;
7
- case fetchDomainsConcept.FULFILL:
8
- return false;
9
- default:
10
- return state;
11
- }
12
- };
@@ -1,24 +0,0 @@
1
- import {
2
- filterDomains,
3
- clearDomain,
4
- fetchDomain,
5
- fetchDomains
6
- } from "../routines";
7
-
8
- export const initialState = "";
9
-
10
- export const domainsFilter = (state = initialState, { type, payload }) => {
11
- switch (type) {
12
- case clearDomain.TRIGGER:
13
- return initialState;
14
- case fetchDomain.TRIGGER:
15
- return initialState;
16
- case fetchDomains.TRIGGER:
17
- return initialState;
18
- case filterDomains.TRIGGER:
19
- const { query } = payload;
20
- return query;
21
- default:
22
- return state;
23
- }
24
- };
@@ -1,12 +0,0 @@
1
- import { fetchDomains } from "../routines";
2
-
3
- export const domainsLoading = (state = false, { type }) => {
4
- switch (type) {
5
- case fetchDomains.TRIGGER:
6
- return true;
7
- case fetchDomains.FULFILL:
8
- return false;
9
- default:
10
- return state;
11
- }
12
- };
@@ -1,31 +0,0 @@
1
- import { domain } from "./domain";
2
- import { domainActions } from "./domainActions";
3
- import { domainCreating } from "./domainCreating";
4
- import { domainLoading } from "./domainLoading";
5
- import { domainsConcept } from "./domainsConcept";
6
- import { domainsConceptLoading } from "./domainsConceptLoading";
7
- import { domainMembersActions } from "./domainMembersActions";
8
- import { domainMembersLoading } from "./domainMembersLoading";
9
- import { domainRedirect } from "./domainRedirect";
10
- import { domains } from "./domains";
11
- import { domainsActions } from "./domainsActions";
12
- import { domainsFilter } from "./domainsFilter";
13
- import { domainsLoading } from "./domainsLoading";
14
- import { domainUpdating } from "./domainUpdating";
15
-
16
- export {
17
- domain,
18
- domainActions,
19
- domainCreating,
20
- domainLoading,
21
- domainMembersActions,
22
- domainMembersLoading,
23
- domainsConcept,
24
- domainsConceptLoading,
25
- domainRedirect,
26
- domains,
27
- domainsActions,
28
- domainsFilter,
29
- domainsLoading,
30
- domainUpdating,
31
- };
@@ -1,69 +0,0 @@
1
- import { compile } from "path-to-regexp";
2
- import { testSaga } from "redux-saga-test-plan";
3
- import { apiJson, JSON_OPTS } from "@truedat/core/services/api";
4
- import { fetchDomainSaga, fetchDomainRequestSaga } from "../fetchDomain";
5
- import { fetchDomain } from "../../routines";
6
- import { API_DOMAIN } from "../../api";
7
-
8
- describe("sagas: fetchDomainRequestSaga", () => {
9
- it("should invoke fetchDomainSaga on trigger", () => {
10
- expect(() => {
11
- testSaga(fetchDomainRequestSaga)
12
- .next()
13
- .takeLatest(fetchDomain.TRIGGER, fetchDomainSaga)
14
- .finish()
15
- .isDone();
16
- }).not.toThrow();
17
- });
18
-
19
- it("should throw exception if an unhandled action is received", () => {
20
- expect(() => {
21
- testSaga(fetchDomainRequestSaga)
22
- .next()
23
- .takeLatest("FOO", fetchDomainSaga);
24
- }).toThrow();
25
- });
26
- });
27
-
28
- describe("sagas: fetchDomainSaga", () => {
29
- const id = 1;
30
- const url = compile(API_DOMAIN)({ id });
31
- const payload = { id };
32
-
33
- it("should put a success action when a response is returned", () => {
34
- const data = { id, name: "Top domain", description: "Desc" };
35
-
36
- expect(() => {
37
- testSaga(fetchDomainSaga, { payload })
38
- .next()
39
- .put(fetchDomain.request())
40
- .next()
41
- .call(apiJson, url, JSON_OPTS)
42
- .next({ data })
43
- .put(fetchDomain.success(data))
44
- .next()
45
- .put(fetchDomain.fulfill())
46
- .next()
47
- .isDone();
48
- }).not.toThrow();
49
- });
50
-
51
- it("should put a failure action when the call returns an error", () => {
52
- const message = "Request failed";
53
- const error = { message };
54
-
55
- expect(() => {
56
- testSaga(fetchDomainSaga, { payload })
57
- .next()
58
- .put(fetchDomain.request())
59
- .next()
60
- .call(apiJson, url, JSON_OPTS)
61
- .throw(error)
62
- .put(fetchDomain.failure(message))
63
- .next()
64
- .put(fetchDomain.fulfill())
65
- .next()
66
- .isDone();
67
- }).not.toThrow();
68
- });
69
- });
@@ -1,90 +0,0 @@
1
- import { testSaga } from "redux-saga-test-plan";
2
- import { apiJson, JSON_OPTS } from "@truedat/core/services/api";
3
- import { fetchDomainsRequestSaga, fetchDomainsSaga } from "../fetchDomains";
4
- import { fetchDomains } from "../../routines";
5
- import { API_DOMAINS } from "../../api";
6
-
7
- describe("sagas: fetchDomainsRequestSaga", () => {
8
- it("should invoke fetchDomainsSaga on trigger", () => {
9
- expect(() => {
10
- testSaga(fetchDomainsRequestSaga)
11
- .next()
12
- .takeLatest(fetchDomains.TRIGGER, fetchDomainsSaga)
13
- .finish()
14
- .isDone();
15
- }).not.toThrow();
16
- });
17
-
18
- it("should throw exception if an unhandled action is received", () => {
19
- expect(() => {
20
- testSaga(fetchDomainsRequestSaga)
21
- .next()
22
- .takeLatest("FOO", fetchDomainsSaga);
23
- }).toThrow();
24
- });
25
- });
26
-
27
- describe("sagas: fetchDomainsSaga", () => {
28
- const data = {
29
- collection: [
30
- { id: 1, name: "Top domain", description: "Desc" },
31
- { id: 2, name: "Child domain", description: "Desc2", parent_id: 2 },
32
- ],
33
- };
34
-
35
- it("should put a success action when a response is returned", () => {
36
- const actions = undefined;
37
- expect(() => {
38
- testSaga(fetchDomainsSaga, {})
39
- .next()
40
- .put(fetchDomains.request())
41
- .next()
42
- .call(apiJson, API_DOMAINS, JSON_OPTS)
43
- .next({ data })
44
- .put(fetchDomains.success({ data, actions }))
45
- .next()
46
- .put(fetchDomains.fulfill())
47
- .next()
48
- .isDone();
49
- }).not.toThrow();
50
- });
51
-
52
- it("should handle actions in the payload", () => {
53
- const actions = "show";
54
- const filter = "foo";
55
- const payload = { actions, filter };
56
- const json_opts = { params: { actions, filter }, ...JSON_OPTS };
57
- expect(() => {
58
- testSaga(fetchDomainsSaga, { payload })
59
- .next()
60
- .put(fetchDomains.request(payload))
61
- .next()
62
- .call(apiJson, API_DOMAINS, json_opts)
63
- .next({ data })
64
- .put(fetchDomains.success({ data, actions }))
65
- .next()
66
- .put(fetchDomains.fulfill())
67
- .next()
68
- .isDone();
69
- }).not.toThrow();
70
- });
71
-
72
- it("should put a failure action when the call throws an error", () => {
73
- const message = "Request failed";
74
- const error = { message };
75
-
76
- expect(() => {
77
- testSaga(fetchDomainsSaga, {})
78
- .next()
79
- .put(fetchDomains.request())
80
- .next()
81
- .call(apiJson, API_DOMAINS, JSON_OPTS)
82
- .throw(error)
83
- .put(fetchDomains.failure(message))
84
- .next()
85
- .put(fetchDomains.fulfill())
86
- .next()
87
- .isDone();
88
- }).not.toThrow();
89
- });
90
- });
@@ -1,27 +0,0 @@
1
- import { call, put, takeLatest } from "redux-saga/effects";
2
- import { apiJsonPost, JSON_OPTS } from "@truedat/core/services/api";
3
- import { createDomain } from "../routines";
4
- import { API_DOMAINS } from "../api";
5
-
6
- export function* createDomainSaga({ payload }) {
7
- try {
8
- const url = API_DOMAINS;
9
- const body = { domain: payload };
10
- yield put(createDomain.request(payload));
11
- const { data } = yield call(apiJsonPost, url, body, JSON_OPTS);
12
- yield put(createDomain.success(data));
13
- } catch (error) {
14
- if (error.response) {
15
- const { status, data } = error.response;
16
- yield put(createDomain.failure({ status, data }));
17
- } else {
18
- yield put(createDomain.failure(error.message));
19
- }
20
- } finally {
21
- yield put(createDomain.fulfill());
22
- }
23
- }
24
-
25
- export function* createDomainRequestSaga() {
26
- yield takeLatest(createDomain.TRIGGER, createDomainSaga);
27
- }
@@ -1,34 +0,0 @@
1
- import { compile } from "path-to-regexp";
2
- import { call, put, takeLatest } from "redux-saga/effects";
3
- import { DOMAINS, linkTo } from "@truedat/core/routes";
4
- import { apiJsonDelete, JSON_OPTS } from "@truedat/core/services/api";
5
- import { deleteDomain } from "../routines";
6
- import { API_DOMAIN } from "../api";
7
-
8
- const toApiPath = compile(API_DOMAIN);
9
-
10
- export function* deleteDomainSaga({ payload }) {
11
- const domain = payload;
12
- const url = toApiPath(domain);
13
- const { parent_id } = domain;
14
- const redirectUrl = parent_id ? linkTo.DOMAIN({ id: parent_id }) : DOMAINS;
15
- const meta = { redirectUrl };
16
- try {
17
- yield put({ meta, ...deleteDomain.request() });
18
- const { data } = yield call(apiJsonDelete, url, JSON_OPTS);
19
- yield put({ meta, ...deleteDomain.success(data) });
20
- } catch (error) {
21
- if (error.response) {
22
- const { status, data } = error.response;
23
- yield put(deleteDomain.failure({ status, data, message: error.message }));
24
- } else {
25
- yield put(deleteDomain.failure(error.message));
26
- }
27
- } finally {
28
- yield put(deleteDomain.fulfill());
29
- }
30
- }
31
-
32
- export function* deleteDomainRequestSaga() {
33
- yield takeLatest(deleteDomain.TRIGGER, deleteDomainSaga);
34
- }