@smess/networking 1.0.4 → 1.0.6
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/dist/index.d.ts +9 -9
- package/dist/index.js +11 -31
- package/dist/scripts/real-test.js +60 -65
- package/dist/src/core/axios.d.ts +5 -12
- package/dist/src/core/axios.js +21 -24
- package/dist/src/core/axios.observable.d.ts +2 -2
- package/dist/src/core/axios.observable.js +14 -17
- package/dist/src/core/base.provider.advanced.test.js +3 -5
- package/dist/src/core/base.provider.d.ts +1 -1
- package/dist/src/core/base.provider.js +6 -6
- package/dist/src/core/base.provider.test.js +3 -5
- package/dist/src/core/base.service.wrapper.advanced.test.js +9 -11
- package/dist/src/core/base.service.wrapper.d.ts +1 -1
- package/dist/src/core/base.service.wrapper.js +3 -7
- package/dist/src/core/base.service.wrapper.test.js +6 -8
- package/dist/src/core/rx.http.service.d.ts +5 -12
- package/dist/src/core/rx.http.service.js +21 -24
- package/dist/src/services/auth.service.d.ts +2 -2
- package/dist/src/services/auth.service.js +10 -15
- package/dist/src/services/auth.service.test.js +37 -39
- package/dist/src/services/customer.service.d.ts +2 -2
- package/dist/src/services/customer.service.js +9 -14
- package/dist/src/services/customer.service.test.js +23 -25
- package/dist/src/services/logger.service.js +4 -8
- package/dist/src/services/logger.service.test.js +16 -18
- package/dist/src/services/order.service.d.ts +2 -2
- package/dist/src/services/order.service.js +9 -14
- package/dist/src/services/order.service.test.js +41 -43
- package/dist/src/services/product.service.d.ts +6 -6
- package/dist/src/services/product.service.js +4 -9
- package/dist/src/services/product.service.test.js +20 -21
- package/dist/src/services/smess.service.d.ts +2 -2
- package/dist/src/services/smess.service.js +26 -34
- package/dist/src/services/smess.service.test.js +21 -24
- package/dist/src/services/store.service.d.ts +2 -2
- package/dist/src/services/store.service.js +9 -14
- package/dist/src/services/store.service.test.js +35 -37
- package/dist/src/services/user.service.d.ts +5 -5
- package/dist/src/services/user.service.js +4 -9
- package/dist/src/services/user.service.test.js +17 -18
- package/dist/src/types/types.js +6 -13
- package/dist/src/types/types.test.js +5 -7
- package/dist/src/utils/networking-import.js +3 -43
- package/dist/src/utils/rxjs-import.js +5 -34
- package/package.json +1 -1
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
1
|
/* eslint-disable @typescript-eslint/no-explicit-any -- Required for test mocks */
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { SmessService } from './smess.service.js';
|
|
3
|
+
import { NetworkingUIEventWrapped } from '../types/types.js';
|
|
4
|
+
import { of, throwError } from 'rxjs';
|
|
7
5
|
describe('SmessService', () => {
|
|
8
6
|
const config = {
|
|
9
7
|
baseUrl: 'https://api.example.com',
|
|
@@ -19,16 +17,16 @@ describe('SmessService', () => {
|
|
|
19
17
|
getPath: () => '/resource',
|
|
20
18
|
};
|
|
21
19
|
it('should return succeeded for GET', done => {
|
|
22
|
-
const service = new
|
|
20
|
+
const service = new SmessService(provider);
|
|
23
21
|
service['httpService'] = {
|
|
24
|
-
get: jest.fn(() =>
|
|
22
|
+
get: jest.fn(() => of({ data: { foo: 'bar' } })),
|
|
25
23
|
post: jest.fn(),
|
|
26
24
|
patch: jest.fn(),
|
|
27
25
|
put: jest.fn(),
|
|
28
26
|
request: jest.fn(),
|
|
29
27
|
interceptors: { response: { use: jest.fn() } },
|
|
30
28
|
};
|
|
31
|
-
service.request().subscribe(result => {
|
|
29
|
+
service.request().subscribe((result) => {
|
|
32
30
|
if (result.hasSuccess) {
|
|
33
31
|
expect(result.response).toEqual({ foo: 'bar' });
|
|
34
32
|
done();
|
|
@@ -36,17 +34,17 @@ describe('SmessService', () => {
|
|
|
36
34
|
});
|
|
37
35
|
});
|
|
38
36
|
it('should return succeeded for POST', done => {
|
|
39
|
-
const postProvider =
|
|
40
|
-
const service = new
|
|
37
|
+
const postProvider = { ...provider, method: 'POST' };
|
|
38
|
+
const service = new SmessService(postProvider);
|
|
41
39
|
service['httpService'] = {
|
|
42
40
|
get: jest.fn(),
|
|
43
|
-
post: jest.fn(() =>
|
|
41
|
+
post: jest.fn(() => of({ data: { foo: 'baz' } })),
|
|
44
42
|
patch: jest.fn(),
|
|
45
43
|
put: jest.fn(),
|
|
46
44
|
request: jest.fn(),
|
|
47
45
|
interceptors: { response: { use: jest.fn() } },
|
|
48
46
|
};
|
|
49
|
-
service.request({ some: 'data' }).subscribe(result => {
|
|
47
|
+
service.request({ some: 'data' }).subscribe((result) => {
|
|
50
48
|
if (result.hasSuccess) {
|
|
51
49
|
expect(result.response).toEqual({ foo: 'baz' });
|
|
52
50
|
done();
|
|
@@ -54,45 +52,44 @@ describe('SmessService', () => {
|
|
|
54
52
|
});
|
|
55
53
|
});
|
|
56
54
|
it('should handle error', done => {
|
|
57
|
-
const service = new
|
|
55
|
+
const service = new SmessService(provider);
|
|
58
56
|
service['httpService'] = {
|
|
59
|
-
get: jest.fn(() =>
|
|
57
|
+
get: jest.fn(() => throwError(() => new Error('Test error'))),
|
|
60
58
|
post: jest.fn(),
|
|
61
59
|
patch: jest.fn(),
|
|
62
60
|
put: jest.fn(),
|
|
63
61
|
request: jest.fn(),
|
|
64
62
|
interceptors: { response: { use: jest.fn() } },
|
|
65
63
|
};
|
|
66
|
-
service.request().subscribe(result => {
|
|
67
|
-
var _a;
|
|
64
|
+
service.request().subscribe((result) => {
|
|
68
65
|
if (result.hasFailed) {
|
|
69
|
-
expect(result).toBeInstanceOf(
|
|
66
|
+
expect(result).toBeInstanceOf(NetworkingUIEventWrapped);
|
|
70
67
|
expect(result.hasFailed).toBe(true);
|
|
71
68
|
expect(result.alertModel).toBeTruthy();
|
|
72
|
-
expect(
|
|
69
|
+
expect(result.alertModel?.message).toBe('Test error');
|
|
73
70
|
done();
|
|
74
71
|
}
|
|
75
72
|
});
|
|
76
73
|
});
|
|
77
74
|
it('should return mock response if provided', done => {
|
|
78
|
-
const service = new
|
|
75
|
+
const service = new SmessService(provider);
|
|
79
76
|
service['httpService'] = {
|
|
80
|
-
get: jest.fn(() =>
|
|
77
|
+
get: jest.fn(() => throwError(() => new Error('Test error'))),
|
|
81
78
|
post: jest.fn(),
|
|
82
79
|
patch: jest.fn(),
|
|
83
80
|
put: jest.fn(),
|
|
84
81
|
request: jest.fn((payload, mockResponse) => {
|
|
85
82
|
if (payload === 'error') {
|
|
86
|
-
return
|
|
83
|
+
return throwError(() => new Error('Test error'));
|
|
87
84
|
}
|
|
88
85
|
if (mockResponse !== undefined) {
|
|
89
|
-
return
|
|
86
|
+
return of(NetworkingUIEventWrapped.succeeded(mockResponse));
|
|
90
87
|
}
|
|
91
|
-
return
|
|
88
|
+
return of({ data: { foo: 'mock' } });
|
|
92
89
|
}),
|
|
93
90
|
interceptors: { response: { use: jest.fn() } },
|
|
94
91
|
};
|
|
95
|
-
service.request(undefined, { foo: 'mock' }).subscribe(result => {
|
|
92
|
+
service.request(undefined, { foo: 'mock' }).subscribe((result) => {
|
|
96
93
|
if (result.hasSuccess) {
|
|
97
94
|
expect(result.response).toEqual({ foo: 'mock' });
|
|
98
95
|
done();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from '../types/types';
|
|
2
|
-
import { SmessService } from './smess.service';
|
|
1
|
+
import { ProviderType, NetworkingConfig, NetworkingUIEventWrapped, HttpResponse } from '../types/types.js';
|
|
2
|
+
import { SmessService } from './smess.service.js';
|
|
3
3
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
4
4
|
export type StoreTarget = 'store-get' | 'store-list' | 'store-product-category-list' | 'store-product-collection' | 'store-featured-product-list';
|
|
5
5
|
export interface ProductCollectionRequest {
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.StoreService = exports.StoreProvider = void 0;
|
|
4
|
-
const smess_service_1 = require("./smess.service");
|
|
5
|
-
class StoreProvider {
|
|
1
|
+
import { Accept, SMESSHeader, SmessService } from './smess.service.js';
|
|
2
|
+
export class StoreProvider {
|
|
6
3
|
constructor(config, target, $authToken) {
|
|
7
4
|
this.config = config;
|
|
8
5
|
this.target = target;
|
|
@@ -31,33 +28,32 @@ class StoreProvider {
|
|
|
31
28
|
return 'GET';
|
|
32
29
|
}
|
|
33
30
|
get headers() {
|
|
34
|
-
let headers =
|
|
31
|
+
let headers = SmessService.getHeaders(Accept.V1, this.$authToken.value);
|
|
35
32
|
if (this.config.clientId) {
|
|
36
|
-
headers[
|
|
33
|
+
headers[SMESSHeader.ClientId] = this.config.clientId;
|
|
37
34
|
}
|
|
38
35
|
if (this.config.apiKey) {
|
|
39
|
-
headers[
|
|
36
|
+
headers[SMESSHeader.ApiKey] = this.config.apiKey;
|
|
40
37
|
}
|
|
41
|
-
return
|
|
38
|
+
return SmessService.filterHeaders(headers);
|
|
42
39
|
}
|
|
43
40
|
getPath(...queryParams) {
|
|
44
41
|
let definedPath = this.path;
|
|
45
42
|
const params = definedPath.match(/\$\{(.+?)\}/g);
|
|
46
|
-
params
|
|
43
|
+
params?.forEach((value, index) => {
|
|
47
44
|
definedPath = definedPath.replace(value, String(queryParams[index]));
|
|
48
45
|
});
|
|
49
46
|
return definedPath;
|
|
50
47
|
}
|
|
51
48
|
}
|
|
52
|
-
|
|
53
|
-
class StoreService {
|
|
49
|
+
export class StoreService {
|
|
54
50
|
constructor(config, $authToken) {
|
|
55
51
|
this.config = config;
|
|
56
52
|
this.$authToken = $authToken;
|
|
57
53
|
}
|
|
58
54
|
provider(target) {
|
|
59
55
|
const targetWrapper = new StoreProvider(this.config, target, this.$authToken);
|
|
60
|
-
return new
|
|
56
|
+
return new SmessService(targetWrapper);
|
|
61
57
|
}
|
|
62
58
|
get(id) {
|
|
63
59
|
return this.provider('store-get').request(null, undefined, id);
|
|
@@ -75,4 +71,3 @@ class StoreService {
|
|
|
75
71
|
return this.provider('store-featured-product-list').request(null, undefined, id);
|
|
76
72
|
}
|
|
77
73
|
}
|
|
78
|
-
exports.StoreService = StoreService;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const types_1 = require("../types/types");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
1
|
+
import { StoreService } from './store.service.js';
|
|
2
|
+
import { NetworkingUIEventWrapped, AlertModel } from '../types/types.js';
|
|
3
|
+
import { of, BehaviorSubject } from 'rxjs';
|
|
6
4
|
describe('StoreService', () => {
|
|
7
5
|
const config = {
|
|
8
6
|
baseUrl: 'https://api.example.com',
|
|
@@ -13,94 +11,94 @@ describe('StoreService', () => {
|
|
|
13
11
|
let service;
|
|
14
12
|
let $authToken;
|
|
15
13
|
beforeEach(() => {
|
|
16
|
-
$authToken = new
|
|
17
|
-
service = new
|
|
14
|
+
$authToken = new BehaviorSubject(null);
|
|
15
|
+
service = new StoreService(config, $authToken);
|
|
18
16
|
});
|
|
19
17
|
it('get success', async () => {
|
|
20
18
|
const response = { data: { id: '1', name: 'Store' } };
|
|
21
19
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
22
|
-
request: (_payload, _mockResponse, id) =>
|
|
20
|
+
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
23
21
|
});
|
|
24
22
|
const result = await service.get('1').toPromise();
|
|
25
|
-
expect(result
|
|
26
|
-
expect(result
|
|
23
|
+
expect(result?.hasSuccess).toBe(true);
|
|
24
|
+
expect(result?.response).toEqual(response);
|
|
27
25
|
});
|
|
28
26
|
it('get error', async () => {
|
|
29
27
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
30
|
-
request: (_payload, _mockResponse, id) =>
|
|
28
|
+
request: (_payload, _mockResponse, id) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
31
29
|
});
|
|
32
30
|
const result = await service.get('1').toPromise();
|
|
33
|
-
expect(result
|
|
34
|
-
expect(result
|
|
31
|
+
expect(result?.hasFailed).toBe(true);
|
|
32
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
35
33
|
});
|
|
36
34
|
it('list success', async () => {
|
|
37
35
|
const response = { data: [{ id: '1', name: 'Store' }] };
|
|
38
36
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
39
|
-
request: () =>
|
|
37
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
40
38
|
});
|
|
41
39
|
const result = await service.list().toPromise();
|
|
42
|
-
expect(result
|
|
43
|
-
expect(result
|
|
40
|
+
expect(result?.hasSuccess).toBe(true);
|
|
41
|
+
expect(result?.response).toEqual(response);
|
|
44
42
|
});
|
|
45
43
|
it('list error', async () => {
|
|
46
44
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
47
|
-
request: () =>
|
|
45
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
48
46
|
});
|
|
49
47
|
const result = await service.list().toPromise();
|
|
50
|
-
expect(result
|
|
51
|
-
expect(result
|
|
48
|
+
expect(result?.hasFailed).toBe(true);
|
|
49
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
52
50
|
});
|
|
53
51
|
it('productCategoryList success', async () => {
|
|
54
52
|
const response = { data: [{ id: 'cat1', name: 'Category' }] };
|
|
55
53
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
56
|
-
request: () =>
|
|
54
|
+
request: () => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
57
55
|
});
|
|
58
56
|
const result = await service.productCategoryList().toPromise();
|
|
59
|
-
expect(result
|
|
60
|
-
expect(result
|
|
57
|
+
expect(result?.hasSuccess).toBe(true);
|
|
58
|
+
expect(result?.response).toEqual(response);
|
|
61
59
|
});
|
|
62
60
|
it('productCategoryList error', async () => {
|
|
63
61
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
64
|
-
request: () =>
|
|
62
|
+
request: () => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
65
63
|
});
|
|
66
64
|
const result = await service.productCategoryList().toPromise();
|
|
67
|
-
expect(result
|
|
68
|
-
expect(result
|
|
65
|
+
expect(result?.hasFailed).toBe(true);
|
|
66
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
69
67
|
});
|
|
70
68
|
it('productCollection success', async () => {
|
|
71
69
|
const response = { data: [{ id: 'prod1', name: 'Product' }] };
|
|
72
70
|
const payload = { page: 1, per_page: 10 };
|
|
73
71
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
74
|
-
request: (payload, _mockResponse, id) =>
|
|
72
|
+
request: (payload, _mockResponse, id) => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
75
73
|
});
|
|
76
74
|
const result = await service.productCollection('1', payload).toPromise();
|
|
77
|
-
expect(result
|
|
78
|
-
expect(result
|
|
75
|
+
expect(result?.hasSuccess).toBe(true);
|
|
76
|
+
expect(result?.response).toEqual(response);
|
|
79
77
|
});
|
|
80
78
|
it('productCollection error', async () => {
|
|
81
79
|
const payload = { page: 1, per_page: 10 };
|
|
82
80
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
83
|
-
request: (payload, _mockResponse, id) =>
|
|
81
|
+
request: (payload, _mockResponse, id) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
84
82
|
});
|
|
85
83
|
const result = await service.productCollection('1', payload).toPromise();
|
|
86
|
-
expect(result
|
|
87
|
-
expect(result
|
|
84
|
+
expect(result?.hasFailed).toBe(true);
|
|
85
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
88
86
|
});
|
|
89
87
|
it('featuredProductList success', async () => {
|
|
90
88
|
const response = { data: [{ id: 'feat1', name: 'Featured' }] };
|
|
91
89
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
92
|
-
request: (_payload, _mockResponse, storeId) =>
|
|
90
|
+
request: (_payload, _mockResponse, storeId) => of(NetworkingUIEventWrapped.succeeded(response)),
|
|
93
91
|
});
|
|
94
92
|
const result = await service.featuredProductList('1').toPromise();
|
|
95
|
-
expect(result
|
|
96
|
-
expect(result
|
|
93
|
+
expect(result?.hasSuccess).toBe(true);
|
|
94
|
+
expect(result?.response).toEqual(response);
|
|
97
95
|
});
|
|
98
96
|
it('featuredProductList error', async () => {
|
|
99
97
|
jest.spyOn(service, 'provider').mockReturnValue({
|
|
100
|
-
request: (_payload, _mockResponse, storeId) =>
|
|
98
|
+
request: (_payload, _mockResponse, storeId) => of(NetworkingUIEventWrapped.failed(AlertModel.default())),
|
|
101
99
|
});
|
|
102
100
|
const result = await service.featuredProductList('1').toPromise();
|
|
103
|
-
expect(result
|
|
104
|
-
expect(result
|
|
101
|
+
expect(result?.hasFailed).toBe(true);
|
|
102
|
+
expect(result?.alertModel).toBeInstanceOf(AlertModel);
|
|
105
103
|
});
|
|
106
104
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BaseProvider } from '../core/base.provider';
|
|
2
|
-
import { BaseServiceWrapper } from '../core/base.service.wrapper';
|
|
3
|
-
import { NetworkingConfig } from '../types/types';
|
|
1
|
+
import { BaseProvider } from '../core/base.provider.js';
|
|
2
|
+
import { BaseServiceWrapper } from '../core/base.service.wrapper.js';
|
|
3
|
+
import { NetworkingConfig } from '../types/types.js';
|
|
4
4
|
export interface User {
|
|
5
5
|
id: number;
|
|
6
6
|
name: string;
|
|
@@ -11,6 +11,6 @@ export declare class UserProvider extends BaseProvider {
|
|
|
11
11
|
}
|
|
12
12
|
export declare class UserService extends BaseServiceWrapper<UserProvider> {
|
|
13
13
|
constructor(config: NetworkingConfig, userId?: number);
|
|
14
|
-
fetchUserById(id: number): import("rxjs").Observable<import("../types/types").NetworkingUIEventWrapped<User>>;
|
|
15
|
-
fetchAllUsers(): import("rxjs").Observable<import("../types/types").NetworkingUIEventWrapped<User[]>>;
|
|
14
|
+
fetchUserById(id: number): import("rxjs").Observable<import("../types/types.js").NetworkingUIEventWrapped<User>>;
|
|
15
|
+
fetchAllUsers(): import("rxjs").Observable<import("../types/types.js").NetworkingUIEventWrapped<User[]>>;
|
|
16
16
|
}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.UserService = exports.UserProvider = void 0;
|
|
4
|
-
const base_provider_1 = require("../core/base.provider");
|
|
5
|
-
const base_service_wrapper_1 = require("../core/base.service.wrapper");
|
|
1
|
+
import { BaseProvider } from '../core/base.provider.js';
|
|
2
|
+
import { BaseServiceWrapper } from '../core/base.service.wrapper.js';
|
|
6
3
|
// UserProvider implements ProviderType for user endpoints
|
|
7
|
-
class UserProvider extends
|
|
4
|
+
export class UserProvider extends BaseProvider {
|
|
8
5
|
constructor(config, userId) {
|
|
9
6
|
super({
|
|
10
7
|
config,
|
|
@@ -15,9 +12,8 @@ class UserProvider extends base_provider_1.BaseProvider {
|
|
|
15
12
|
});
|
|
16
13
|
}
|
|
17
14
|
}
|
|
18
|
-
exports.UserProvider = UserProvider;
|
|
19
15
|
// UserService provides high-level methods for user API
|
|
20
|
-
class UserService extends
|
|
16
|
+
export class UserService extends BaseServiceWrapper {
|
|
21
17
|
constructor(config, userId) {
|
|
22
18
|
super(new UserProvider(config, userId));
|
|
23
19
|
}
|
|
@@ -32,7 +28,6 @@ class UserService extends base_service_wrapper_1.BaseServiceWrapper {
|
|
|
32
28
|
return this.request();
|
|
33
29
|
}
|
|
34
30
|
}
|
|
35
|
-
exports.UserService = UserService;
|
|
36
31
|
// Example usage:
|
|
37
32
|
// setNetworkingConfig({ baseUrl: 'https://jsonplaceholder.typicode.com', isProd: false });
|
|
38
33
|
// const userService = new UserService();
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
6
|
-
const base_service_wrapper_1 = require("../core/base.service.wrapper");
|
|
1
|
+
import { UserService } from './user.service.js';
|
|
2
|
+
import { NetworkingUIEventWrapped } from '../types/types.js';
|
|
3
|
+
import { of, throwError } from 'rxjs';
|
|
4
|
+
import { BaseServiceWrapper } from '../core/base.service.wrapper.js';
|
|
7
5
|
describe('UserService', () => {
|
|
8
6
|
const config = {
|
|
9
7
|
baseUrl: 'https://jsonplaceholder.typicode.com',
|
|
@@ -14,30 +12,31 @@ describe('UserService', () => {
|
|
|
14
12
|
const user = { id: 1, name: 'Test', email: 'test@example.com' };
|
|
15
13
|
let requestSpy;
|
|
16
14
|
beforeEach(() => {
|
|
17
|
-
requestSpy = jest.spyOn(
|
|
15
|
+
requestSpy = jest.spyOn(BaseServiceWrapper.prototype, 'request').mockImplementation(() => of(NetworkingUIEventWrapped.succeeded(user)));
|
|
18
16
|
});
|
|
19
17
|
afterEach(() => {
|
|
20
18
|
requestSpy.mockRestore();
|
|
21
19
|
});
|
|
22
|
-
it('fetchUserById should return user (success)', done => {
|
|
23
|
-
const service = new
|
|
24
|
-
service.fetchUserById(1).subscribe(result => {
|
|
20
|
+
it('fetchUserById should return user (success)', (done) => {
|
|
21
|
+
const service = new UserService(config);
|
|
22
|
+
service.fetchUserById(1).subscribe((result) => {
|
|
25
23
|
expect(result.response).toEqual(user);
|
|
26
24
|
done();
|
|
27
25
|
});
|
|
28
26
|
});
|
|
29
|
-
it('fetchAllUsers should return users (success)', done => {
|
|
30
|
-
const service = new
|
|
31
|
-
service.fetchAllUsers().subscribe(result => {
|
|
27
|
+
it('fetchAllUsers should return users (success)', (done) => {
|
|
28
|
+
const service = new UserService(config);
|
|
29
|
+
service.fetchAllUsers().subscribe((result) => {
|
|
32
30
|
expect(result.response).toEqual(user);
|
|
33
31
|
done();
|
|
34
32
|
});
|
|
35
33
|
});
|
|
36
|
-
it('request should handle error', done => {
|
|
37
|
-
requestSpy.mockImplementationOnce(() =>
|
|
38
|
-
const service = new
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
it('request should handle error', (done) => {
|
|
35
|
+
requestSpy.mockImplementationOnce(() => throwError(() => new Error('Test error')));
|
|
36
|
+
const service = new UserService(config);
|
|
37
|
+
// Simulate error by calling a method that uses request
|
|
38
|
+
service.fetchUserById(1).subscribe({
|
|
39
|
+
error: (err) => {
|
|
41
40
|
expect(err).toBeInstanceOf(Error);
|
|
42
41
|
expect(err.message).toBe('Test error');
|
|
43
42
|
done();
|
package/dist/src/types/types.js
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkingUIEventWrapped = exports.NetworkingUIEvent = exports.ValidationErrorMessage = exports.AlertModel = exports.AlertButtonModel = void 0;
|
|
4
|
-
class AlertButtonModel {
|
|
1
|
+
export class AlertButtonModel {
|
|
5
2
|
constructor(title, handler) {
|
|
6
3
|
this.title = title;
|
|
7
4
|
this.handler = handler;
|
|
@@ -13,8 +10,7 @@ class AlertButtonModel {
|
|
|
13
10
|
return new AlertButtonModel('No', handler);
|
|
14
11
|
}
|
|
15
12
|
}
|
|
16
|
-
|
|
17
|
-
class AlertModel {
|
|
13
|
+
export class AlertModel {
|
|
18
14
|
constructor(message, httpErrorCode, isDisplayable = false, title, data, buttons) {
|
|
19
15
|
this.message = message;
|
|
20
16
|
this.httpErrorCode = httpErrorCode;
|
|
@@ -35,20 +31,18 @@ class AlertModel {
|
|
|
35
31
|
]);
|
|
36
32
|
}
|
|
37
33
|
}
|
|
38
|
-
|
|
39
|
-
class ValidationErrorMessage {
|
|
34
|
+
export class ValidationErrorMessage {
|
|
40
35
|
constructor(message) {
|
|
41
36
|
this.message = message;
|
|
42
37
|
}
|
|
43
38
|
}
|
|
44
|
-
|
|
45
|
-
var NetworkingUIEvent;
|
|
39
|
+
export var NetworkingUIEvent;
|
|
46
40
|
(function (NetworkingUIEvent) {
|
|
47
41
|
NetworkingUIEvent["waiting"] = "waiting";
|
|
48
42
|
NetworkingUIEvent["succeeded"] = "succeeded";
|
|
49
43
|
NetworkingUIEvent["failed"] = "failed";
|
|
50
|
-
})(NetworkingUIEvent || (
|
|
51
|
-
class NetworkingUIEventWrapped {
|
|
44
|
+
})(NetworkingUIEvent || (NetworkingUIEvent = {}));
|
|
45
|
+
export class NetworkingUIEventWrapped {
|
|
52
46
|
constructor(event, succeeded, failed) {
|
|
53
47
|
this.event = event;
|
|
54
48
|
this.succeeded = succeeded;
|
|
@@ -86,4 +80,3 @@ class NetworkingUIEventWrapped {
|
|
|
86
80
|
});
|
|
87
81
|
}
|
|
88
82
|
}
|
|
89
|
-
exports.NetworkingUIEventWrapped = NetworkingUIEventWrapped;
|
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const types_1 = require("./types");
|
|
1
|
+
import { NetworkingUIEventWrapped, AlertModel } from './types.js';
|
|
4
2
|
describe('NetworkingUIEventWrapped', () => {
|
|
5
3
|
it('should wrap succeeded response', () => {
|
|
6
|
-
const wrap =
|
|
4
|
+
const wrap = NetworkingUIEventWrapped.succeeded({ foo: 'bar' });
|
|
7
5
|
expect(wrap.response).toEqual({ foo: 'bar' });
|
|
8
6
|
expect(wrap.hasSuccess).toBe(true);
|
|
9
7
|
expect(wrap.hasFailed).toBe(false);
|
|
10
8
|
expect(wrap.isWaiting).toBe(false);
|
|
11
9
|
});
|
|
12
10
|
it('should wrap failed response and set alertModel', () => {
|
|
13
|
-
const alert = new
|
|
14
|
-
const wrap =
|
|
11
|
+
const alert = new AlertModel('err', 500, true, 'Error', { detail: 'fail' });
|
|
12
|
+
const wrap = NetworkingUIEventWrapped.failed(alert);
|
|
15
13
|
expect(wrap.response).toBeNull();
|
|
16
14
|
expect(wrap.hasSuccess).toBe(false);
|
|
17
15
|
expect(wrap.hasFailed).toBe(true);
|
|
@@ -19,7 +17,7 @@ describe('NetworkingUIEventWrapped', () => {
|
|
|
19
17
|
expect(wrap.alertModel).toBe(alert);
|
|
20
18
|
});
|
|
21
19
|
it('should wrap waiting state', () => {
|
|
22
|
-
const wrap =
|
|
20
|
+
const wrap = NetworkingUIEventWrapped.waiting();
|
|
23
21
|
expect(wrap.isWaiting).toBe(true);
|
|
24
22
|
expect(wrap.hasSuccess).toBe(false);
|
|
25
23
|
expect(wrap.hasFailed).toBe(false);
|
|
@@ -1,43 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
-
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.HttpStatusCode = exports.axios = void 0;
|
|
40
|
-
__exportStar(require("axios"), exports);
|
|
41
|
-
const axios_1 = __importStar(require("axios"));
|
|
42
|
-
exports.axios = axios_1.default;
|
|
43
|
-
Object.defineProperty(exports, "HttpStatusCode", { enumerable: true, get: function () { return axios_1.HttpStatusCode; } });
|
|
1
|
+
export * from 'axios';
|
|
2
|
+
import axios, { HttpStatusCode } from 'axios';
|
|
3
|
+
export { axios, HttpStatusCode };
|
|
@@ -1,34 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Object.defineProperty(exports, "Observable", { enumerable: true, get: function () { return rxjs_1.Observable; } });
|
|
7
|
-
Object.defineProperty(exports, "Subject", { enumerable: true, get: function () { return rxjs_1.Subject; } });
|
|
8
|
-
Object.defineProperty(exports, "Subscription", { enumerable: true, get: function () { return rxjs_1.Subscription; } });
|
|
9
|
-
Object.defineProperty(exports, "Subscriber", { enumerable: true, get: function () { return rxjs_1.Subscriber; } });
|
|
10
|
-
Object.defineProperty(exports, "catchError", { enumerable: true, get: function () { return rxjs_1.catchError; } });
|
|
11
|
-
Object.defineProperty(exports, "combineLatest", { enumerable: true, get: function () { return rxjs_1.combineLatest; } });
|
|
12
|
-
Object.defineProperty(exports, "concatMap", { enumerable: true, get: function () { return rxjs_1.concatMap; } });
|
|
13
|
-
Object.defineProperty(exports, "distinctUntilChanged", { enumerable: true, get: function () { return rxjs_1.distinctUntilChanged; } });
|
|
14
|
-
Object.defineProperty(exports, "filter", { enumerable: true, get: function () { return rxjs_1.filter; } });
|
|
15
|
-
Object.defineProperty(exports, "firstValueFrom", { enumerable: true, get: function () { return rxjs_1.firstValueFrom; } });
|
|
16
|
-
Object.defineProperty(exports, "from", { enumerable: true, get: function () { return rxjs_1.from; } });
|
|
17
|
-
Object.defineProperty(exports, "fromEvent", { enumerable: true, get: function () { return rxjs_1.fromEvent; } });
|
|
18
|
-
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return rxjs_1.merge; } });
|
|
19
|
-
Object.defineProperty(exports, "NEVER", { enumerable: true, get: function () { return rxjs_1.NEVER; } });
|
|
20
|
-
Object.defineProperty(exports, "interval", { enumerable: true, get: function () { return rxjs_1.interval; } });
|
|
21
|
-
Object.defineProperty(exports, "map", { enumerable: true, get: function () { return rxjs_1.map; } });
|
|
22
|
-
Object.defineProperty(exports, "mergeMap", { enumerable: true, get: function () { return rxjs_1.mergeMap; } });
|
|
23
|
-
Object.defineProperty(exports, "of", { enumerable: true, get: function () { return rxjs_1.of; } });
|
|
24
|
-
Object.defineProperty(exports, "pipe", { enumerable: true, get: function () { return rxjs_1.pipe; } });
|
|
25
|
-
Object.defineProperty(exports, "shareReplay", { enumerable: true, get: function () { return rxjs_1.shareReplay; } });
|
|
26
|
-
Object.defineProperty(exports, "startWith", { enumerable: true, get: function () { return rxjs_1.startWith; } });
|
|
27
|
-
Object.defineProperty(exports, "tap", { enumerable: true, get: function () { return rxjs_1.tap; } });
|
|
28
|
-
Object.defineProperty(exports, "timeout", { enumerable: true, get: function () { return rxjs_1.timeout; } });
|
|
29
|
-
Object.defineProperty(exports, "retry", { enumerable: true, get: function () { return rxjs_1.retry; } });
|
|
30
|
-
Object.defineProperty(exports, "throwError", { enumerable: true, get: function () { return rxjs_1.throwError; } });
|
|
31
|
-
Object.defineProperty(exports, "combineLatestWith", { enumerable: true, get: function () { return rxjs_1.combineLatestWith; } });
|
|
32
|
-
Object.defineProperty(exports, "debounceTime", { enumerable: true, get: function () { return rxjs_1.debounceTime; } });
|
|
33
|
-
Object.defineProperty(exports, "delay", { enumerable: true, get: function () { return rxjs_1.delay; } });
|
|
34
|
-
Object.defineProperty(exports, "takeUntil", { enumerable: true, get: function () { return rxjs_1.takeUntil; } });
|
|
1
|
+
import { BehaviorSubject, Observable, Subject, Subscription, Subscriber, catchError, combineLatest, concatMap, distinctUntilChanged, filter, firstValueFrom, from, fromEvent, merge, NEVER, interval, map, mergeMap, of, pipe, shareReplay, startWith, tap, timeout, retry, throwError, combineLatestWith, debounceTime, delay, takeUntil } from 'rxjs';
|
|
2
|
+
export { Observable, Subject, BehaviorSubject, Subscription, Subscriber };
|
|
3
|
+
export { startWith, firstValueFrom, from, fromEvent, tap, pipe, distinctUntilChanged, of, mergeMap, interval, map, concatMap, combineLatest, merge, combineLatestWith, debounceTime, delay, timeout, retry, takeUntil, NEVER };
|
|
4
|
+
export { shareReplay, filter };
|
|
5
|
+
export { catchError, throwError };
|