@smess/networking 1.0.10 → 1.0.13
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/README.md +26 -20
- package/dist/core/axios.d.ts +3 -3
- package/dist/core/axios.js +2 -2
- package/dist/core/axios.observable.d.ts +3 -3
- package/dist/core/axios.observable.js +7 -7
- package/dist/core/base.provider.advanced.test.js +15 -15
- package/dist/core/base.provider.d.ts +1 -1
- package/dist/core/base.provider.js +2 -2
- package/dist/core/base.provider.test.js +22 -18
- package/dist/core/base.service.wrapper.advanced.test.js +16 -13
- package/dist/core/base.service.wrapper.d.ts +2 -2
- package/dist/core/base.service.wrapper.js +1 -1
- package/dist/core/base.service.wrapper.test.js +14 -14
- package/dist/core/rx.http.service.d.ts +3 -3
- package/dist/core/rx.http.service.js +2 -2
- package/dist/index.d.ts +13 -13
- package/dist/index.js +15 -15
- package/dist/services/auth.service.d.ts +6 -5
- package/dist/services/auth.service.js +50 -28
- package/dist/services/auth.service.test.js +67 -51
- package/dist/services/cache.service.d.ts +1 -1
- package/dist/services/cache.service.js +7 -7
- package/dist/services/cache.service.test.d.ts +1 -1
- package/dist/services/cache.service.test.js +37 -37
- package/dist/services/customer.service.d.ts +4 -4
- package/dist/services/customer.service.js +19 -17
- package/dist/services/customer.service.test.js +38 -34
- package/dist/services/logger.service.js +11 -11
- package/dist/services/logger.service.test.js +12 -12
- package/dist/services/order.service.d.ts +16 -4
- package/dist/services/order.service.js +38 -30
- package/dist/services/order.service.test.js +75 -47
- package/dist/services/product.service.d.ts +4 -4
- package/dist/services/product.service.js +8 -8
- package/dist/services/product.service.test.js +27 -19
- package/dist/services/smess.service.d.ts +2 -2
- package/dist/services/smess.service.js +19 -19
- package/dist/services/smess.service.test.js +36 -32
- package/dist/services/store.service.d.ts +4 -4
- package/dist/services/store.service.js +70 -50
- package/dist/services/store.service.test.d.ts +1 -1
- package/dist/services/store.service.test.js +161 -85
- package/dist/services/user.service.d.ts +3 -3
- package/dist/services/user.service.js +11 -8
- package/dist/services/user.service.test.js +23 -17
- package/dist/types/types.js +3 -3
- package/dist/types/types.test.js +8 -8
- package/dist/utils/cache-import.d.ts +1 -1
- package/dist/utils/cache-import.js +1 -1
- package/dist/utils/networking-import.d.ts +3 -3
- package/dist/utils/networking-import.js +2 -2
- package/dist/utils/rxjs-import.d.ts +2 -2
- package/dist/utils/rxjs-import.js +2 -2
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { CustomerService } from
|
|
2
|
-
import { NetworkingUIEventWrapped, AlertModel } from
|
|
3
|
-
import { of, BehaviorSubject } from
|
|
4
|
-
describe(
|
|
1
|
+
import { CustomerService, } from "./customer.service";
|
|
2
|
+
import { NetworkingUIEventWrapped, AlertModel, } from "../types/types";
|
|
3
|
+
import { of, BehaviorSubject } from "rxjs";
|
|
4
|
+
describe("CustomerService", () => {
|
|
5
5
|
const config = {
|
|
6
|
-
baseUrl:
|
|
6
|
+
baseUrl: "https://api.example.com",
|
|
7
7
|
isProd: false,
|
|
8
|
-
clientId:
|
|
9
|
-
apiKey:
|
|
8
|
+
clientId: "test-client-id",
|
|
9
|
+
apiKey: "test-api-key",
|
|
10
10
|
};
|
|
11
11
|
let service;
|
|
12
12
|
let $authToken;
|
|
@@ -14,79 +14,83 @@ describe('CustomerService', () => {
|
|
|
14
14
|
$authToken = new BehaviorSubject(null);
|
|
15
15
|
service = new CustomerService(config, $authToken);
|
|
16
16
|
});
|
|
17
|
-
it(
|
|
17
|
+
it("register success", async () => {
|
|
18
18
|
const payload = {
|
|
19
|
-
email:
|
|
20
|
-
password:
|
|
19
|
+
email: "test@example.com",
|
|
20
|
+
password: "pass",
|
|
21
21
|
};
|
|
22
|
-
const response = {
|
|
23
|
-
|
|
22
|
+
const response = {
|
|
23
|
+
data: { id: 1, email: "test@example.com" },
|
|
24
|
+
};
|
|
25
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
24
26
|
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
25
27
|
});
|
|
26
28
|
const result = await service.register(payload).toPromise();
|
|
27
29
|
expect(result?.hasSuccess).toBe(true);
|
|
28
30
|
expect(result?.response).toEqual(response);
|
|
29
31
|
});
|
|
30
|
-
it(
|
|
32
|
+
it("register error", async () => {
|
|
31
33
|
const payload = {
|
|
32
|
-
email:
|
|
33
|
-
password:
|
|
34
|
+
email: "test@example.com",
|
|
35
|
+
password: "pass",
|
|
34
36
|
};
|
|
35
|
-
jest.spyOn(service,
|
|
37
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
36
38
|
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
37
39
|
});
|
|
38
40
|
const result = await service.register(payload).toPromise();
|
|
39
41
|
expect(result?.hasFailed).toBe(true);
|
|
40
42
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
41
43
|
});
|
|
42
|
-
it(
|
|
43
|
-
const response = {
|
|
44
|
-
|
|
44
|
+
it("getProfile success", async () => {
|
|
45
|
+
const response = {
|
|
46
|
+
data: { id: 1, email: "test@example.com" },
|
|
47
|
+
};
|
|
48
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
45
49
|
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
46
50
|
});
|
|
47
51
|
const result = await service.getProfile().toPromise();
|
|
48
52
|
expect(result?.hasSuccess).toBe(true);
|
|
49
53
|
expect(result?.response).toEqual(response);
|
|
50
54
|
});
|
|
51
|
-
it(
|
|
52
|
-
jest.spyOn(service,
|
|
55
|
+
it("getProfile error", async () => {
|
|
56
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
53
57
|
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
54
58
|
});
|
|
55
59
|
const result = await service.getProfile().toPromise();
|
|
56
60
|
expect(result?.hasFailed).toBe(true);
|
|
57
61
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
58
62
|
});
|
|
59
|
-
it(
|
|
63
|
+
it("updateProfile success", async () => {
|
|
60
64
|
const payload = {
|
|
61
|
-
name:
|
|
62
|
-
address:
|
|
63
|
-
postal_code:
|
|
64
|
-
city:
|
|
65
|
+
name: "Test",
|
|
66
|
+
address: "123 Main St",
|
|
67
|
+
postal_code: "12345",
|
|
68
|
+
city: "City",
|
|
65
69
|
state: null,
|
|
66
70
|
country: null,
|
|
67
71
|
contact_email: null,
|
|
68
72
|
phone_number: null,
|
|
69
73
|
};
|
|
70
|
-
const response = { data: { id: 1, name:
|
|
71
|
-
jest.spyOn(service,
|
|
74
|
+
const response = { data: { id: 1, name: "Test" } };
|
|
75
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
72
76
|
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
73
77
|
});
|
|
74
78
|
const result = await service.updateProfile(payload).toPromise();
|
|
75
79
|
expect(result?.hasSuccess).toBe(true);
|
|
76
80
|
expect(result?.response).toEqual(response);
|
|
77
81
|
});
|
|
78
|
-
it(
|
|
82
|
+
it("updateProfile error", async () => {
|
|
79
83
|
const payload = {
|
|
80
|
-
name:
|
|
81
|
-
address:
|
|
82
|
-
postal_code:
|
|
83
|
-
city:
|
|
84
|
+
name: "Test",
|
|
85
|
+
address: "123 Main St",
|
|
86
|
+
postal_code: "12345",
|
|
87
|
+
city: "City",
|
|
84
88
|
state: null,
|
|
85
89
|
country: null,
|
|
86
90
|
contact_email: null,
|
|
87
91
|
phone_number: null,
|
|
88
92
|
};
|
|
89
|
-
jest.spyOn(service,
|
|
93
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
90
94
|
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
91
95
|
});
|
|
92
96
|
const result = await service.updateProfile(payload).toPromise();
|
|
@@ -21,21 +21,21 @@ export class LoggerService {
|
|
|
21
21
|
formatMessage(level, message, context) {
|
|
22
22
|
const emoji = this.getEmojiForLevel(level);
|
|
23
23
|
const levelName = LogLevel[level];
|
|
24
|
-
const contextStr = context ? ` [${context}]` :
|
|
24
|
+
const contextStr = context ? ` [${context}]` : "";
|
|
25
25
|
return `${emoji} ${levelName}${contextStr}: ${message}`;
|
|
26
26
|
}
|
|
27
27
|
getEmojiForLevel(level) {
|
|
28
28
|
switch (level) {
|
|
29
29
|
case LogLevel.DEBUG:
|
|
30
|
-
return
|
|
30
|
+
return "🔍";
|
|
31
31
|
case LogLevel.INFO:
|
|
32
|
-
return
|
|
32
|
+
return "ℹ️";
|
|
33
33
|
case LogLevel.WARN:
|
|
34
|
-
return
|
|
34
|
+
return "⚠️";
|
|
35
35
|
case LogLevel.ERROR:
|
|
36
|
-
return
|
|
36
|
+
return "❌";
|
|
37
37
|
default:
|
|
38
|
-
return
|
|
38
|
+
return "📝";
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
log(level, message, data, context) {
|
|
@@ -46,7 +46,7 @@ export class LoggerService {
|
|
|
46
46
|
message,
|
|
47
47
|
data,
|
|
48
48
|
timestamp: Date.now(),
|
|
49
|
-
context
|
|
49
|
+
context,
|
|
50
50
|
};
|
|
51
51
|
// Store log entry
|
|
52
52
|
this.logs.push(logEntry);
|
|
@@ -57,16 +57,16 @@ export class LoggerService {
|
|
|
57
57
|
const formattedMessage = this.formatMessage(level, message, context);
|
|
58
58
|
switch (level) {
|
|
59
59
|
case LogLevel.DEBUG:
|
|
60
|
-
console.debug(formattedMessage, data ||
|
|
60
|
+
console.debug(formattedMessage, data || "");
|
|
61
61
|
break;
|
|
62
62
|
case LogLevel.INFO:
|
|
63
|
-
console.info(formattedMessage, data ||
|
|
63
|
+
console.info(formattedMessage, data || "");
|
|
64
64
|
break;
|
|
65
65
|
case LogLevel.WARN:
|
|
66
|
-
console.warn(formattedMessage, data ||
|
|
66
|
+
console.warn(formattedMessage, data || "");
|
|
67
67
|
break;
|
|
68
68
|
case LogLevel.ERROR:
|
|
69
|
-
console.error(formattedMessage, data ||
|
|
69
|
+
console.error(formattedMessage, data || "");
|
|
70
70
|
break;
|
|
71
71
|
}
|
|
72
72
|
}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import { $logger, LogLevel } from
|
|
2
|
-
describe(
|
|
1
|
+
import { $logger, LogLevel } from "./logger.service";
|
|
2
|
+
describe("LoggerService", () => {
|
|
3
3
|
beforeEach(() => {
|
|
4
4
|
$logger.clearLogs();
|
|
5
5
|
$logger.setLogLevel(LogLevel.DEBUG);
|
|
6
6
|
});
|
|
7
|
-
it(
|
|
8
|
-
$logger.info(
|
|
7
|
+
it("should log info", () => {
|
|
8
|
+
$logger.info("info message", { foo: 1 }, "test");
|
|
9
9
|
const logs = $logger.getLogs();
|
|
10
10
|
expect(logs[0].level).toBe(LogLevel.INFO);
|
|
11
|
-
expect(logs[0].message).toBe(
|
|
11
|
+
expect(logs[0].message).toBe("info message");
|
|
12
12
|
expect(logs[0].data).toEqual({ foo: 1 });
|
|
13
|
-
expect(logs[0].context).toBe(
|
|
13
|
+
expect(logs[0].context).toBe("test");
|
|
14
14
|
});
|
|
15
|
-
it(
|
|
16
|
-
$logger.warn(
|
|
17
|
-
$logger.error(
|
|
15
|
+
it("should log warn and error", () => {
|
|
16
|
+
$logger.warn("warn message");
|
|
17
|
+
$logger.error("error message", { bar: 2 });
|
|
18
18
|
const logs = $logger.getLogs();
|
|
19
19
|
expect(logs[0].level).toBe(LogLevel.WARN);
|
|
20
20
|
expect(logs[1].level).toBe(LogLevel.ERROR);
|
|
21
21
|
expect(logs[1].data).toEqual({ bar: 2 });
|
|
22
22
|
});
|
|
23
|
-
it(
|
|
23
|
+
it("should respect log level", () => {
|
|
24
24
|
$logger.setLogLevel(LogLevel.ERROR);
|
|
25
|
-
$logger.info(
|
|
26
|
-
$logger.error(
|
|
25
|
+
$logger.info("should not log");
|
|
26
|
+
$logger.error("should log");
|
|
27
27
|
const logs = $logger.getLogs();
|
|
28
28
|
expect(logs.length).toBe(1);
|
|
29
29
|
expect(logs[0].level).toBe(LogLevel.ERROR);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from
|
|
2
|
-
import { SmessService } from
|
|
3
|
-
import { BehaviorSubject, Observable } from
|
|
4
|
-
export type OrderTarget =
|
|
1
|
+
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from "../types/types";
|
|
2
|
+
import { SmessService } from "./smess.service";
|
|
3
|
+
import { BehaviorSubject, Observable } from "rxjs";
|
|
4
|
+
export type OrderTarget = "order-list" | "order-create" | "order-delete" | "order-get-draft" | "order-update" | "order-get" | "order-collection";
|
|
5
5
|
export interface CreateOrderRequest extends UpdateOrderRequest {
|
|
6
6
|
}
|
|
7
7
|
export interface UpdateOrderRequest {
|
|
@@ -36,6 +36,17 @@ export interface OrderItemRequest {
|
|
|
36
36
|
page_number?: number;
|
|
37
37
|
item_row_in_page?: number;
|
|
38
38
|
}
|
|
39
|
+
export interface OrderCollectionRequest {
|
|
40
|
+
page?: number;
|
|
41
|
+
per_page?: number;
|
|
42
|
+
search?: string;
|
|
43
|
+
status?: string;
|
|
44
|
+
payment_status?: string;
|
|
45
|
+
order_date_from?: string;
|
|
46
|
+
order_date_to?: string;
|
|
47
|
+
sort_by?: string;
|
|
48
|
+
sort_order?: 'asc' | 'desc';
|
|
49
|
+
}
|
|
39
50
|
export declare class OrderProvider implements ProviderType {
|
|
40
51
|
private readonly config;
|
|
41
52
|
private readonly target;
|
|
@@ -58,4 +69,5 @@ export declare class OrderService {
|
|
|
58
69
|
getDraft(): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
59
70
|
update(id: string, payload: UpdateOrderRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
60
71
|
get(id: string): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
72
|
+
collection(payload: OrderCollectionRequest): Observable<NetworkingUIEventWrapped<HttpResponse>>;
|
|
61
73
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Accept, SMESSHeader, SmessService } from
|
|
1
|
+
import { Accept, SMESSHeader, SmessService } from "./smess.service";
|
|
2
2
|
export class OrderProvider {
|
|
3
3
|
constructor(config, target, $authToken) {
|
|
4
4
|
this.config = config;
|
|
@@ -6,38 +6,43 @@ export class OrderProvider {
|
|
|
6
6
|
this.$authToken = $authToken;
|
|
7
7
|
}
|
|
8
8
|
get baseURL() {
|
|
9
|
-
return this.config.version
|
|
9
|
+
return this.config.version
|
|
10
|
+
? `${this.config.baseUrl}/${this.config.version}`
|
|
11
|
+
: this.config.baseUrl;
|
|
10
12
|
}
|
|
11
13
|
get path() {
|
|
12
14
|
switch (this.target) {
|
|
13
|
-
case
|
|
14
|
-
return
|
|
15
|
-
case
|
|
16
|
-
return
|
|
17
|
-
case
|
|
18
|
-
return
|
|
19
|
-
case
|
|
20
|
-
return
|
|
21
|
-
case
|
|
22
|
-
|
|
15
|
+
case "order-list":
|
|
16
|
+
return "/order/list";
|
|
17
|
+
case "order-create":
|
|
18
|
+
return "/order/create";
|
|
19
|
+
case "order-delete":
|
|
20
|
+
return "/order/${id}";
|
|
21
|
+
case "order-get-draft":
|
|
22
|
+
return "/order/get-draft";
|
|
23
|
+
case "order-collection":
|
|
24
|
+
return "/order/collection";
|
|
25
|
+
case "order-update":
|
|
26
|
+
case "order-get":
|
|
23
27
|
default:
|
|
24
|
-
return
|
|
28
|
+
return "/order/${id}";
|
|
25
29
|
}
|
|
26
30
|
}
|
|
27
31
|
get method() {
|
|
28
32
|
switch (this.target) {
|
|
29
|
-
case
|
|
30
|
-
case
|
|
31
|
-
case
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
case "order-list":
|
|
34
|
+
case "order-get":
|
|
35
|
+
case "order-get-draft":
|
|
36
|
+
case "order-collection":
|
|
37
|
+
return "GET";
|
|
38
|
+
case "order-create":
|
|
39
|
+
return "POST";
|
|
40
|
+
case "order-update":
|
|
41
|
+
return "PUT";
|
|
42
|
+
case "order-delete":
|
|
43
|
+
return "DELETE";
|
|
39
44
|
default:
|
|
40
|
-
return
|
|
45
|
+
return "GET";
|
|
41
46
|
}
|
|
42
47
|
}
|
|
43
48
|
get headers() {
|
|
@@ -69,21 +74,24 @@ export class OrderService {
|
|
|
69
74
|
return new SmessService(targetWrapper);
|
|
70
75
|
}
|
|
71
76
|
list() {
|
|
72
|
-
return this.provider(
|
|
77
|
+
return this.provider("order-list").request();
|
|
73
78
|
}
|
|
74
79
|
create(payload) {
|
|
75
|
-
return this.provider(
|
|
80
|
+
return this.provider("order-create").request(payload);
|
|
76
81
|
}
|
|
77
82
|
delete(id) {
|
|
78
|
-
return this.provider(
|
|
83
|
+
return this.provider("order-delete").request(null, undefined, id);
|
|
79
84
|
}
|
|
80
85
|
getDraft() {
|
|
81
|
-
return this.provider(
|
|
86
|
+
return this.provider("order-get-draft").request();
|
|
82
87
|
}
|
|
83
88
|
update(id, payload) {
|
|
84
|
-
return this.provider(
|
|
89
|
+
return this.provider("order-update").request(payload, undefined, id);
|
|
85
90
|
}
|
|
86
91
|
get(id) {
|
|
87
|
-
return this.provider(
|
|
92
|
+
return this.provider("order-get").request(null, undefined, id);
|
|
93
|
+
}
|
|
94
|
+
collection(payload) {
|
|
95
|
+
return this.provider("order-collection").request(null, undefined, undefined, payload);
|
|
88
96
|
}
|
|
89
97
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { OrderService } from
|
|
2
|
-
import { NetworkingUIEventWrapped, AlertModel } from
|
|
3
|
-
import { of, BehaviorSubject } from
|
|
4
|
-
describe(
|
|
1
|
+
import { OrderService, } from "./order.service";
|
|
2
|
+
import { NetworkingUIEventWrapped, AlertModel, } from "../types/types";
|
|
3
|
+
import { of, BehaviorSubject } from "rxjs";
|
|
4
|
+
describe("OrderService", () => {
|
|
5
5
|
const config = {
|
|
6
|
-
baseUrl:
|
|
6
|
+
baseUrl: "https://api.example.com",
|
|
7
7
|
isProd: false,
|
|
8
|
-
clientId:
|
|
9
|
-
apiKey:
|
|
8
|
+
clientId: "test-client-id",
|
|
9
|
+
apiKey: "test-api-key",
|
|
10
10
|
};
|
|
11
11
|
let service;
|
|
12
12
|
let $authToken;
|
|
@@ -14,121 +14,149 @@ describe('OrderService', () => {
|
|
|
14
14
|
$authToken = new BehaviorSubject(null);
|
|
15
15
|
service = new OrderService(config, $authToken);
|
|
16
16
|
});
|
|
17
|
-
it(
|
|
18
|
-
const response = { data: [{ id:
|
|
19
|
-
jest.spyOn(service,
|
|
17
|
+
it("list success", async () => {
|
|
18
|
+
const response = { data: [{ id: "1", status: "draft" }] };
|
|
19
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
20
20
|
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
21
21
|
});
|
|
22
22
|
const result = await service.list().toPromise();
|
|
23
23
|
expect(result?.hasSuccess).toBe(true);
|
|
24
24
|
expect(result?.response).toEqual(response);
|
|
25
25
|
});
|
|
26
|
-
it(
|
|
27
|
-
jest.spyOn(service,
|
|
26
|
+
it("list error", async () => {
|
|
27
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
28
28
|
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
29
29
|
});
|
|
30
30
|
const result = await service.list().toPromise();
|
|
31
31
|
expect(result?.hasFailed).toBe(true);
|
|
32
32
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
33
33
|
});
|
|
34
|
-
it(
|
|
34
|
+
it("create success", async () => {
|
|
35
35
|
const payload = {
|
|
36
|
-
order_date:
|
|
36
|
+
order_date: "2024-01-01",
|
|
37
37
|
order_items: [],
|
|
38
38
|
};
|
|
39
|
-
const response = { data: { id:
|
|
40
|
-
jest.spyOn(service,
|
|
39
|
+
const response = { data: { id: "1", status: "created" } };
|
|
40
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
41
41
|
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
42
42
|
});
|
|
43
43
|
const result = await service.create(payload).toPromise();
|
|
44
44
|
expect(result?.hasSuccess).toBe(true);
|
|
45
45
|
expect(result?.response).toEqual(response);
|
|
46
46
|
});
|
|
47
|
-
it(
|
|
47
|
+
it("create error", async () => {
|
|
48
48
|
const payload = {
|
|
49
|
-
order_date:
|
|
49
|
+
order_date: "2024-01-01",
|
|
50
50
|
order_items: [],
|
|
51
51
|
};
|
|
52
|
-
jest.spyOn(service,
|
|
52
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
53
53
|
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
54
54
|
});
|
|
55
55
|
const result = await service.create(payload).toPromise();
|
|
56
56
|
expect(result?.hasFailed).toBe(true);
|
|
57
57
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
58
58
|
});
|
|
59
|
-
it(
|
|
60
|
-
const response = { data: { id:
|
|
61
|
-
jest.spyOn(service,
|
|
59
|
+
it("delete success", async () => {
|
|
60
|
+
const response = { data: { id: "1", status: "deleted" } };
|
|
61
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
62
62
|
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
63
63
|
});
|
|
64
|
-
const result = await service.delete(
|
|
64
|
+
const result = await service.delete("1").toPromise();
|
|
65
65
|
expect(result?.hasSuccess).toBe(true);
|
|
66
66
|
expect(result?.response).toEqual(response);
|
|
67
67
|
});
|
|
68
|
-
it(
|
|
69
|
-
jest.spyOn(service,
|
|
68
|
+
it("delete error", async () => {
|
|
69
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
70
70
|
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
71
71
|
});
|
|
72
|
-
const result = await service.delete(
|
|
72
|
+
const result = await service.delete("1").toPromise();
|
|
73
73
|
expect(result?.hasFailed).toBe(true);
|
|
74
74
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
75
75
|
});
|
|
76
|
-
it(
|
|
77
|
-
const response = { data: { id:
|
|
78
|
-
jest.spyOn(service,
|
|
76
|
+
it("getDraft success", async () => {
|
|
77
|
+
const response = { data: { id: "draft", status: "draft" } };
|
|
78
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
79
79
|
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
80
80
|
});
|
|
81
81
|
const result = await service.getDraft().toPromise();
|
|
82
82
|
expect(result?.hasSuccess).toBe(true);
|
|
83
83
|
expect(result?.response).toEqual(response);
|
|
84
84
|
});
|
|
85
|
-
it(
|
|
86
|
-
jest.spyOn(service,
|
|
85
|
+
it("getDraft error", async () => {
|
|
86
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
87
87
|
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
88
88
|
});
|
|
89
89
|
const result = await service.getDraft().toPromise();
|
|
90
90
|
expect(result?.hasFailed).toBe(true);
|
|
91
91
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
92
92
|
});
|
|
93
|
-
it(
|
|
93
|
+
it("update success", async () => {
|
|
94
94
|
const payload = {
|
|
95
|
-
order_date:
|
|
95
|
+
order_date: "2024-01-01",
|
|
96
96
|
order_items: [],
|
|
97
97
|
};
|
|
98
|
-
const response = { data: { id:
|
|
99
|
-
jest.spyOn(service,
|
|
98
|
+
const response = { data: { id: "1", status: "updated" } };
|
|
99
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
100
100
|
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
101
101
|
});
|
|
102
|
-
const result = await service.update(
|
|
102
|
+
const result = await service.update("1", payload).toPromise();
|
|
103
103
|
expect(result?.hasSuccess).toBe(true);
|
|
104
104
|
expect(result?.response).toEqual(response);
|
|
105
105
|
});
|
|
106
|
-
it(
|
|
106
|
+
it("update error", async () => {
|
|
107
107
|
const payload = {
|
|
108
|
-
order_date:
|
|
108
|
+
order_date: "2024-01-01",
|
|
109
109
|
order_items: [],
|
|
110
110
|
};
|
|
111
|
-
jest.spyOn(service,
|
|
111
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
112
112
|
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
113
113
|
});
|
|
114
|
-
const result = await service.update(
|
|
114
|
+
const result = await service.update("1", payload).toPromise();
|
|
115
115
|
expect(result?.hasFailed).toBe(true);
|
|
116
116
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
117
117
|
});
|
|
118
|
-
it(
|
|
119
|
-
const response = { data: { id:
|
|
120
|
-
jest.spyOn(service,
|
|
118
|
+
it("get success", async () => {
|
|
119
|
+
const response = { data: { id: "1", status: "fetched" } };
|
|
120
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
121
121
|
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
122
122
|
});
|
|
123
|
-
const result = await service.get(
|
|
123
|
+
const result = await service.get("1").toPromise();
|
|
124
124
|
expect(result?.hasSuccess).toBe(true);
|
|
125
125
|
expect(result?.response).toEqual(response);
|
|
126
126
|
});
|
|
127
|
-
it(
|
|
128
|
-
jest.spyOn(service,
|
|
127
|
+
it("get error", async () => {
|
|
128
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
129
129
|
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
130
130
|
});
|
|
131
|
-
const result = await service.get(
|
|
131
|
+
const result = await service.get("1").toPromise();
|
|
132
|
+
expect(result?.hasFailed).toBe(true);
|
|
133
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
134
|
+
});
|
|
135
|
+
it("collection success", async () => {
|
|
136
|
+
const payload = {
|
|
137
|
+
page: 1,
|
|
138
|
+
per_page: 10,
|
|
139
|
+
search: "test order",
|
|
140
|
+
status: "pending",
|
|
141
|
+
payment_status: "paid",
|
|
142
|
+
};
|
|
143
|
+
const response = { data: { orders: [], total: 0 } };
|
|
144
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
145
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
146
|
+
});
|
|
147
|
+
const result = await service.collection(payload).toPromise();
|
|
148
|
+
expect(result?.hasSuccess).toBe(true);
|
|
149
|
+
expect(result?.response).toEqual(response);
|
|
150
|
+
});
|
|
151
|
+
it("collection error", async () => {
|
|
152
|
+
const payload = {
|
|
153
|
+
page: 1,
|
|
154
|
+
per_page: 10,
|
|
155
|
+
};
|
|
156
|
+
jest.spyOn(service, "provider").mockReturnValue({
|
|
157
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
158
|
+
});
|
|
159
|
+
const result = await service.collection(payload).toPromise();
|
|
132
160
|
expect(result?.hasFailed).toBe(true);
|
|
133
161
|
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
134
162
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseProvider } from
|
|
2
|
-
import { BaseServiceWrapper } from
|
|
3
|
-
import { NetworkingConfig } from
|
|
1
|
+
import { BaseProvider } from "../core/base.provider";
|
|
2
|
+
import { BaseServiceWrapper } from "../core/base.service.wrapper";
|
|
3
|
+
import { NetworkingConfig } from "../types/types";
|
|
4
4
|
export interface Product {
|
|
5
5
|
id: number;
|
|
6
6
|
name: string;
|
|
@@ -17,5 +17,5 @@ export declare class ProductService extends BaseServiceWrapper<ProductProvider>
|
|
|
17
17
|
constructor(config: NetworkingConfig, productId?: number, method?: string);
|
|
18
18
|
fetchProductById(id: number): import("rxjs").Observable<import("../types/types").NetworkingUIEventWrapped<Product>>;
|
|
19
19
|
fetchAllProducts(): import("rxjs").Observable<import("../types/types").NetworkingUIEventWrapped<Product[]>>;
|
|
20
|
-
createProduct(product: Omit<Product,
|
|
20
|
+
createProduct(product: Omit<Product, "id">): import("rxjs").Observable<import("../types/types").NetworkingUIEventWrapped<Product>>;
|
|
21
21
|
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { BaseProvider } from
|
|
2
|
-
import { BaseServiceWrapper } from
|
|
1
|
+
import { BaseProvider } from "../core/base.provider";
|
|
2
|
+
import { BaseServiceWrapper } from "../core/base.service.wrapper";
|
|
3
3
|
// ProductProvider implements ProviderType for product endpoints
|
|
4
4
|
export class ProductProvider extends BaseProvider {
|
|
5
5
|
constructor(config, { productId, method } = {}) {
|
|
6
6
|
super({
|
|
7
7
|
config,
|
|
8
|
-
path: productId ? `/products/${productId}` :
|
|
9
|
-
method: method ||
|
|
10
|
-
headers: {
|
|
11
|
-
getPath: () => (productId ? `/products/${productId}` :
|
|
8
|
+
path: productId ? `/products/${productId}` : "/products",
|
|
9
|
+
method: method || "GET",
|
|
10
|
+
headers: { "Content-Type": "application/json" },
|
|
11
|
+
getPath: () => (productId ? `/products/${productId}` : "/products"),
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -30,7 +30,7 @@ export class ProductService extends BaseServiceWrapper {
|
|
|
30
30
|
}
|
|
31
31
|
// Create a new product (POST)
|
|
32
32
|
createProduct(product) {
|
|
33
|
-
this.provider = new ProductProvider(this.config, { method:
|
|
33
|
+
this.provider = new ProductProvider(this.config, { method: "POST" });
|
|
34
34
|
return this.request(product);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
@@ -39,4 +39,4 @@ export class ProductService extends BaseServiceWrapper {
|
|
|
39
39
|
// const productService = new ProductService();
|
|
40
40
|
// productService.fetchProductById(1).subscribe(result => console.log(result));
|
|
41
41
|
// productService.fetchAllProducts().subscribe(result => console.log(result));
|
|
42
|
-
// productService.createProduct({ name: 'New Product', price: 99.99 }).subscribe(result => console.log(result));
|
|
42
|
+
// productService.createProduct({ name: 'New Product', price: 99.99 }).subscribe(result => console.log(result));
|