@sankhyalabs/core 1.0.42 → 1.0.43
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.
- package/.eslintignore +1 -1
- package/.eslintrc.cjs +34 -34
- package/README.md +54 -54
- package/dist/dataunit/DataUnit.d.ts +82 -82
- package/dist/dataunit/DataUnit.js +278 -278
- package/dist/dataunit/metadata/DataType.d.ts +9 -9
- package/dist/dataunit/metadata/DataType.js +36 -36
- package/dist/dataunit/metadata/UnitMetadata.d.ts +71 -71
- package/dist/dataunit/metadata/UnitMetadata.js +31 -31
- package/dist/dataunit/state/HistReducer.d.ts +10 -10
- package/dist/dataunit/state/HistReducer.js +27 -27
- package/dist/dataunit/state/StateManager.d.ts +57 -57
- package/dist/dataunit/state/StateManager.js +96 -96
- package/dist/dataunit/state/action/DataUnitAction.d.ts +28 -28
- package/dist/dataunit/state/action/DataUnitAction.js +33 -33
- package/dist/dataunit/state/slice/AddedRecordsSlice.d.ts +11 -11
- package/dist/dataunit/state/slice/AddedRecordsSlice.js +25 -25
- package/dist/dataunit/state/slice/ChangesSlice.d.ts +12 -12
- package/dist/dataunit/state/slice/ChangesSlice.js +72 -72
- package/dist/dataunit/state/slice/CurrentRecordsSlice.d.ts +11 -11
- package/dist/dataunit/state/slice/CurrentRecordsSlice.js +45 -45
- package/dist/dataunit/state/slice/RecordsSlice.d.ts +10 -10
- package/dist/dataunit/state/slice/RecordsSlice.js +43 -43
- package/dist/dataunit/state/slice/RemovedRecordsSlice.d.ts +9 -9
- package/dist/dataunit/state/slice/RemovedRecordsSlice.js +24 -24
- package/dist/dataunit/state/slice/SelectionSlice.d.ts +11 -11
- package/dist/dataunit/state/slice/SelectionSlice.js +111 -111
- package/dist/dataunit/state/slice/UnitMetadataSlice.d.ts +11 -11
- package/dist/dataunit/state/slice/UnitMetadataSlice.js +20 -20
- package/dist/http/AuthorizedServiceCaller.d.ts +11 -11
- package/dist/http/AuthorizedServiceCaller.js +53 -53
- package/dist/http/HttpProvider.d.ts +25 -25
- package/dist/http/HttpProvider.js +73 -73
- package/dist/http/RequestMetadata.d.ts +30 -30
- package/dist/http/RequestMetadata.js +24 -24
- package/dist/http/SkwHttpProvider.d.ts +9 -9
- package/dist/http/SkwHttpProvider.js +66 -66
- package/dist/index.d.ts +16 -16
- package/dist/index.js +17 -17
- package/dist/ui/FloatingManager.d.ts +24 -24
- package/dist/ui/FloatingManager.js +122 -122
- package/dist/utils/ApplicationContext.d.ts +5 -5
- package/dist/utils/ApplicationContext.js +16 -16
- package/dist/utils/CriteriaModel.d.ts +109 -109
- package/dist/utils/CriteriaModel.js +173 -173
- package/dist/utils/CriteriaParameter.d.ts +69 -69
- package/dist/utils/CriteriaParameter.js +82 -82
- package/dist/utils/DateUtils.d.ts +5 -5
- package/dist/utils/DateUtils.js +42 -42
- package/dist/utils/MaskFormatter.d.ts +126 -126
- package/dist/utils/MaskFormatter.js +275 -275
- package/dist/utils/NumberUtils.d.ts +53 -53
- package/dist/utils/NumberUtils.js +141 -141
- package/dist/utils/StringUtils.d.ts +18 -18
- package/dist/utils/StringUtils.js +53 -53
- package/dist/utils/TimeFormatter.d.ts +33 -33
- package/dist/utils/TimeFormatter.js +97 -97
- package/jest.config.ts +16 -16
- package/mock/http/XMLHttpRequest-mock.js +25 -25
- package/package.json +37 -37
- package/src/dataunit/DataUnit.ts +356 -356
- package/src/dataunit/metadata/DataType.ts +37 -37
- package/src/dataunit/metadata/UnitMetadata.ts +82 -82
- package/src/dataunit/state/HistReducer.ts +33 -33
- package/src/dataunit/state/StateManager.ts +141 -141
- package/src/dataunit/state/action/DataUnitAction.ts +50 -50
- package/src/dataunit/state/slice/AddedRecordsSlice.ts +32 -32
- package/src/dataunit/state/slice/ChangesSlice.ts +90 -90
- package/src/dataunit/state/slice/CurrentRecordsSlice.ts +53 -53
- package/src/dataunit/state/slice/RecordsSlice.ts +56 -56
- package/src/dataunit/state/slice/RemovedRecordsSlice.ts +29 -29
- package/src/dataunit/state/slice/SelectionSlice.ts +130 -130
- package/src/dataunit/state/slice/UnitMetadataSlice.ts +29 -29
- package/src/http/AuthorizedServiceCaller.ts +58 -58
- package/src/http/HttpProvider.ts +93 -93
- package/src/http/RequestMetadata.ts +41 -41
- package/src/http/SkwHttpProvider.ts +77 -77
- package/src/index.ts +44 -44
- package/src/ui/FloatingManager.ts +165 -165
- package/src/utils/ApplicationContext.ts +18 -18
- package/src/utils/CriteriaModel.ts +207 -207
- package/src/utils/CriteriaParameter.ts +107 -107
- package/src/utils/DateUtils.ts +52 -52
- package/src/utils/MaskFormatter.ts +322 -322
- package/src/utils/NumberUtils.ts +174 -174
- package/src/utils/StringUtils.ts +60 -60
- package/src/utils/TimeFormatter.ts +97 -97
- package/test/http/HttpProvider.spec.ts +34 -34
- package/test/http/SkwHttpProvider.ts.spec.ts +33 -33
- package/test/util/CriteriaModel.spec.ts +231 -231
- package/test/util/CriteriaParameter.spec.ts +51 -51
- package/test/util/MaskFormatter.spec.ts +138 -138
- package/test/util/NumberUtils.spec.ts +156 -156
- package/test/util/StringUtils.spec.ts +43 -43
- package/test/util/TimeFormatter.spec.ts +25 -25
- package/tsconfig.json +15 -15
- package/dist/application/Application.d.ts +0 -8
- package/dist/application/Application.js +0 -19
- package/dist/application/Application.js.map +0 -1
- package/dist/http/data-fetcher/HttpFetcher.d.ts +0 -14
- package/dist/http/data-fetcher/HttpFetcher.js +0 -164
- package/dist/http/data-fetcher/HttpFetcher.js.map +0 -1
- package/dist/http/data-fetcher/default/DefaultGraphQL.d.ts +0 -3
- package/dist/http/data-fetcher/default/DefaultGraphQL.js +0 -18
- package/dist/http/data-fetcher/default/DefaultGraphQL.js.map +0 -1
- package/dist/http/data-fetcher/default/application-config-fetcher.d.ts +0 -6
- package/dist/http/data-fetcher/default/application-config-fetcher.js +0 -21
- package/dist/http/data-fetcher/default/application-config-fetcher.js.map +0 -1
- package/dist/http/data-fetcher/default/data-unit-graphql.d.ts +0 -3
- package/dist/http/data-fetcher/default/data-unit-graphql.js +0 -18
- package/dist/http/data-fetcher/default/data-unit-graphql.js.map +0 -1
- package/dist/http/data-fetcher/default/dataunit-executor.d.ts +0 -10
- package/dist/http/data-fetcher/default/dataunit-executor.js +0 -56
- package/dist/http/data-fetcher/default/dataunit-executor.js.map +0 -1
- package/dist/http/data-fetcher/default/dataunit-fetcher.d.ts +0 -9
- package/dist/http/data-fetcher/default/dataunit-fetcher.js +0 -69
- package/dist/http/data-fetcher/default/dataunit-fetcher.js.map +0 -1
- package/dist/http/data-fetcher/default/form-config-fetcher.d.ts +0 -2
- package/dist/http/data-fetcher/default/form-config-fetcher.js +0 -3
- package/dist/http/data-fetcher/default/form-config-fetcher.js.map +0 -1
- package/dist/http/data-fetcher/default/grid-config-fetcher.d.ts +0 -2
- package/dist/http/data-fetcher/default/grid-config-fetcher.js +0 -3
- package/dist/http/data-fetcher/default/grid-config-fetcher.js.map +0 -1
- package/dist/http/data-fetcher/default/index.d.ts +0 -0
- package/dist/http/data-fetcher/default/index.js +0 -2
- package/dist/http/data-fetcher/default/index.js.map +0 -1
- package/dist/http/data-fetcher/default/sankhya-graphql.d.ts +0 -3
- package/dist/http/data-fetcher/default/sankhya-graphql.js +0 -8
- package/dist/http/data-fetcher/default/sankhya-graphql.js.map +0 -1
- package/dist/http/data-fetcher/graphql/DefaultGraphQl.d.ts +0 -3
- package/dist/http/data-fetcher/graphql/DefaultGraphQl.js +0 -18
- package/dist/http/data-fetcher/graphql/DefaultGraphQl.js.map +0 -1
- package/dist/http/data-fetcher/state/LoadStateManager.d.ts +0 -23
- package/dist/http/data-fetcher/state/LoadStateManager.js +0 -78
- package/dist/http/data-fetcher/state/LoadStateManager.js.map +0 -1
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import { MaskFormatter } from "./MaskFormatter.js";
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* `TimeFormatter` é um utilitário para formatação de strings desformatadas em strings válidas de horários
|
|
5
|
-
*/
|
|
6
|
-
export class TimeFormatter {
|
|
7
|
-
|
|
8
|
-
static _maskFormatter: MaskFormatter = new MaskFormatter("##:##");
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @prepareValue: converts an unformated time string into a formatted time.
|
|
12
|
-
*
|
|
13
|
-
* @param value unformated time string to convert
|
|
14
|
-
*
|
|
15
|
-
* @returns formatted time string
|
|
16
|
-
*
|
|
17
|
-
* @Exemples
|
|
18
|
-
* @"1012" | "10:12"
|
|
19
|
-
* @"10:12" | "10:12:00"
|
|
20
|
-
* @"100112" | "10:01:12"
|
|
21
|
-
*/
|
|
22
|
-
static prepareValue(value: string, showSeconds: boolean): string {
|
|
23
|
-
if (value && value.length > 0 && value != "NaN") {
|
|
24
|
-
let validationValue = value.replace(/:/g, "");
|
|
25
|
-
if (showSeconds) {
|
|
26
|
-
this._maskFormatter.mask = "##:##:##"
|
|
27
|
-
if (validationValue.length < 6) {
|
|
28
|
-
while (validationValue.length < 6) {
|
|
29
|
-
validationValue = "0".concat(validationValue);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
} else {
|
|
33
|
-
this._maskFormatter.mask = "##:##";
|
|
34
|
-
if (validationValue.length < 4) {
|
|
35
|
-
while (validationValue.length < 4) {
|
|
36
|
-
validationValue = "0".concat(validationValue);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
if (this._maskFormatter) {
|
|
41
|
-
try {
|
|
42
|
-
value = this._maskFormatter.format(validationValue);
|
|
43
|
-
return value;
|
|
44
|
-
} catch (e:any) {
|
|
45
|
-
throw new Error(e.message);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return '';
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* @validateTime: validates if an input string has the corect time format.
|
|
54
|
-
*
|
|
55
|
-
* @param value input string to validate
|
|
56
|
-
*
|
|
57
|
-
* @returns true or false
|
|
58
|
-
*
|
|
59
|
-
* @Exemples
|
|
60
|
-
* @"1012" | true
|
|
61
|
-
* @"14e4" | false
|
|
62
|
-
* @"2624" | false
|
|
63
|
-
*/
|
|
64
|
-
static validateTime(value: string, showSeconds: boolean) {
|
|
65
|
-
let isValid: boolean = true;
|
|
66
|
-
if (value) {
|
|
67
|
-
let validationValue = value.replace(/:/g, "");
|
|
68
|
-
if (showSeconds) {
|
|
69
|
-
if (!["1", "2", "0"].includes(validationValue[0])) {
|
|
70
|
-
isValid = false;
|
|
71
|
-
}
|
|
72
|
-
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[2])) {
|
|
73
|
-
isValid = false;
|
|
74
|
-
}
|
|
75
|
-
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[4])) {
|
|
76
|
-
isValid = false;
|
|
77
|
-
}
|
|
78
|
-
if (validationValue[0] == "2" && !["0", "1", "2", "3"].includes(validationValue[1])) {
|
|
79
|
-
isValid = false;
|
|
80
|
-
}
|
|
81
|
-
} else {
|
|
82
|
-
if (!["1", "2", "0"].includes(validationValue[0])) {
|
|
83
|
-
isValid = false;
|
|
84
|
-
}
|
|
85
|
-
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[2])) {
|
|
86
|
-
isValid = false;
|
|
87
|
-
}
|
|
88
|
-
if (validationValue[0] == "2" && !["0", "1", "2", "3"].includes(validationValue[1])) {
|
|
89
|
-
isValid = false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}else{
|
|
93
|
-
isValid = false;
|
|
94
|
-
}
|
|
95
|
-
return isValid;
|
|
96
|
-
}
|
|
97
|
-
|
|
1
|
+
import { MaskFormatter } from "./MaskFormatter.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* `TimeFormatter` é um utilitário para formatação de strings desformatadas em strings válidas de horários
|
|
5
|
+
*/
|
|
6
|
+
export class TimeFormatter {
|
|
7
|
+
|
|
8
|
+
static _maskFormatter: MaskFormatter = new MaskFormatter("##:##");
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* @prepareValue: converts an unformated time string into a formatted time.
|
|
12
|
+
*
|
|
13
|
+
* @param value unformated time string to convert
|
|
14
|
+
*
|
|
15
|
+
* @returns formatted time string
|
|
16
|
+
*
|
|
17
|
+
* @Exemples
|
|
18
|
+
* @"1012" | "10:12"
|
|
19
|
+
* @"10:12" | "10:12:00"
|
|
20
|
+
* @"100112" | "10:01:12"
|
|
21
|
+
*/
|
|
22
|
+
static prepareValue(value: string, showSeconds: boolean): string {
|
|
23
|
+
if (value && value.length > 0 && value != "NaN") {
|
|
24
|
+
let validationValue = value.replace(/:/g, "");
|
|
25
|
+
if (showSeconds) {
|
|
26
|
+
this._maskFormatter.mask = "##:##:##"
|
|
27
|
+
if (validationValue.length < 6) {
|
|
28
|
+
while (validationValue.length < 6) {
|
|
29
|
+
validationValue = "0".concat(validationValue);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
this._maskFormatter.mask = "##:##";
|
|
34
|
+
if (validationValue.length < 4) {
|
|
35
|
+
while (validationValue.length < 4) {
|
|
36
|
+
validationValue = "0".concat(validationValue);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (this._maskFormatter) {
|
|
41
|
+
try {
|
|
42
|
+
value = this._maskFormatter.format(validationValue);
|
|
43
|
+
return value;
|
|
44
|
+
} catch (e:any) {
|
|
45
|
+
throw new Error(e.message);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @validateTime: validates if an input string has the corect time format.
|
|
54
|
+
*
|
|
55
|
+
* @param value input string to validate
|
|
56
|
+
*
|
|
57
|
+
* @returns true or false
|
|
58
|
+
*
|
|
59
|
+
* @Exemples
|
|
60
|
+
* @"1012" | true
|
|
61
|
+
* @"14e4" | false
|
|
62
|
+
* @"2624" | false
|
|
63
|
+
*/
|
|
64
|
+
static validateTime(value: string, showSeconds: boolean) {
|
|
65
|
+
let isValid: boolean = true;
|
|
66
|
+
if (value) {
|
|
67
|
+
let validationValue = value.replace(/:/g, "");
|
|
68
|
+
if (showSeconds) {
|
|
69
|
+
if (!["1", "2", "0"].includes(validationValue[0])) {
|
|
70
|
+
isValid = false;
|
|
71
|
+
}
|
|
72
|
+
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[2])) {
|
|
73
|
+
isValid = false;
|
|
74
|
+
}
|
|
75
|
+
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[4])) {
|
|
76
|
+
isValid = false;
|
|
77
|
+
}
|
|
78
|
+
if (validationValue[0] == "2" && !["0", "1", "2", "3"].includes(validationValue[1])) {
|
|
79
|
+
isValid = false;
|
|
80
|
+
}
|
|
81
|
+
} else {
|
|
82
|
+
if (!["1", "2", "0"].includes(validationValue[0])) {
|
|
83
|
+
isValid = false;
|
|
84
|
+
}
|
|
85
|
+
if (!["0", "1", "2", "3", "4", "5"].includes(validationValue[2])) {
|
|
86
|
+
isValid = false;
|
|
87
|
+
}
|
|
88
|
+
if (validationValue[0] == "2" && !["0", "1", "2", "3"].includes(validationValue[1])) {
|
|
89
|
+
isValid = false;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}else{
|
|
93
|
+
isValid = false;
|
|
94
|
+
}
|
|
95
|
+
return isValid;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
98
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
/*"Este utilitário deverá ser uma abstração do XMLHttpRequest, deverá ter como métodos publicos (construtor, get, post, put, delete).
|
|
2
|
-
-> Promisse<JSON> get(url);
|
|
3
|
-
-> Promisse<JSON> post(url, JSON);
|
|
4
|
-
-> Promisse<JSON> put(url, JSON);
|
|
5
|
-
-> Promisse<JSON> delete(url);
|
|
6
|
-
Em vários casos pode ser necessário fazer algumas mudanças no comportamento padrão do provider, para isso podemos utilizar o principio do OCP(Open Closed Principle)
|
|
7
|
-
através da criação de uma interface (IHttpProviderDecorator) que pode ser passada como argumento no construtor de HttpProvider, quando esse objeto existir o HttpProvider
|
|
8
|
-
irá chama-lo em alguns momentos do cliclo de vida do objeto alguns métodos que podem existir na interface (beforeSend(HttpRequest), afterSend(HttpRequest), onStatateChange(Enum.STATE), resolveBaseUrl() ).
|
|
9
|
-
A ideia é que esse utilitário seja agnostico ao backend, posteriormente podemos criar factory's para cada aplicação, por exemplo, HttpSnkOmFactory, esse factory já entregaria um
|
|
10
|
-
HttpProvider com o IHttpProviderDecorator registrado especificico para o SankhyaOm."*/
|
|
11
|
-
|
|
12
|
-
// import { HttpProvider } from '../../src/http/HttpProvider';
|
|
13
|
-
// import '../../mock/http/XMLHttpRequest-mock.js'
|
|
14
|
-
|
|
15
|
-
describe('HttpProvider', () => {
|
|
16
|
-
|
|
17
|
-
it('Metodo GET', (async () => {
|
|
18
|
-
|
|
19
|
-
// const compareTo = {
|
|
20
|
-
// "data": { "A": "B" },
|
|
21
|
-
// "dataAsString": "{\"A\":\"B\"}",
|
|
22
|
-
// "status": 200,
|
|
23
|
-
// "statusText": "OK"
|
|
24
|
-
// };
|
|
25
|
-
|
|
26
|
-
// HttpProvider.get('get')
|
|
27
|
-
// expect(HttpProvider.get("get")).resolves.toEqual(compareTo);
|
|
28
|
-
// expect(HttpProvider.post("post", { "AB": "CD" })).resolves.toEqual(expect.objectContaining({ ...compareTo, data: { "AB": "CD" }, dataAsString: "{\"AB\":\"CD\"}" }));
|
|
29
|
-
|
|
30
|
-
// /*expect(HttpProvider.put("put")).resolves.toEqual(expect.objectContaining(compareTo));
|
|
31
|
-
|
|
32
|
-
// expect(HttpProvider.delete("delete")).resolves.toEqual(expect.objectContaining(compareTo));*/
|
|
33
|
-
|
|
34
|
-
}));
|
|
1
|
+
/*"Este utilitário deverá ser uma abstração do XMLHttpRequest, deverá ter como métodos publicos (construtor, get, post, put, delete).
|
|
2
|
+
-> Promisse<JSON> get(url);
|
|
3
|
+
-> Promisse<JSON> post(url, JSON);
|
|
4
|
+
-> Promisse<JSON> put(url, JSON);
|
|
5
|
+
-> Promisse<JSON> delete(url);
|
|
6
|
+
Em vários casos pode ser necessário fazer algumas mudanças no comportamento padrão do provider, para isso podemos utilizar o principio do OCP(Open Closed Principle)
|
|
7
|
+
através da criação de uma interface (IHttpProviderDecorator) que pode ser passada como argumento no construtor de HttpProvider, quando esse objeto existir o HttpProvider
|
|
8
|
+
irá chama-lo em alguns momentos do cliclo de vida do objeto alguns métodos que podem existir na interface (beforeSend(HttpRequest), afterSend(HttpRequest), onStatateChange(Enum.STATE), resolveBaseUrl() ).
|
|
9
|
+
A ideia é que esse utilitário seja agnostico ao backend, posteriormente podemos criar factory's para cada aplicação, por exemplo, HttpSnkOmFactory, esse factory já entregaria um
|
|
10
|
+
HttpProvider com o IHttpProviderDecorator registrado especificico para o SankhyaOm."*/
|
|
11
|
+
|
|
12
|
+
// import { HttpProvider } from '../../src/http/HttpProvider';
|
|
13
|
+
// import '../../mock/http/XMLHttpRequest-mock.js'
|
|
14
|
+
|
|
15
|
+
describe('HttpProvider', () => {
|
|
16
|
+
|
|
17
|
+
it('Metodo GET', (async () => {
|
|
18
|
+
|
|
19
|
+
// const compareTo = {
|
|
20
|
+
// "data": { "A": "B" },
|
|
21
|
+
// "dataAsString": "{\"A\":\"B\"}",
|
|
22
|
+
// "status": 200,
|
|
23
|
+
// "statusText": "OK"
|
|
24
|
+
// };
|
|
25
|
+
|
|
26
|
+
// HttpProvider.get('get')
|
|
27
|
+
// expect(HttpProvider.get("get")).resolves.toEqual(compareTo);
|
|
28
|
+
// expect(HttpProvider.post("post", { "AB": "CD" })).resolves.toEqual(expect.objectContaining({ ...compareTo, data: { "AB": "CD" }, dataAsString: "{\"AB\":\"CD\"}" }));
|
|
29
|
+
|
|
30
|
+
// /*expect(HttpProvider.put("put")).resolves.toEqual(expect.objectContaining(compareTo));
|
|
31
|
+
|
|
32
|
+
// expect(HttpProvider.delete("delete")).resolves.toEqual(expect.objectContaining(compareTo));*/
|
|
33
|
+
|
|
34
|
+
}));
|
|
35
35
|
});
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
/*"Este utilitário deverá ser uma abstração do XMLHttpRequest, deverá ter como métodos publicos (construtor, get, post, put, delete).
|
|
2
|
-
-> Promisse<JSON> get(url);
|
|
3
|
-
-> Promisse<JSON> post(url, JSON);
|
|
4
|
-
-> Promisse<JSON> put(url, JSON);
|
|
5
|
-
-> Promisse<JSON> delete(url);
|
|
6
|
-
Em vários casos pode ser necessário fazer algumas mudanças no comportamento padrão do provider, para isso podemos utilizar o principio do OCP(Open Closed Principle)
|
|
7
|
-
através da criação de uma interface (IHttpProviderDecorator) que pode ser passada como argumento no construtor de HttpProvider, quando esse objeto existir o HttpProvider
|
|
8
|
-
irá chama-lo em alguns momentos do cliclo de vida do objeto alguns métodos que podem existir na interface (beforeSend(HttpRequest), afterSend(HttpRequest), onStatateChange(Enum.STATE), resolveBaseUrl() ).
|
|
9
|
-
A ideia é que esse utilitário seja agnostico ao backend, posteriormente podemos criar factory's para cada aplicação, por exemplo, HttpSnkOmFactory, esse factory já entregaria um
|
|
10
|
-
HttpProvider com o IHttpProviderDecorator registrado especificico para o SankhyaOm."*/
|
|
11
|
-
|
|
12
|
-
// import { HttpProvider } from '../../src/http/HttpProvider';
|
|
13
|
-
|
|
14
|
-
describe('HttpProvider', () => {
|
|
15
|
-
|
|
16
|
-
it('Metodo POST', (async () => {
|
|
17
|
-
|
|
18
|
-
// const compareTo = {
|
|
19
|
-
// "data": { "A": "B" },
|
|
20
|
-
// "dataAsString": "{\"A\":\"B\"}",
|
|
21
|
-
// "status": 200,
|
|
22
|
-
// "statusText": "OK"
|
|
23
|
-
// };
|
|
24
|
-
|
|
25
|
-
// HttpProvider.get('get')
|
|
26
|
-
// expect(HttpProvider.get("get")).resolves.toEqual(compareTo);
|
|
27
|
-
// expect(HttpProvider.post("post", { "AB": "CD" })).resolves.toEqual(expect.objectContaining({ ...compareTo, data: { "AB": "CD" }, dataAsString: "{\"AB\":\"CD\"}" }));
|
|
28
|
-
|
|
29
|
-
// /*expect(HttpProvider.put("put")).resolves.toEqual(expect.objectContaining(compareTo));
|
|
30
|
-
|
|
31
|
-
// expect(HttpProvider.delete("delete")).resolves.toEqual(expect.objectContaining(compareTo));*/
|
|
32
|
-
|
|
33
|
-
}));
|
|
1
|
+
/*"Este utilitário deverá ser uma abstração do XMLHttpRequest, deverá ter como métodos publicos (construtor, get, post, put, delete).
|
|
2
|
+
-> Promisse<JSON> get(url);
|
|
3
|
+
-> Promisse<JSON> post(url, JSON);
|
|
4
|
+
-> Promisse<JSON> put(url, JSON);
|
|
5
|
+
-> Promisse<JSON> delete(url);
|
|
6
|
+
Em vários casos pode ser necessário fazer algumas mudanças no comportamento padrão do provider, para isso podemos utilizar o principio do OCP(Open Closed Principle)
|
|
7
|
+
através da criação de uma interface (IHttpProviderDecorator) que pode ser passada como argumento no construtor de HttpProvider, quando esse objeto existir o HttpProvider
|
|
8
|
+
irá chama-lo em alguns momentos do cliclo de vida do objeto alguns métodos que podem existir na interface (beforeSend(HttpRequest), afterSend(HttpRequest), onStatateChange(Enum.STATE), resolveBaseUrl() ).
|
|
9
|
+
A ideia é que esse utilitário seja agnostico ao backend, posteriormente podemos criar factory's para cada aplicação, por exemplo, HttpSnkOmFactory, esse factory já entregaria um
|
|
10
|
+
HttpProvider com o IHttpProviderDecorator registrado especificico para o SankhyaOm."*/
|
|
11
|
+
|
|
12
|
+
// import { HttpProvider } from '../../src/http/HttpProvider';
|
|
13
|
+
|
|
14
|
+
describe('HttpProvider', () => {
|
|
15
|
+
|
|
16
|
+
it('Metodo POST', (async () => {
|
|
17
|
+
|
|
18
|
+
// const compareTo = {
|
|
19
|
+
// "data": { "A": "B" },
|
|
20
|
+
// "dataAsString": "{\"A\":\"B\"}",
|
|
21
|
+
// "status": 200,
|
|
22
|
+
// "statusText": "OK"
|
|
23
|
+
// };
|
|
24
|
+
|
|
25
|
+
// HttpProvider.get('get')
|
|
26
|
+
// expect(HttpProvider.get("get")).resolves.toEqual(compareTo);
|
|
27
|
+
// expect(HttpProvider.post("post", { "AB": "CD" })).resolves.toEqual(expect.objectContaining({ ...compareTo, data: { "AB": "CD" }, dataAsString: "{\"AB\":\"CD\"}" }));
|
|
28
|
+
|
|
29
|
+
// /*expect(HttpProvider.put("put")).resolves.toEqual(expect.objectContaining(compareTo));
|
|
30
|
+
|
|
31
|
+
// expect(HttpProvider.delete("delete")).resolves.toEqual(expect.objectContaining(compareTo));*/
|
|
32
|
+
|
|
33
|
+
}));
|
|
34
34
|
});
|