@congminh1254/shopee-sdk 1.6.1 → 1.7.0

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 (154) hide show
  1. package/README.md +9 -3
  2. package/lib/__tests__/errors.test.d.ts +1 -0
  3. package/lib/__tests__/errors.test.js +49 -0
  4. package/lib/__tests__/errors.test.js.map +1 -0
  5. package/lib/__tests__/fetch.test.d.ts +1 -0
  6. package/lib/__tests__/fetch.test.js +494 -0
  7. package/lib/__tests__/fetch.test.js.map +1 -0
  8. package/lib/__tests__/integration.test.d.ts +1 -0
  9. package/lib/__tests__/integration.test.js +201 -0
  10. package/lib/__tests__/integration.test.js.map +1 -0
  11. package/lib/__tests__/managers/account-health.manager.test.d.ts +1 -0
  12. package/lib/__tests__/managers/account-health.manager.test.js +446 -0
  13. package/lib/__tests__/managers/account-health.manager.test.js.map +1 -0
  14. package/lib/__tests__/managers/add-on-deal.manager.test.d.ts +1 -0
  15. package/lib/__tests__/managers/add-on-deal.manager.test.js +636 -0
  16. package/lib/__tests__/managers/add-on-deal.manager.test.js.map +1 -0
  17. package/lib/__tests__/managers/ads.manager.test.d.ts +1 -0
  18. package/lib/__tests__/managers/ads.manager.test.js +1016 -0
  19. package/lib/__tests__/managers/ads.manager.test.js.map +1 -0
  20. package/lib/__tests__/managers/ams.manager.test.d.ts +1 -0
  21. package/lib/__tests__/managers/ams.manager.test.js +1170 -0
  22. package/lib/__tests__/managers/ams.manager.test.js.map +1 -0
  23. package/lib/__tests__/managers/auth.manager.test.d.ts +1 -0
  24. package/lib/__tests__/managers/auth.manager.test.js +193 -0
  25. package/lib/__tests__/managers/auth.manager.test.js.map +1 -0
  26. package/lib/__tests__/managers/bundle-deal.manager.test.d.ts +1 -0
  27. package/lib/__tests__/managers/bundle-deal.manager.test.js +465 -0
  28. package/lib/__tests__/managers/bundle-deal.manager.test.js.map +1 -0
  29. package/lib/__tests__/managers/discount.manager.test.d.ts +1 -0
  30. package/lib/__tests__/managers/discount.manager.test.js +615 -0
  31. package/lib/__tests__/managers/discount.manager.test.js.map +1 -0
  32. package/lib/__tests__/managers/fbs.manager.test.d.ts +1 -0
  33. package/lib/__tests__/managers/fbs.manager.test.js +349 -0
  34. package/lib/__tests__/managers/fbs.manager.test.js.map +1 -0
  35. package/lib/__tests__/managers/first-mile.manager.test.d.ts +1 -0
  36. package/lib/__tests__/managers/first-mile.manager.test.js +629 -0
  37. package/lib/__tests__/managers/first-mile.manager.test.js.map +1 -0
  38. package/lib/__tests__/managers/follow-prize.manager.test.d.ts +1 -0
  39. package/lib/__tests__/managers/follow-prize.manager.test.js +408 -0
  40. package/lib/__tests__/managers/follow-prize.manager.test.js.map +1 -0
  41. package/lib/__tests__/managers/global-product.manager.test.d.ts +1 -0
  42. package/lib/__tests__/managers/global-product.manager.test.js +1253 -0
  43. package/lib/__tests__/managers/global-product.manager.test.js.map +1 -0
  44. package/lib/__tests__/managers/livestream.manager.test.d.ts +1 -0
  45. package/lib/__tests__/managers/livestream.manager.test.js +877 -0
  46. package/lib/__tests__/managers/livestream.manager.test.js.map +1 -0
  47. package/lib/__tests__/managers/logistics.manager.test.d.ts +1 -0
  48. package/lib/__tests__/managers/logistics.manager.test.js +1125 -0
  49. package/lib/__tests__/managers/logistics.manager.test.js.map +1 -0
  50. package/lib/__tests__/managers/media-space.manager.test.d.ts +1 -0
  51. package/lib/__tests__/managers/media-space.manager.test.js +556 -0
  52. package/lib/__tests__/managers/media-space.manager.test.js.map +1 -0
  53. package/lib/__tests__/managers/media.manager.test.d.ts +1 -0
  54. package/lib/__tests__/managers/media.manager.test.js +681 -0
  55. package/lib/__tests__/managers/media.manager.test.js.map +1 -0
  56. package/lib/__tests__/managers/merchant.manager.test.d.ts +1 -0
  57. package/lib/__tests__/managers/merchant.manager.test.js +328 -0
  58. package/lib/__tests__/managers/merchant.manager.test.js.map +1 -0
  59. package/lib/__tests__/managers/order.manager.test.d.ts +1 -0
  60. package/lib/__tests__/managers/order.manager.test.js +937 -0
  61. package/lib/__tests__/managers/order.manager.test.js.map +1 -0
  62. package/lib/__tests__/managers/payment.manager.test.d.ts +1 -0
  63. package/lib/__tests__/managers/payment.manager.test.js +1167 -0
  64. package/lib/__tests__/managers/payment.manager.test.js.map +1 -0
  65. package/lib/__tests__/managers/product.manager.test.d.ts +1 -0
  66. package/lib/__tests__/managers/product.manager.test.js +2247 -0
  67. package/lib/__tests__/managers/product.manager.test.js.map +1 -0
  68. package/lib/__tests__/managers/public.manager.test.d.ts +1 -0
  69. package/lib/__tests__/managers/public.manager.test.js +209 -0
  70. package/lib/__tests__/managers/public.manager.test.js.map +1 -0
  71. package/lib/__tests__/managers/push.manager.test.d.ts +1 -0
  72. package/lib/__tests__/managers/push.manager.test.js +244 -0
  73. package/lib/__tests__/managers/push.manager.test.js.map +1 -0
  74. package/lib/__tests__/managers/returns.manager.test.d.ts +1 -0
  75. package/lib/__tests__/managers/returns.manager.test.js +783 -0
  76. package/lib/__tests__/managers/returns.manager.test.js.map +1 -0
  77. package/lib/__tests__/managers/sbs.manager.test.d.ts +1 -0
  78. package/lib/__tests__/managers/sbs.manager.test.js +492 -0
  79. package/lib/__tests__/managers/sbs.manager.test.js.map +1 -0
  80. package/lib/__tests__/managers/shop-category.manager.test.d.ts +1 -0
  81. package/lib/__tests__/managers/shop-category.manager.test.js +425 -0
  82. package/lib/__tests__/managers/shop-category.manager.test.js.map +1 -0
  83. package/lib/__tests__/managers/shop-flash-sale.manager.test.d.ts +1 -0
  84. package/lib/__tests__/managers/shop-flash-sale.manager.test.js +492 -0
  85. package/lib/__tests__/managers/shop-flash-sale.manager.test.js.map +1 -0
  86. package/lib/__tests__/managers/shop.manager.test.d.ts +1 -0
  87. package/lib/__tests__/managers/shop.manager.test.js +637 -0
  88. package/lib/__tests__/managers/shop.manager.test.js.map +1 -0
  89. package/lib/__tests__/managers/top-picks.manager.test.d.ts +1 -0
  90. package/lib/__tests__/managers/top-picks.manager.test.js +324 -0
  91. package/lib/__tests__/managers/top-picks.manager.test.js.map +1 -0
  92. package/lib/__tests__/managers/video.manager.test.d.ts +1 -0
  93. package/lib/__tests__/managers/video.manager.test.js +1039 -0
  94. package/lib/__tests__/managers/video.manager.test.js.map +1 -0
  95. package/lib/__tests__/managers/voucher.manager.test.d.ts +1 -0
  96. package/lib/__tests__/managers/voucher.manager.test.js +442 -0
  97. package/lib/__tests__/managers/voucher.manager.test.js.map +1 -0
  98. package/lib/__tests__/sdk.test.d.ts +1 -0
  99. package/lib/__tests__/sdk.test.js +227 -0
  100. package/lib/__tests__/sdk.test.js.map +1 -0
  101. package/lib/__tests__/storage/custom-token-storage.test.d.ts +1 -0
  102. package/lib/__tests__/storage/custom-token-storage.test.js +337 -0
  103. package/lib/__tests__/storage/custom-token-storage.test.js.map +1 -0
  104. package/lib/__tests__/utils/signature.test.d.ts +1 -0
  105. package/lib/__tests__/utils/signature.test.js +38 -0
  106. package/lib/__tests__/utils/signature.test.js.map +1 -0
  107. package/lib/__tests__/utils/spec-audit.test.d.ts +1 -0
  108. package/lib/__tests__/utils/spec-audit.test.js +176 -0
  109. package/lib/__tests__/utils/spec-audit.test.js.map +1 -0
  110. package/lib/errors.js +2 -0
  111. package/lib/errors.js.map +1 -1
  112. package/lib/fetch.js +65 -3
  113. package/lib/fetch.js.map +1 -1
  114. package/lib/managers/ads.manager.d.ts +1 -41
  115. package/lib/managers/ads.manager.js +0 -54
  116. package/lib/managers/ads.manager.js.map +1 -1
  117. package/lib/managers/auth.manager.d.ts +2 -1
  118. package/lib/managers/auth.manager.js +2 -5
  119. package/lib/managers/auth.manager.js.map +1 -1
  120. package/lib/managers/base.manager.js +1 -0
  121. package/lib/managers/base.manager.js.map +1 -1
  122. package/lib/managers/media.manager.d.ts +43 -8
  123. package/lib/managers/media.manager.js +75 -7
  124. package/lib/managers/media.manager.js.map +1 -1
  125. package/lib/managers/order.manager.js +1 -0
  126. package/lib/managers/order.manager.js.map +1 -1
  127. package/lib/managers/payment.manager.d.ts +13 -1
  128. package/lib/managers/payment.manager.js +26 -0
  129. package/lib/managers/payment.manager.js.map +1 -1
  130. package/lib/managers/product.manager.js +1 -1
  131. package/lib/managers/product.manager.js.map +1 -1
  132. package/lib/schemas/ads.d.ts +2 -56
  133. package/lib/schemas/ams.d.ts +92 -0
  134. package/lib/schemas/base.d.ts +2 -0
  135. package/lib/schemas/discount.d.ts +4 -0
  136. package/lib/schemas/fetch.d.ts +1 -1
  137. package/lib/schemas/livestream.d.ts +14 -0
  138. package/lib/schemas/media.d.ts +113 -6
  139. package/lib/schemas/merchant.d.ts +2 -0
  140. package/lib/schemas/order.d.ts +22 -0
  141. package/lib/schemas/payment.d.ts +96 -0
  142. package/lib/schemas/product.d.ts +253 -15
  143. package/lib/schemas/public.d.ts +3 -0
  144. package/lib/schemas/returns.d.ts +38 -1
  145. package/lib/schemas/shop.d.ts +16 -0
  146. package/lib/schemas/video.d.ts +83 -37
  147. package/lib/schemas/voucher.d.ts +2 -0
  148. package/lib/sdk.js +31 -0
  149. package/lib/sdk.js.map +1 -1
  150. package/lib/storage/custom-token-storage.js +2 -0
  151. package/lib/storage/custom-token-storage.js.map +1 -1
  152. package/lib/version.d.ts +1 -1
  153. package/lib/version.js +1 -1
  154. package/package.json +3 -3
@@ -0,0 +1,637 @@
1
+ import { jest } from "@jest/globals";
2
+ import { ShopManager } from "../../managers/shop.manager.js";
3
+ import { ShopeeRegion } from "../../schemas/region.js";
4
+ import { ShopeeFetch } from "../../fetch.js";
5
+ // Mock ShopeeFetch.fetch static method
6
+ const mockFetch = jest.fn();
7
+ ShopeeFetch.fetch = mockFetch;
8
+ describe("ShopManager", () => {
9
+ let shopManager;
10
+ let mockConfig;
11
+ const mockShopeeFetch = mockFetch;
12
+ beforeEach(() => {
13
+ jest.clearAllMocks();
14
+ mockConfig = {
15
+ partner_id: 12345,
16
+ partner_key: "test_partner_key",
17
+ shop_id: 67890,
18
+ region: ShopeeRegion.GLOBAL,
19
+ base_url: "https://partner.test-stable.shopeemobile.com/api/v2",
20
+ };
21
+ shopManager = new ShopManager(mockConfig);
22
+ });
23
+ describe("getProfile", () => {
24
+ it("should get shop profile successfully", async () => {
25
+ const mockResponse = {
26
+ request_id: "142b43ff8d9b7799a4fbcca440104167",
27
+ error: "",
28
+ message: "",
29
+ response: {
30
+ shop_logo: "https://cf.shopee.sg/file/4d4f2e34c6d27cd3838a49a575f251bf",
31
+ description: "Welcome to our shop. All cheap prices while good quality",
32
+ shop_name: "OpenAPI Shop",
33
+ },
34
+ };
35
+ mockShopeeFetch.mockResolvedValue(mockResponse);
36
+ const result = await shopManager.getProfile();
37
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_profile", {
38
+ method: "GET",
39
+ auth: true,
40
+ params: {},
41
+ });
42
+ expect(result.error).toBe("");
43
+ expect(result.response.shop_name).toBe("OpenAPI Shop");
44
+ expect(result.response.shop_logo).toBe("https://cf.shopee.sg/file/4d4f2e34c6d27cd3838a49a575f251bf");
45
+ expect(result.response.description).toBe("Welcome to our shop. All cheap prices while good quality");
46
+ });
47
+ it("should get shop profile with invoice_issuer for BR seller", async () => {
48
+ const mockResponse = {
49
+ request_id: "142b43ff8d9b7799a4fbcca440104167",
50
+ error: "",
51
+ message: "",
52
+ response: {
53
+ shop_logo: "https://cf.shopee.sg/file/4d4f2e34c6d27cd3838a49a575f251bf",
54
+ description: "Welcome to our shop",
55
+ shop_name: "BR Shop",
56
+ invoice_issuer: "Other",
57
+ },
58
+ };
59
+ mockShopeeFetch.mockResolvedValue(mockResponse);
60
+ const result = await shopManager.getProfile();
61
+ expect(result.response.invoice_issuer).toBe("Other");
62
+ });
63
+ it("should handle error when getting profile", async () => {
64
+ const mockResponse = {
65
+ request_id: "9f0f9c5a9004a54e92a132ef6e96cd82",
66
+ error: "error_auth",
67
+ message: "Invalid partner_id or shopid.",
68
+ response: {
69
+ shop_logo: "",
70
+ description: "",
71
+ shop_name: "",
72
+ },
73
+ };
74
+ mockShopeeFetch.mockResolvedValue(mockResponse);
75
+ const result = await shopManager.getProfile();
76
+ expect(result.error).toBe("error_auth");
77
+ expect(result.message).toBe("Invalid partner_id or shopid.");
78
+ });
79
+ });
80
+ describe("getShopInfo", () => {
81
+ it("should get shop info successfully", async () => {
82
+ const mockResponse = {
83
+ request_id: "e3e3e7f3314a5c09fbf56b4649990b01",
84
+ error: "",
85
+ message: "",
86
+ shop_name: "mysipuat",
87
+ region: "MY",
88
+ status: "NORMAL",
89
+ shop_fulfillment_flag: "Others",
90
+ is_cb: false,
91
+ is_upgraded_cbsc: false,
92
+ merchant_id: undefined,
93
+ is_sip: true,
94
+ sip_affi_shops: [],
95
+ is_main_shop: true,
96
+ is_direct_shop: false,
97
+ linked_direct_shop_list: [
98
+ {
99
+ direct_shop_id: 223009454,
100
+ direct_shop_region: "SG",
101
+ },
102
+ ],
103
+ linked_main_shop_id: 0,
104
+ auth_time: 1741944925,
105
+ expire_time: 1773503999,
106
+ };
107
+ mockShopeeFetch.mockResolvedValue(mockResponse);
108
+ const result = await shopManager.getShopInfo();
109
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_shop_info", {
110
+ method: "GET",
111
+ auth: true,
112
+ params: {},
113
+ });
114
+ expect(result.error).toBe("");
115
+ expect(result.shop_name).toBe("mysipuat");
116
+ expect(result.region).toBe("MY");
117
+ expect(result.status).toBe("NORMAL");
118
+ expect(result.is_cb).toBe(false);
119
+ expect(result.is_sip).toBe(true);
120
+ expect(result.is_main_shop).toBe(true);
121
+ expect(result.linked_direct_shop_list).toHaveLength(1);
122
+ expect(result.linked_direct_shop_list?.[0].direct_shop_id).toBe(223009454);
123
+ });
124
+ it("should get shop info with merchant_id", async () => {
125
+ const mockResponse = {
126
+ request_id: "e3e3e7f3314a5c09fbf56b4649990b01",
127
+ error: "",
128
+ message: "",
129
+ shop_name: "Test Shop",
130
+ region: "SG",
131
+ status: "NORMAL",
132
+ is_cb: true,
133
+ is_sip: false,
134
+ auth_time: 1610533441,
135
+ expire_time: 1642069441,
136
+ merchant_id: 1000000400,
137
+ };
138
+ mockShopeeFetch.mockResolvedValue(mockResponse);
139
+ const result = await shopManager.getShopInfo();
140
+ expect(result.merchant_id).toBe(1000000400);
141
+ });
142
+ it("should handle error when getting shop info", async () => {
143
+ const mockResponse = {
144
+ request_id: "11d5faea741d928705bfa903a21e166c",
145
+ error: "error_auth",
146
+ message: "Invalid partner_id or shopid.",
147
+ shop_name: "",
148
+ region: "",
149
+ status: "",
150
+ is_cb: false,
151
+ is_sip: false,
152
+ auth_time: 0,
153
+ expire_time: 0,
154
+ };
155
+ mockShopeeFetch.mockResolvedValue(mockResponse);
156
+ const result = await shopManager.getShopInfo();
157
+ expect(result.error).toBe("error_auth");
158
+ expect(result.message).toBe("Invalid partner_id or shopid.");
159
+ });
160
+ });
161
+ describe("updateProfile", () => {
162
+ it("should update shop profile successfully", async () => {
163
+ const mockResponse = {
164
+ request_id: "241cce8492e455f0babeadc939e4b3cb",
165
+ error: "",
166
+ message: "",
167
+ response: {
168
+ shop_logo: "https://cf.shopee.sg/file/8424390be4677b0b3c37ce6499ce261a",
169
+ description: "Updated description",
170
+ shop_name: "Updated Shop Name",
171
+ },
172
+ };
173
+ mockShopeeFetch.mockResolvedValue(mockResponse);
174
+ const result = await shopManager.updateProfile({
175
+ shop_name: "Updated Shop Name",
176
+ description: "Updated description",
177
+ shop_logo: "https://cf.shopee.sg/file/8424390be4677b0b3c37ce6499ce261a",
178
+ });
179
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/update_profile", {
180
+ method: "POST",
181
+ auth: true,
182
+ body: {
183
+ shop_name: "Updated Shop Name",
184
+ description: "Updated description",
185
+ shop_logo: "https://cf.shopee.sg/file/8424390be4677b0b3c37ce6499ce261a",
186
+ },
187
+ });
188
+ expect(result.error).toBe("");
189
+ expect(result.response.shop_name).toBe("Updated Shop Name");
190
+ expect(result.response.description).toBe("Updated description");
191
+ });
192
+ it("should update only shop name", async () => {
193
+ const mockResponse = {
194
+ request_id: "241cce8492e455f0babeadc939e4b3cb",
195
+ error: "",
196
+ message: "",
197
+ response: {
198
+ shop_name: "New Shop Name",
199
+ },
200
+ };
201
+ mockShopeeFetch.mockResolvedValue(mockResponse);
202
+ const result = await shopManager.updateProfile({
203
+ shop_name: "New Shop Name",
204
+ });
205
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/update_profile", {
206
+ method: "POST",
207
+ auth: true,
208
+ body: {
209
+ shop_name: "New Shop Name",
210
+ },
211
+ });
212
+ expect(result.response.shop_name).toBe("New Shop Name");
213
+ });
214
+ it("should handle error when description exceeds limit", async () => {
215
+ const mockResponse = {
216
+ request_id: "f2d21d835777ec4c464c5075812cd94e",
217
+ error: "shop.data_data_check",
218
+ message: "Failed to change Shop Description for characters exceeds 500 characters. Please correct and try it again.",
219
+ response: {},
220
+ };
221
+ mockShopeeFetch.mockResolvedValue(mockResponse);
222
+ const result = await shopManager.updateProfile({
223
+ description: "a".repeat(501),
224
+ });
225
+ expect(result.error).toBe("shop.data_data_check");
226
+ expect(result.message).toContain("exceeds 500 characters");
227
+ });
228
+ });
229
+ describe("getWarehouseDetail", () => {
230
+ it("should get warehouse detail successfully", async () => {
231
+ const mockResponse = {
232
+ request_id: "16488d76e337c606s5504f26",
233
+ error: "",
234
+ message: "",
235
+ response: [
236
+ {
237
+ warehouse_id: 6,
238
+ warehouse_name: "warehouse1",
239
+ warehouse_type: 1,
240
+ location_id: "IDZ",
241
+ address_id: 118454205,
242
+ region: "ID",
243
+ state: "ACEH",
244
+ city: "KAB. ACEH UTARA",
245
+ district: "Mato Grosso",
246
+ town: "Av Maria H A dos Santos",
247
+ address: "Parque Sagrada Família",
248
+ zipcode: "24379",
249
+ state_code: "12345",
250
+ holiday_mode_state: 0,
251
+ },
252
+ ],
253
+ };
254
+ mockShopeeFetch.mockResolvedValue(mockResponse);
255
+ const result = await shopManager.getWarehouseDetail({ warehouse_type: 1 });
256
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_warehouse_detail", {
257
+ method: "GET",
258
+ auth: true,
259
+ params: { warehouse_type: 1 },
260
+ });
261
+ expect(result.error).toBe("");
262
+ expect(result.response).toHaveLength(1);
263
+ expect(result.response[0].warehouse_id).toBe(6);
264
+ expect(result.response[0].warehouse_name).toBe("warehouse1");
265
+ expect(result.response[0].warehouse_type).toBe(1);
266
+ expect(result.response[0].location_id).toBe("IDZ");
267
+ expect(result.response[0].address_id).toBe(118454205);
268
+ });
269
+ it("should get return warehouse detail", async () => {
270
+ const mockResponse = {
271
+ request_id: "16488d76e337c606s5504f26",
272
+ error: "",
273
+ message: "",
274
+ response: [
275
+ {
276
+ warehouse_id: 7,
277
+ warehouse_name: "return_warehouse",
278
+ warehouse_type: 2,
279
+ location_id: "IDZ",
280
+ address_id: 118454206,
281
+ region: "ID",
282
+ state: "JAKARTA",
283
+ city: "JAKARTA PUSAT",
284
+ district: "District",
285
+ town: "Town",
286
+ address: "Return Address",
287
+ zipcode: "12345",
288
+ state_code: "54321",
289
+ holiday_mode_state: 0,
290
+ },
291
+ ],
292
+ };
293
+ mockShopeeFetch.mockResolvedValue(mockResponse);
294
+ const result = await shopManager.getWarehouseDetail({ warehouse_type: 2 });
295
+ expect(result.response[0].warehouse_type).toBe(2);
296
+ expect(result.response[0].warehouse_name).toBe("return_warehouse");
297
+ });
298
+ it("should handle error when warehouse not found", async () => {
299
+ const mockResponse = {
300
+ request_id: "16488a76f483ed60655sc0426",
301
+ error: "warehouse.error_can_not_find_warehouse",
302
+ message: "This error will show if there is no legal warehouse address for given shop id",
303
+ response: [],
304
+ };
305
+ mockShopeeFetch.mockResolvedValue(mockResponse);
306
+ const result = await shopManager.getWarehouseDetail();
307
+ expect(result.error).toBe("warehouse.error_can_not_find_warehouse");
308
+ });
309
+ });
310
+ describe("getShopNotification", () => {
311
+ it("should get shop notification successfully", async () => {
312
+ const mockResponse = {
313
+ request_id: "test-request-id",
314
+ error: "",
315
+ message: "",
316
+ cursor: 12345,
317
+ data: {
318
+ create_time: 1634567890,
319
+ content: "Test notification content",
320
+ title: "Test Notification",
321
+ url: "https://seller.shopee.sg/notifications",
322
+ },
323
+ };
324
+ mockShopeeFetch.mockResolvedValue(mockResponse);
325
+ const result = await shopManager.getShopNotification({
326
+ page_size: 10,
327
+ });
328
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_shop_notification", {
329
+ method: "GET",
330
+ auth: true,
331
+ params: {
332
+ page_size: 10,
333
+ },
334
+ });
335
+ expect(result.error).toBe("");
336
+ expect(result.cursor).toBe(12345);
337
+ expect(result.data.title).toBe("Test Notification");
338
+ expect(result.data.content).toBe("Test notification content");
339
+ expect(result.data.create_time).toBe(1634567890);
340
+ expect(result.data.url).toBe("https://seller.shopee.sg/notifications");
341
+ });
342
+ it("should get shop notification with cursor", async () => {
343
+ const mockResponse = {
344
+ request_id: "test-request-id",
345
+ error: "",
346
+ message: "",
347
+ cursor: 12346,
348
+ data: {
349
+ create_time: 1634567891,
350
+ content: "Next notification",
351
+ title: "Next Title",
352
+ url: "https://seller.shopee.sg/notifications",
353
+ },
354
+ };
355
+ mockShopeeFetch.mockResolvedValue(mockResponse);
356
+ const result = await shopManager.getShopNotification({
357
+ cursor: 12345,
358
+ page_size: 10,
359
+ });
360
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_shop_notification", {
361
+ method: "GET",
362
+ auth: true,
363
+ params: {
364
+ cursor: 12345,
365
+ page_size: 10,
366
+ },
367
+ });
368
+ expect(result.cursor).toBe(12346);
369
+ });
370
+ it("should get shop notification without params", async () => {
371
+ const mockResponse = {
372
+ request_id: "test-request-id",
373
+ error: "",
374
+ message: "",
375
+ cursor: 0,
376
+ data: {
377
+ create_time: 0,
378
+ content: "-",
379
+ title: "-",
380
+ url: "-",
381
+ },
382
+ };
383
+ mockShopeeFetch.mockResolvedValue(mockResponse);
384
+ const result = await shopManager.getShopNotification();
385
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_shop_notification", {
386
+ method: "GET",
387
+ auth: true,
388
+ params: {},
389
+ });
390
+ expect(result.error).toBe("");
391
+ });
392
+ });
393
+ describe("getAuthorisedResellerBrand", () => {
394
+ it("should get authorised reseller brand successfully", async () => {
395
+ const mockResponse = {
396
+ request_id: "b8b833d5a7284dfd80f3fe8b108a1a15",
397
+ error: "",
398
+ message: "",
399
+ response: {
400
+ is_authorised_reseller: true,
401
+ total_count: 2,
402
+ more: false,
403
+ authorised_brand_list: [
404
+ {
405
+ brand_id: 1,
406
+ brand_name: "test brand 1",
407
+ },
408
+ {
409
+ brand_id: 2,
410
+ brand_name: "test brand 2",
411
+ },
412
+ ],
413
+ },
414
+ };
415
+ mockShopeeFetch.mockResolvedValue(mockResponse);
416
+ const result = await shopManager.getAuthorisedResellerBrand({
417
+ page_no: 1,
418
+ page_size: 10,
419
+ });
420
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_authorised_reseller_brand", {
421
+ method: "GET",
422
+ auth: true,
423
+ params: {
424
+ page_no: 1,
425
+ page_size: 10,
426
+ },
427
+ });
428
+ expect(result.error).toBe("");
429
+ expect(result.response.is_authorised_reseller).toBe(true);
430
+ expect(result.response.total_count).toBe(2);
431
+ expect(result.response.more).toBe(false);
432
+ expect(result.response.authorised_brand_list).toHaveLength(2);
433
+ expect(result.response.authorised_brand_list[0].brand_id).toBe(1);
434
+ expect(result.response.authorised_brand_list[0].brand_name).toBe("test brand 1");
435
+ });
436
+ it("should handle pagination with more pages", async () => {
437
+ const mockResponse = {
438
+ request_id: "b8b833d5a7284dfd80f3fe8b108a1a15",
439
+ error: "",
440
+ message: "",
441
+ response: {
442
+ is_authorised_reseller: true,
443
+ total_count: 50,
444
+ more: true,
445
+ authorised_brand_list: Array.from({ length: 30 }, (_, i) => ({
446
+ brand_id: i + 1,
447
+ brand_name: `brand ${i + 1}`,
448
+ })),
449
+ },
450
+ };
451
+ mockShopeeFetch.mockResolvedValue(mockResponse);
452
+ const result = await shopManager.getAuthorisedResellerBrand({
453
+ page_no: 1,
454
+ page_size: 30,
455
+ });
456
+ expect(result.response.more).toBe(true);
457
+ expect(result.response.total_count).toBe(50);
458
+ expect(result.response.authorised_brand_list).toHaveLength(30);
459
+ });
460
+ it("should handle non-authorised reseller", async () => {
461
+ const mockResponse = {
462
+ request_id: "b8b833d5a7284dfd80f3fe8b108a1a15",
463
+ error: "",
464
+ message: "",
465
+ response: {
466
+ is_authorised_reseller: false,
467
+ total_count: 0,
468
+ more: false,
469
+ authorised_brand_list: [],
470
+ },
471
+ };
472
+ mockShopeeFetch.mockResolvedValue(mockResponse);
473
+ const result = await shopManager.getAuthorisedResellerBrand({
474
+ page_no: 1,
475
+ page_size: 10,
476
+ });
477
+ expect(result.response.is_authorised_reseller).toBe(false);
478
+ expect(result.response.total_count).toBe(0);
479
+ expect(result.response.authorised_brand_list).toHaveLength(0);
480
+ });
481
+ });
482
+ describe("getBRShopOnboardingInfo", () => {
483
+ it("should get BR shop onboarding info successfully", async () => {
484
+ const mockResponse = {
485
+ request_id: "2e17701b64d646e293bfa53f1882d440",
486
+ error: "",
487
+ message: "",
488
+ response: {
489
+ onboarding_passed: true,
490
+ onboarding_status: 7,
491
+ cnpj_id: "55585487000103",
492
+ legal_entity_name: "55.585.487 Luiz Felipe Santos Spanholi",
493
+ mei_check: "1",
494
+ state_registration: "8003688866",
495
+ submission_time: 1761559361,
496
+ tax_id: "55585487000103",
497
+ tax_id_type: 2,
498
+ },
499
+ };
500
+ mockShopeeFetch.mockResolvedValue(mockResponse);
501
+ const result = await shopManager.getBRShopOnboardingInfo();
502
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_br_shop_onboarding_info", {
503
+ method: "GET",
504
+ auth: true,
505
+ params: {},
506
+ });
507
+ expect(result.error).toBe("");
508
+ expect(result.response?.onboarding_status).toBe(7);
509
+ expect(result.response?.onboarding_passed).toBe(true);
510
+ });
511
+ it("should handle rejected BR shop onboarding", async () => {
512
+ const mockResponse = {
513
+ request_id: "test-request-id",
514
+ error: "",
515
+ message: "",
516
+ response: {
517
+ onboarding_passed: false,
518
+ onboarding_status: 3,
519
+ },
520
+ };
521
+ mockShopeeFetch.mockResolvedValue(mockResponse);
522
+ const result = await shopManager.getBRShopOnboardingInfo();
523
+ expect(result.response?.onboarding_status).toBe(3);
524
+ expect(result.response?.onboarding_passed).toBe(false);
525
+ });
526
+ });
527
+ describe("getShopHolidayMode", () => {
528
+ it("should get shop holiday mode successfully", async () => {
529
+ const mockResponse = {
530
+ error: "error_shop_not_exists",
531
+ message: "Invalid partner_id or shopid.",
532
+ request_id: "6745b892295d750abf83a29430510400",
533
+ response: {
534
+ holiday_mode_on: true,
535
+ holiday_mode_mtime: 1763435974,
536
+ holiday_mode_type: 1,
537
+ holiday_mode_start_time: 1770883200,
538
+ holiday_mode_end_time: 1773305999,
539
+ holiday_mode_description: '"Spring Festival"',
540
+ debug_msg: '""',
541
+ },
542
+ };
543
+ mockShopeeFetch.mockResolvedValue(mockResponse);
544
+ const result = await shopManager.getShopHolidayMode();
545
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/get_shop_holiday_mode", {
546
+ method: "GET",
547
+ auth: true,
548
+ params: {},
549
+ });
550
+ expect(result.error).toBe("error_shop_not_exists");
551
+ expect(result.response?.holiday_mode_on).toBe(true);
552
+ expect(result.response?.holiday_mode_start_time).toBe(1770883200);
553
+ expect(result.response?.holiday_mode_end_time).toBe(1773305999);
554
+ expect(result.response?.holiday_mode_description).toBe('"Spring Festival"');
555
+ });
556
+ it("should get shop holiday mode when disabled", async () => {
557
+ const mockResponse = {
558
+ request_id: "test-request-id",
559
+ error: "",
560
+ message: "",
561
+ response: {
562
+ holiday_mode_on: false,
563
+ },
564
+ };
565
+ mockShopeeFetch.mockResolvedValue(mockResponse);
566
+ const result = await shopManager.getShopHolidayMode();
567
+ expect(result.response?.holiday_mode_on).toBe(false);
568
+ });
569
+ });
570
+ describe("setShopHolidayMode", () => {
571
+ it("should enable shop holiday mode successfully", async () => {
572
+ const mockResponse = {
573
+ request_id: "6745b892295d750abf83a29430510400",
574
+ error: "",
575
+ message: "",
576
+ response: {
577
+ debug_msg: '""',
578
+ },
579
+ };
580
+ mockShopeeFetch.mockResolvedValue(mockResponse);
581
+ const result = await shopManager.setShopHolidayMode({
582
+ holiday_mode_on: true,
583
+ holiday_mode_type: 1,
584
+ holiday_mode_start_time: 1770883200,
585
+ holiday_mode_end_time: 1773305999,
586
+ holiday_mode_description: '"Spring Festival"',
587
+ });
588
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/set_shop_holiday_mode", {
589
+ method: "POST",
590
+ auth: true,
591
+ body: {
592
+ holiday_mode_on: true,
593
+ holiday_mode_type: 1,
594
+ holiday_mode_start_time: 1770883200,
595
+ holiday_mode_end_time: 1773305999,
596
+ holiday_mode_description: '"Spring Festival"',
597
+ },
598
+ });
599
+ expect(result.error).toBe("");
600
+ });
601
+ it("should disable shop holiday mode successfully", async () => {
602
+ const mockResponse = {
603
+ request_id: "test-request-id",
604
+ error: "",
605
+ message: "",
606
+ };
607
+ mockShopeeFetch.mockResolvedValue(mockResponse);
608
+ const result = await shopManager.setShopHolidayMode({
609
+ holiday_mode_on: false,
610
+ });
611
+ expect(mockShopeeFetch).toHaveBeenCalledWith(mockConfig, "/shop/set_shop_holiday_mode", {
612
+ method: "POST",
613
+ auth: true,
614
+ body: {
615
+ holiday_mode_on: false,
616
+ },
617
+ });
618
+ expect(result.error).toBe("");
619
+ });
620
+ it("should handle error when setting holiday mode", async () => {
621
+ const mockResponse = {
622
+ request_id: "test-request-id",
623
+ error: "error_param",
624
+ message: "Invalid time range",
625
+ };
626
+ mockShopeeFetch.mockResolvedValue(mockResponse);
627
+ const result = await shopManager.setShopHolidayMode({
628
+ holiday_mode_on: true,
629
+ holiday_mode_start_time: 1773305999,
630
+ holiday_mode_end_time: 1770883200,
631
+ });
632
+ expect(result.error).toBe("error_param");
633
+ expect(result.message).toBe("Invalid time range");
634
+ });
635
+ });
636
+ });
637
+ //# sourceMappingURL=shop.manager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shop.manager.test.js","sourceRoot":"","sources":["../../../src/__tests__/managers/shop.manager.test.ts"],"names":[],"mappings":"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"}