@isoftdata/ebay-utility 1.2.0 → 1.3.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.
- package/lib/adapters/itrack/ItrackAdapter.d.ts +1 -8
- package/lib/adapters/itrack/ItrackAdapter.d.ts.map +1 -1
- package/lib/adapters/itrack/ItrackAdapter.js +1 -36
- package/lib/adapters/itrack/ItrackAdapter.js.map +1 -1
- package/lib/infrastructure/mysql/MysqlDatastore.d.ts +3 -3
- package/lib/infrastructure/mysql/MysqlDatastore.d.ts.map +1 -1
- package/lib/infrastructure/mysql/MysqlDatastore.js +21 -28
- package/lib/infrastructure/mysql/MysqlDatastore.js.map +1 -1
- package/lib/infrastructure/mysql/getPool.d.ts +2 -2
- package/lib/infrastructure/mysql/getPool.d.ts.map +1 -1
- package/lib/infrastructure/mysql/getPool.js +1 -1
- package/lib/infrastructure/mysql/getPool.js.map +1 -1
- package/lib/repositories/itrack/ItrackEbayPolicyRepo.js +3 -3
- package/lib/repositories/itrack/ItrackEbayPolicyRepo.js.map +1 -1
- package/lib/utils/utils.d.ts.map +1 -1
- package/lib/utils/utils.js.map +1 -1
- package/package.json +56 -59
- package/lib/adapters/test-error-preservation.d.ts +0 -9
- package/lib/adapters/test-error-preservation.d.ts.map +0 -1
- package/lib/adapters/test-error-preservation.js +0 -203
- package/lib/adapters/test-error-preservation.js.map +0 -1
- package/lib/entities/itrack/FulfillmentPolicy.d.ts +0 -10
- package/lib/entities/itrack/FulfillmentPolicy.d.ts.map +0 -1
- package/lib/entities/itrack/FulfillmentPolicy.js +0 -2
- package/lib/entities/itrack/FulfillmentPolicy.js.map +0 -1
- package/lib/entities/itrack/ItrackEbayInventoryItem.js +0 -25
- package/lib/entities/itrack/ItrackEbayInventoryItem.js.map +0 -1
- package/lib/entities/itrack/ItrackEbayListing.d.ts +0 -45
- package/lib/entities/itrack/ItrackEbayListing.d.ts.map +0 -1
- package/lib/entities/itrack/ItrackEbayListing.js +0 -25
- package/lib/entities/itrack/ItrackEbayListing.js.map +0 -1
- package/lib/entities/itrack/PaymentPolicy.d.ts +0 -10
- package/lib/entities/itrack/PaymentPolicy.d.ts.map +0 -1
- package/lib/entities/itrack/PaymentPolicy.js +0 -2
- package/lib/entities/itrack/PaymentPolicy.js.map +0 -1
- package/lib/entities/itrack/ReturnPolicy.d.ts +0 -10
- package/lib/entities/itrack/ReturnPolicy.d.ts.map +0 -1
- package/lib/entities/itrack/ReturnPolicy.js +0 -2
- package/lib/entities/itrack/ReturnPolicy.js.map +0 -1
- package/lib/repositories/itrack/EbayInventoryItemRowRepo.d.ts +0 -27
- package/lib/repositories/itrack/EbayInventoryItemRowRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/EbayInventoryItemRowRepo.js +0 -2
- package/lib/repositories/itrack/EbayInventoryItemRowRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackEbayFulfillmentPolicyRepo.d.ts +0 -11
- package/lib/repositories/itrack/ItrackEbayFulfillmentPolicyRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackEbayFulfillmentPolicyRepo.js +0 -35
- package/lib/repositories/itrack/ItrackEbayFulfillmentPolicyRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackEbayInventoryItemRepo.js +0 -75
- package/lib/repositories/itrack/ItrackEbayInventoryItemRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackEbayListingRepo.d.ts +0 -8
- package/lib/repositories/itrack/ItrackEbayListingRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackEbayListingRepo.js +0 -66
- package/lib/repositories/itrack/ItrackEbayListingRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackEbayPaymentPolicyRepo.d.ts +0 -11
- package/lib/repositories/itrack/ItrackEbayPaymentPolicyRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackEbayPaymentPolicyRepo.js +0 -35
- package/lib/repositories/itrack/ItrackEbayPaymentPolicyRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackEbayReturnPolicyRepo.d.ts +0 -11
- package/lib/repositories/itrack/ItrackEbayReturnPolicyRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackEbayReturnPolicyRepo.js +0 -34
- package/lib/repositories/itrack/ItrackEbayReturnPolicyRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackFulfillmentPolicyRepo.d.ts +0 -11
- package/lib/repositories/itrack/ItrackFulfillmentPolicyRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackFulfillmentPolicyRepo.js +0 -35
- package/lib/repositories/itrack/ItrackFulfillmentPolicyRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackPaymentPolicyRepo.d.ts +0 -11
- package/lib/repositories/itrack/ItrackPaymentPolicyRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackPaymentPolicyRepo.js +0 -35
- package/lib/repositories/itrack/ItrackPaymentPolicyRepo.js.map +0 -1
- package/lib/repositories/itrack/ItrackReturnPolicyRepo.d.ts +0 -11
- package/lib/repositories/itrack/ItrackReturnPolicyRepo.d.ts.map +0 -1
- package/lib/repositories/itrack/ItrackReturnPolicyRepo.js +0 -34
- package/lib/repositories/itrack/ItrackReturnPolicyRepo.js.map +0 -1
- package/lib/repositories/test-error-preservation.d.ts +0 -45
- package/lib/repositories/test-error-preservation.d.ts.map +0 -1
- package/lib/repositories/test-error-preservation.js +0 -125
- package/lib/repositories/test-error-preservation.js.map +0 -1
- package/lib/tests/processImageUrlTest.d.ts +0 -29
- package/lib/tests/processImageUrlTest.d.ts.map +0 -1
- package/lib/tests/processImageUrlTest.js +0 -402
- package/lib/tests/processImageUrlTest.js.map +0 -1
- package/lib/tests/test.d.ts +0 -2
- package/lib/tests/test.d.ts.map +0 -1
- package/lib/tests/test.js +0 -130
- package/lib/tests/test.js.map +0 -1
- package/lib/tests/tests.js +0 -130
- package/lib/tests/tests.js.map +0 -1
- package/lib/types/ErrorPreservation.d.ts +0 -154
- package/lib/types/ErrorPreservation.d.ts.map +0 -1
- package/lib/types/ErrorPreservation.js +0 -357
- package/lib/types/ErrorPreservation.js.map +0 -1
- package/lib/types/MysqlResponse.d.ts +0 -123
- package/lib/types/MysqlResponse.d.ts.map +0 -1
- package/lib/types/MysqlResponse.js +0 -236
- package/lib/types/MysqlResponse.js.map +0 -1
- package/lib/types/UseCaseResult.examples.d.ts +0 -42
- package/lib/types/UseCaseResult.examples.d.ts.map +0 -1
- package/lib/types/UseCaseResult.examples.js +0 -168
- package/lib/types/UseCaseResult.examples.js.map +0 -1
- package/lib/usecases/FulfillmentPolicy/AddFulfillmentPolicyToItrack.d.ts +0 -8
- package/lib/usecases/FulfillmentPolicy/AddFulfillmentPolicyToItrack.d.ts.map +0 -1
- package/lib/usecases/FulfillmentPolicy/AddFulfillmentPolicyToItrack.js +0 -5
- package/lib/usecases/FulfillmentPolicy/AddFulfillmentPolicyToItrack.js.map +0 -1
- package/lib/usecases/FulfillmentPolicy/GetFulfillmentPoliciesFromItrack.d.ts +0 -7
- package/lib/usecases/FulfillmentPolicy/GetFulfillmentPoliciesFromItrack.d.ts.map +0 -1
- package/lib/usecases/FulfillmentPolicy/GetFulfillmentPoliciesFromItrack.js +0 -5
- package/lib/usecases/FulfillmentPolicy/GetFulfillmentPoliciesFromItrack.js.map +0 -1
- package/lib/usecases/FulfillmentPolicy/RemoveFulfillmentPolicyFromItrack.d.ts +0 -8
- package/lib/usecases/FulfillmentPolicy/RemoveFulfillmentPolicyFromItrack.d.ts.map +0 -1
- package/lib/usecases/FulfillmentPolicy/RemoveFulfillmentPolicyFromItrack.js +0 -5
- package/lib/usecases/FulfillmentPolicy/RemoveFulfillmentPolicyFromItrack.js.map +0 -1
- package/lib/usecases/FulfillmentPolicy/SyncFulfillmentPolicy.d.ts +0 -11
- package/lib/usecases/FulfillmentPolicy/SyncFulfillmentPolicy.d.ts.map +0 -1
- package/lib/usecases/FulfillmentPolicy/SyncFulfillmentPolicy.js +0 -60
- package/lib/usecases/FulfillmentPolicy/SyncFulfillmentPolicy.js.map +0 -1
- package/lib/usecases/FulfillmentPolicy/UpdateFulfillmentPolicyFromItrack.d.ts +0 -8
- package/lib/usecases/FulfillmentPolicy/UpdateFulfillmentPolicyFromItrack.d.ts.map +0 -1
- package/lib/usecases/FulfillmentPolicy/UpdateFulfillmentPolicyFromItrack.js +0 -5
- package/lib/usecases/FulfillmentPolicy/UpdateFulfillmentPolicyFromItrack.js.map +0 -1
- package/lib/usecases/Inventory/ConvertInventoryItemToSku.js +0 -54
- package/lib/usecases/Inventory/ConvertInventoryItemToSku.js.map +0 -1
- package/lib/usecases/Listing/GetListingFromProduct.js +0 -15
- package/lib/usecases/Listing/GetListingFromProduct.js.map +0 -1
- package/lib/usecases/Listing/PushListingToEbay.js +0 -31
- package/lib/usecases/Listing/PushListingToEbay.js.map +0 -1
- package/lib/usecases/Listing/SyncListing.js +0 -182
- package/lib/usecases/Listing/SyncListing.js.map +0 -1
- package/lib/usecases/Listing_old/GetListingFromProduct.d.ts +0 -8
- package/lib/usecases/Listing_old/GetListingFromProduct.d.ts.map +0 -1
- package/lib/usecases/Listing_old/GetListingFromProduct.js +0 -6
- package/lib/usecases/Listing_old/GetListingFromProduct.js.map +0 -1
- package/lib/usecases/Listing_old/PushListingToEbay.d.ts +0 -16
- package/lib/usecases/Listing_old/PushListingToEbay.d.ts.map +0 -1
- package/lib/usecases/Listing_old/PushListingToEbay.js +0 -22
- package/lib/usecases/Listing_old/PushListingToEbay.js.map +0 -1
- package/lib/usecases/Listing_old/SyncListing.d.ts +0 -11
- package/lib/usecases/Listing_old/SyncListing.d.ts.map +0 -1
- package/lib/usecases/Listing_old/SyncListing.js +0 -173
- package/lib/usecases/Listing_old/SyncListing.js.map +0 -1
- package/lib/usecases/Offer/ConvertItrackInventoryListingDetailToEbayOffer.d.ts +0 -22
- package/lib/usecases/Offer/ConvertItrackInventoryListingDetailToEbayOffer.d.ts.map +0 -1
- package/lib/usecases/Offer/ConvertItrackInventoryListingDetailToEbayOffer.js +0 -67
- package/lib/usecases/Offer/ConvertItrackInventoryListingDetailToEbayOffer.js.map +0 -1
- package/lib/usecases/Offer/ConvertItrackListingToEbayOffer.d.ts +0 -17
- package/lib/usecases/Offer/ConvertItrackListingToEbayOffer.d.ts.map +0 -1
- package/lib/usecases/Offer/ConvertItrackListingToEbayOffer.js +0 -66
- package/lib/usecases/Offer/ConvertItrackListingToEbayOffer.js.map +0 -1
- package/lib/usecases/Offer/CreateEbayOffer.d.ts +0 -11
- package/lib/usecases/Offer/CreateEbayOffer.d.ts.map +0 -1
- package/lib/usecases/Offer/CreateEbayOffer.js +0 -31
- package/lib/usecases/Offer/CreateEbayOffer.js.map +0 -1
- package/lib/usecases/Offer/SyncEbayOffer.d.ts +0 -20
- package/lib/usecases/Offer/SyncEbayOffer.d.ts.map +0 -1
- package/lib/usecases/Offer/SyncEbayOffer.js +0 -49
- package/lib/usecases/Offer/SyncEbayOffer.js.map +0 -1
- package/lib/usecases/Offer/createOfferSample.d.ts +0 -1
- package/lib/usecases/Offer/createOfferSample.d.ts.map +0 -1
- package/lib/usecases/Offer/createOfferSample.js +0 -230
- package/lib/usecases/Offer/createOfferSample.js.map +0 -1
- package/lib/usecases/PaymentPolicy/AddPaymentPolicyToItrack.d.ts +0 -8
- package/lib/usecases/PaymentPolicy/AddPaymentPolicyToItrack.d.ts.map +0 -1
- package/lib/usecases/PaymentPolicy/AddPaymentPolicyToItrack.js +0 -5
- package/lib/usecases/PaymentPolicy/AddPaymentPolicyToItrack.js.map +0 -1
- package/lib/usecases/PaymentPolicy/GetPaymentPoliciesFromItrack.d.ts +0 -7
- package/lib/usecases/PaymentPolicy/GetPaymentPoliciesFromItrack.d.ts.map +0 -1
- package/lib/usecases/PaymentPolicy/GetPaymentPoliciesFromItrack.js +0 -5
- package/lib/usecases/PaymentPolicy/GetPaymentPoliciesFromItrack.js.map +0 -1
- package/lib/usecases/PaymentPolicy/RemovePaymentPolicyFromItrack.d.ts +0 -8
- package/lib/usecases/PaymentPolicy/RemovePaymentPolicyFromItrack.d.ts.map +0 -1
- package/lib/usecases/PaymentPolicy/RemovePaymentPolicyFromItrack.js +0 -5
- package/lib/usecases/PaymentPolicy/RemovePaymentPolicyFromItrack.js.map +0 -1
- package/lib/usecases/PaymentPolicy/UpdatePaymentPolicyFromItrack.d.ts +0 -8
- package/lib/usecases/PaymentPolicy/UpdatePaymentPolicyFromItrack.d.ts.map +0 -1
- package/lib/usecases/PaymentPolicy/UpdatePaymentPolicyFromItrack.js +0 -5
- package/lib/usecases/PaymentPolicy/UpdatePaymentPolicyFromItrack.js.map +0 -1
- package/lib/usecases/ReturnPolicy/AddReturnPolicyToItrack.d.ts +0 -8
- package/lib/usecases/ReturnPolicy/AddReturnPolicyToItrack.d.ts.map +0 -1
- package/lib/usecases/ReturnPolicy/AddReturnPolicyToItrack.js +0 -5
- package/lib/usecases/ReturnPolicy/AddReturnPolicyToItrack.js.map +0 -1
- package/lib/usecases/ReturnPolicy/GetReturnPoliciesFromItrack.d.ts +0 -7
- package/lib/usecases/ReturnPolicy/GetReturnPoliciesFromItrack.d.ts.map +0 -1
- package/lib/usecases/ReturnPolicy/GetReturnPoliciesFromItrack.js +0 -5
- package/lib/usecases/ReturnPolicy/GetReturnPoliciesFromItrack.js.map +0 -1
- package/lib/usecases/ReturnPolicy/RemoveReturnPolicyFromItrack.d.ts +0 -8
- package/lib/usecases/ReturnPolicy/RemoveReturnPolicyFromItrack.d.ts.map +0 -1
- package/lib/usecases/ReturnPolicy/RemoveReturnPolicyFromItrack.js +0 -5
- package/lib/usecases/ReturnPolicy/RemoveReturnPolicyFromItrack.js.map +0 -1
- package/lib/usecases/ReturnPolicy/UpdateReturnPolicyInItrack.d.ts +0 -8
- package/lib/usecases/ReturnPolicy/UpdateReturnPolicyInItrack.d.ts.map +0 -1
- package/lib/usecases/ReturnPolicy/UpdateReturnPolicyInItrack.js +0 -5
- package/lib/usecases/ReturnPolicy/UpdateReturnPolicyInItrack.js.map +0 -1
- package/lib/usecases/integration.test.d.ts +0 -33
- package/lib/usecases/integration.test.d.ts.map +0 -1
- package/lib/usecases/integration.test.js +0 -499
- package/lib/usecases/integration.test.js.map +0 -1
- /package/lib/usecases/Offer/{convertItrackListingToEbayInventoryAndOffer.d.ts → ConvertItrackListingToEbayInventoryAndOffer.d.ts} +0 -0
- /package/lib/usecases/Offer/{convertItrackListingToEbayInventoryAndOffer.d.ts.map → ConvertItrackListingToEbayInventoryAndOffer.d.ts.map} +0 -0
- /package/lib/usecases/Offer/{convertItrackListingToEbayInventoryAndOffer.js → ConvertItrackListingToEbayInventoryAndOffer.js} +0 -0
- /package/lib/usecases/Offer/{convertItrackListingToEbayInventoryAndOffer.js.map → ConvertItrackListingToEbayInventoryAndOffer.js.map} +0 -0
|
@@ -1,499 +0,0 @@
|
|
|
1
|
-
import { getMysqlConfigFromEnv } from "../infrastructure/mysql/getPool.js";
|
|
2
|
-
import { MysqlDatastore } from "../infrastructure/mysql/MysqlDatastore.js";
|
|
3
|
-
import { TokenManager } from "../infrastructure/TokenManager.js";
|
|
4
|
-
import { EbayAdapter } from "../adapters/ebay/EbayAdapter.js";
|
|
5
|
-
import { doFetch } from "../infrastructure/http.js";
|
|
6
|
-
import { EbayScopes } from "../entities/ebay/Scopes.js";
|
|
7
|
-
import { MarketplaceEnum } from "../entities/ebay/MarketplaceEnum.js";
|
|
8
|
-
import { ItrackAdapter } from "../adapters/itrack/ItrackAdapter.js";
|
|
9
|
-
import { formatErrorsForLogging, isSuccessResult, hasErrors } from "../types/UseCaseResult.js";
|
|
10
|
-
// Import use cases for testing
|
|
11
|
-
import { syncInventoryToEbay } from "./Inventory/SyncInventoryToEbay.js";
|
|
12
|
-
import { convertItrackListingToEbayInventoryAndOffer } from "./Offer/ConvertItrackListingToEbayInventoryAndOffer.js";
|
|
13
|
-
/**
|
|
14
|
-
* Comprehensive Integration Test Suite for eBay Utility Use Cases
|
|
15
|
-
*
|
|
16
|
-
* This test suite follows the integration testing best practices:
|
|
17
|
-
* 1. Returns UseCaseResult for proper testing and validation
|
|
18
|
-
* 2. Tests both success and error scenarios
|
|
19
|
-
* 3. Provides structured assertions and logging
|
|
20
|
-
* 4. Uses mock data to avoid database dependencies
|
|
21
|
-
* 5. Separates test scenarios for better maintainability
|
|
22
|
-
* 6. Tests multiple use cases in a coordinated manner
|
|
23
|
-
*/
|
|
24
|
-
const PRODUCTION = false;
|
|
25
|
-
// Create shared infrastructure
|
|
26
|
-
const pool = getMysqlConfigFromEnv();
|
|
27
|
-
const db = new MysqlDatastore(pool);
|
|
28
|
-
const tokenManager = new TokenManager(db, doFetch, PRODUCTION, Object.values(EbayScopes), MarketplaceEnum.Motors);
|
|
29
|
-
const ebayAdapter = new EbayAdapter(tokenManager);
|
|
30
|
-
const itrackAdapter = new ItrackAdapter(db);
|
|
31
|
-
// Mock data for testing
|
|
32
|
-
const mockInventoryListingDetailRow = {
|
|
33
|
-
// Listing details
|
|
34
|
-
active: true,
|
|
35
|
-
inventoryListingDetailId: 5,
|
|
36
|
-
duration: 'GTC',
|
|
37
|
-
ecommercePartnerId: 1,
|
|
38
|
-
ecommerceCategoryId: 33543,
|
|
39
|
-
ecommerceConditionId: 3,
|
|
40
|
-
ecommerceConditionDescription: "used a",
|
|
41
|
-
fulfillmentTime: 3,
|
|
42
|
-
fulfillmentTimeUnit: "BUSINESS_DAY",
|
|
43
|
-
listingDescription: `Assembly:\nMake:{?Make}\nVehicle Model: Test Vehicle\nManufacturer:TEST_BRAND\nModel:Test Model\nPart:\nManufacturer: TEST_BRAND\nModel: Test Model\n{?FlexLabel1}:{?FlexValue1}\n`,
|
|
44
|
-
listingTitle: "Test Integration Item",
|
|
45
|
-
// Inventory specifics
|
|
46
|
-
imageUrls: [
|
|
47
|
-
{
|
|
48
|
-
fileId: 2551,
|
|
49
|
-
fileName: "test_image.jpg",
|
|
50
|
-
rank: 1
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
inventoryDescription: 'Test Integration Item Description',
|
|
54
|
-
inventoryId: 999999,
|
|
55
|
-
manufacturerPartNumber: 'TEST-MPN-001',
|
|
56
|
-
price: 25.99,
|
|
57
|
-
quantity: 5,
|
|
58
|
-
sku: "TEST-SKU-999999",
|
|
59
|
-
storeId: 1,
|
|
60
|
-
upc: '123456789012',
|
|
61
|
-
weight: 2.5,
|
|
62
|
-
weightUnit: "POUND",
|
|
63
|
-
shippingLength: 6,
|
|
64
|
-
shippingWidth: 4,
|
|
65
|
-
shippingHeight: 3,
|
|
66
|
-
shippingLengthUnit: "INCH",
|
|
67
|
-
packageType: "PARCEL_OR_PADDED_ENVELOPE",
|
|
68
|
-
// Partner specifics
|
|
69
|
-
partnerSpecificDetails: {
|
|
70
|
-
brand: "Test Brand",
|
|
71
|
-
listingFormat: "FIXED_PRICE",
|
|
72
|
-
fulfillmentPolicyId: 6206168000,
|
|
73
|
-
marketplaceId: "EBAY_MOTORS",
|
|
74
|
-
merchantLocationKey: 'Store 1',
|
|
75
|
-
paymentPolicyId: 6206169000,
|
|
76
|
-
returnPolicyId: 6206170000,
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
/**
|
|
80
|
-
* Test successful end-to-end workflow
|
|
81
|
-
*/
|
|
82
|
-
const testEndToEndWorkflowSuccess = async () => {
|
|
83
|
-
const startTime = Date.now();
|
|
84
|
-
const testName = "End-to-End Workflow - Success Scenario";
|
|
85
|
-
const assertions = { passed: 0, failed: 0, details: [] };
|
|
86
|
-
try {
|
|
87
|
-
await tokenManager.initialize();
|
|
88
|
-
console.log('🔄 Initializing token manager...');
|
|
89
|
-
assertions.passed++;
|
|
90
|
-
assertions.details.push('✅ Token manager initialized successfully');
|
|
91
|
-
// Step 1: Convert Itrack listing to eBay format
|
|
92
|
-
console.log('🔄 Converting Itrack listing to eBay inventory format...');
|
|
93
|
-
const conversionResult = await convertItrackListingToEbayInventoryAndOffer({
|
|
94
|
-
inventoryListingDetail: mockInventoryListingDetailRow,
|
|
95
|
-
itrackAdapter
|
|
96
|
-
});
|
|
97
|
-
if (isSuccessResult(conversionResult)) {
|
|
98
|
-
assertions.passed++;
|
|
99
|
-
assertions.details.push('✅ Listing conversion successful');
|
|
100
|
-
console.log('✅ Conversion successful for SKU:', conversionResult.data.sku);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
assertions.failed++;
|
|
104
|
-
assertions.details.push('❌ Listing conversion failed');
|
|
105
|
-
console.error('❌ Conversion failed:', formatErrorsForLogging(conversionResult.errors || []));
|
|
106
|
-
return {
|
|
107
|
-
testName,
|
|
108
|
-
result: conversionResult,
|
|
109
|
-
duration: Date.now() - startTime,
|
|
110
|
-
assertions
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
// Step 2: Sync inventory to eBay
|
|
114
|
-
console.log('🔄 Syncing inventory to eBay...');
|
|
115
|
-
const { sku, ebayInventoryItem } = conversionResult.data;
|
|
116
|
-
const syncResult = await syncInventoryToEbay({
|
|
117
|
-
ebayAdapter,
|
|
118
|
-
tokenManager,
|
|
119
|
-
sku,
|
|
120
|
-
inventoryItem: ebayInventoryItem
|
|
121
|
-
});
|
|
122
|
-
if (isSuccessResult(syncResult)) {
|
|
123
|
-
assertions.passed++;
|
|
124
|
-
assertions.details.push('✅ eBay inventory sync successful');
|
|
125
|
-
console.log('✅ Inventory sync successful for SKU:', syncResult.data.sku);
|
|
126
|
-
// Verify data integrity
|
|
127
|
-
if (syncResult.data.sku === sku) {
|
|
128
|
-
assertions.passed++;
|
|
129
|
-
assertions.details.push('✅ SKU consistency maintained');
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
assertions.failed++;
|
|
133
|
-
assertions.details.push('❌ SKU consistency lost');
|
|
134
|
-
}
|
|
135
|
-
if (syncResult.request) {
|
|
136
|
-
assertions.passed++;
|
|
137
|
-
assertions.details.push('✅ HTTP request details captured');
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
assertions.failed++;
|
|
141
|
-
assertions.details.push('❌ HTTP request details missing');
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
assertions.failed++;
|
|
146
|
-
assertions.details.push('❌ eBay inventory sync failed');
|
|
147
|
-
console.error('❌ Sync failed:', formatErrorsForLogging(syncResult.errors || []));
|
|
148
|
-
}
|
|
149
|
-
return {
|
|
150
|
-
testName,
|
|
151
|
-
result: syncResult,
|
|
152
|
-
duration: Date.now() - startTime,
|
|
153
|
-
assertions
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
catch (error) {
|
|
157
|
-
assertions.failed++;
|
|
158
|
-
assertions.details.push(`❌ Unexpected error: ${error}`);
|
|
159
|
-
console.error('❌ Test failed with unexpected error:', error);
|
|
160
|
-
return {
|
|
161
|
-
testName,
|
|
162
|
-
result: { success: false, errors: [{ type: 'system', message: `Test error: ${error}` }] },
|
|
163
|
-
duration: Date.now() - startTime,
|
|
164
|
-
assertions
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
};
|
|
168
|
-
/**
|
|
169
|
-
* Test error handling with invalid data
|
|
170
|
-
*/
|
|
171
|
-
export const testErrorHandlingScenario = async () => {
|
|
172
|
-
const startTime = Date.now();
|
|
173
|
-
const testName = "Error Handling - Invalid Data Scenario";
|
|
174
|
-
const assertions = { passed: 0, failed: 0, details: [] };
|
|
175
|
-
try {
|
|
176
|
-
await tokenManager.initialize();
|
|
177
|
-
// Create invalid mock data to trigger validation errors
|
|
178
|
-
const invalidMockData = {
|
|
179
|
-
...mockInventoryListingDetailRow,
|
|
180
|
-
sku: "", // Invalid empty SKU
|
|
181
|
-
price: -1, // Invalid negative price
|
|
182
|
-
quantity: 0, // Invalid zero quantity
|
|
183
|
-
inventoryId: null, // Invalid null inventory ID
|
|
184
|
-
listingTitle: "", // Invalid empty title
|
|
185
|
-
};
|
|
186
|
-
console.log('🔄 Testing error scenario with invalid data...');
|
|
187
|
-
const conversionResult = await convertItrackListingToEbayInventoryAndOffer({
|
|
188
|
-
inventoryListingDetail: invalidMockData,
|
|
189
|
-
itrackAdapter
|
|
190
|
-
});
|
|
191
|
-
// We expect this to fail with validation errors
|
|
192
|
-
if (hasErrors(conversionResult)) {
|
|
193
|
-
assertions.passed++;
|
|
194
|
-
assertions.details.push('✅ Conversion properly failed with invalid data');
|
|
195
|
-
console.log('✅ Expected conversion failure:', formatErrorsForLogging(conversionResult.errors));
|
|
196
|
-
// Verify error types and structure
|
|
197
|
-
const hasValidationErrors = conversionResult.errors?.some(e => e.type === 'validation');
|
|
198
|
-
if (hasValidationErrors) {
|
|
199
|
-
assertions.passed++;
|
|
200
|
-
assertions.details.push('✅ Validation errors properly detected');
|
|
201
|
-
}
|
|
202
|
-
else {
|
|
203
|
-
assertions.failed++;
|
|
204
|
-
assertions.details.push('❌ Expected validation errors not found');
|
|
205
|
-
}
|
|
206
|
-
// Verify error details are informative
|
|
207
|
-
if (conversionResult.errors && conversionResult.errors.length > 0) {
|
|
208
|
-
assertions.passed++;
|
|
209
|
-
assertions.details.push('✅ Error details properly structured');
|
|
210
|
-
}
|
|
211
|
-
else {
|
|
212
|
-
assertions.failed++;
|
|
213
|
-
assertions.details.push('❌ Error details missing or malformed');
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
// If conversion unexpectedly succeeded, test sync with invalid data
|
|
218
|
-
console.log('⚠️ Conversion succeeded unexpectedly, testing sync with invalid data...');
|
|
219
|
-
const { sku, ebayInventoryItem } = conversionResult.data;
|
|
220
|
-
const syncResult = await syncInventoryToEbay({
|
|
221
|
-
ebayAdapter,
|
|
222
|
-
tokenManager,
|
|
223
|
-
sku,
|
|
224
|
-
inventoryItem: ebayInventoryItem
|
|
225
|
-
});
|
|
226
|
-
if (hasErrors(syncResult)) {
|
|
227
|
-
assertions.passed++;
|
|
228
|
-
assertions.details.push('✅ Sync properly failed with invalid data');
|
|
229
|
-
console.log('✅ Expected sync failure:', formatErrorsForLogging(syncResult.errors));
|
|
230
|
-
}
|
|
231
|
-
else {
|
|
232
|
-
assertions.failed++;
|
|
233
|
-
assertions.details.push('❌ Expected sync to fail but it succeeded');
|
|
234
|
-
}
|
|
235
|
-
return {
|
|
236
|
-
testName,
|
|
237
|
-
result: syncResult,
|
|
238
|
-
duration: Date.now() - startTime,
|
|
239
|
-
assertions
|
|
240
|
-
};
|
|
241
|
-
}
|
|
242
|
-
return {
|
|
243
|
-
testName,
|
|
244
|
-
result: conversionResult,
|
|
245
|
-
duration: Date.now() - startTime,
|
|
246
|
-
assertions
|
|
247
|
-
};
|
|
248
|
-
}
|
|
249
|
-
catch (error) {
|
|
250
|
-
assertions.failed++;
|
|
251
|
-
assertions.details.push(`❌ Unexpected error: ${error}`);
|
|
252
|
-
console.error('❌ Test failed with unexpected error:', error);
|
|
253
|
-
return {
|
|
254
|
-
testName,
|
|
255
|
-
result: { success: false, errors: [{ type: 'system', message: `Test error: ${error}` }] },
|
|
256
|
-
duration: Date.now() - startTime,
|
|
257
|
-
assertions
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
/**
|
|
262
|
-
* Test data validation and transformation
|
|
263
|
-
*/
|
|
264
|
-
export const testDataValidationScenario = async () => {
|
|
265
|
-
const startTime = Date.now();
|
|
266
|
-
const testName = "Data Validation - Transformation Scenario";
|
|
267
|
-
const assertions = { passed: 0, failed: 0, details: [] };
|
|
268
|
-
try {
|
|
269
|
-
await tokenManager.initialize();
|
|
270
|
-
// Test with edge case data that should be handled gracefully
|
|
271
|
-
const edgeCaseData = {
|
|
272
|
-
...mockInventoryListingDetailRow,
|
|
273
|
-
price: 0.01, // Minimum price
|
|
274
|
-
quantity: 999, // High quantity
|
|
275
|
-
weight: 0.1, // Minimum weight
|
|
276
|
-
listingTitle: "A".repeat(80), // Maximum title length
|
|
277
|
-
inventoryDescription: "B".repeat(4000), // Long description
|
|
278
|
-
};
|
|
279
|
-
console.log('🔄 Testing data validation with edge cases...');
|
|
280
|
-
const conversionResult = await convertItrackListingToEbayInventoryAndOffer({
|
|
281
|
-
inventoryListingDetail: edgeCaseData,
|
|
282
|
-
itrackAdapter
|
|
283
|
-
});
|
|
284
|
-
if (isSuccessResult(conversionResult)) {
|
|
285
|
-
assertions.passed++;
|
|
286
|
-
assertions.details.push('✅ Edge case data handled successfully');
|
|
287
|
-
console.log('✅ Edge case conversion successful for SKU:', conversionResult.data.sku);
|
|
288
|
-
// Verify data transformations
|
|
289
|
-
const { ebayInventoryItem } = conversionResult.data;
|
|
290
|
-
if (ebayInventoryItem.product?.title) {
|
|
291
|
-
assertions.passed++;
|
|
292
|
-
assertions.details.push('✅ Title transformation successful');
|
|
293
|
-
}
|
|
294
|
-
else {
|
|
295
|
-
assertions.failed++;
|
|
296
|
-
assertions.details.push('❌ Title transformation failed');
|
|
297
|
-
}
|
|
298
|
-
if (ebayInventoryItem.product?.description) {
|
|
299
|
-
assertions.passed++;
|
|
300
|
-
assertions.details.push('✅ Description transformation successful');
|
|
301
|
-
}
|
|
302
|
-
else {
|
|
303
|
-
assertions.failed++;
|
|
304
|
-
assertions.details.push('❌ Description transformation failed');
|
|
305
|
-
}
|
|
306
|
-
if (ebayInventoryItem.availability?.shipToLocationAvailability?.quantity) {
|
|
307
|
-
assertions.passed++;
|
|
308
|
-
assertions.details.push('✅ Quantity mapping successful');
|
|
309
|
-
}
|
|
310
|
-
else {
|
|
311
|
-
assertions.failed++;
|
|
312
|
-
assertions.details.push('❌ Quantity mapping failed');
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
assertions.failed++;
|
|
317
|
-
assertions.details.push('❌ Edge case data handling failed');
|
|
318
|
-
console.error('❌ Edge case conversion failed:', formatErrorsForLogging(conversionResult.errors || []));
|
|
319
|
-
}
|
|
320
|
-
return {
|
|
321
|
-
testName,
|
|
322
|
-
result: conversionResult,
|
|
323
|
-
duration: Date.now() - startTime,
|
|
324
|
-
assertions
|
|
325
|
-
};
|
|
326
|
-
}
|
|
327
|
-
catch (error) {
|
|
328
|
-
assertions.failed++;
|
|
329
|
-
assertions.details.push(`❌ Unexpected error: ${error}`);
|
|
330
|
-
console.error('❌ Test failed with unexpected error:', error);
|
|
331
|
-
return {
|
|
332
|
-
testName,
|
|
333
|
-
result: { success: false, errors: [{ type: 'system', message: `Test error: ${error}` }] },
|
|
334
|
-
duration: Date.now() - startTime,
|
|
335
|
-
assertions
|
|
336
|
-
};
|
|
337
|
-
}
|
|
338
|
-
};
|
|
339
|
-
/**
|
|
340
|
-
* Test system resilience and error recovery
|
|
341
|
-
*/
|
|
342
|
-
export const testSystemResilienceScenario = async () => {
|
|
343
|
-
const startTime = Date.now();
|
|
344
|
-
const testName = "System Resilience - Error Recovery Scenario";
|
|
345
|
-
const assertions = { passed: 0, failed: 0, details: [] };
|
|
346
|
-
try {
|
|
347
|
-
// Test without token initialization to simulate auth failure
|
|
348
|
-
console.log('🔄 Testing system resilience without token initialization...');
|
|
349
|
-
const conversionResult = await convertItrackListingToEbayInventoryAndOffer({
|
|
350
|
-
inventoryListingDetail: mockInventoryListingDetailRow,
|
|
351
|
-
itrackAdapter
|
|
352
|
-
});
|
|
353
|
-
if (isSuccessResult(conversionResult)) {
|
|
354
|
-
assertions.passed++;
|
|
355
|
-
assertions.details.push('✅ Conversion succeeded without token (expected for data transformation)');
|
|
356
|
-
// Now test sync without proper token - this should fail gracefully
|
|
357
|
-
const { sku, ebayInventoryItem } = conversionResult.data;
|
|
358
|
-
const syncResult = await syncInventoryToEbay({
|
|
359
|
-
ebayAdapter,
|
|
360
|
-
tokenManager, // Not initialized
|
|
361
|
-
sku,
|
|
362
|
-
inventoryItem: ebayInventoryItem
|
|
363
|
-
});
|
|
364
|
-
if (hasErrors(syncResult)) {
|
|
365
|
-
assertions.passed++;
|
|
366
|
-
assertions.details.push('✅ Sync properly failed without token initialization');
|
|
367
|
-
console.log('✅ Expected auth failure:', formatErrorsForLogging(syncResult.errors));
|
|
368
|
-
// Verify error type is authentication-related
|
|
369
|
-
const hasAuthErrors = syncResult.errors?.some(e => e.type === 'authentication' ||
|
|
370
|
-
e.message?.toLowerCase().includes('token') ||
|
|
371
|
-
e.message?.toLowerCase().includes('auth'));
|
|
372
|
-
if (hasAuthErrors) {
|
|
373
|
-
assertions.passed++;
|
|
374
|
-
assertions.details.push('✅ Authentication errors properly identified');
|
|
375
|
-
}
|
|
376
|
-
else {
|
|
377
|
-
assertions.failed++;
|
|
378
|
-
assertions.details.push('❌ Authentication errors not properly identified');
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
assertions.failed++;
|
|
383
|
-
assertions.details.push('❌ Expected sync to fail without token but it succeeded');
|
|
384
|
-
}
|
|
385
|
-
return {
|
|
386
|
-
testName,
|
|
387
|
-
result: syncResult,
|
|
388
|
-
duration: Date.now() - startTime,
|
|
389
|
-
assertions
|
|
390
|
-
};
|
|
391
|
-
}
|
|
392
|
-
else {
|
|
393
|
-
assertions.failed++;
|
|
394
|
-
assertions.details.push('❌ Conversion failed unexpectedly');
|
|
395
|
-
console.error('❌ Unexpected conversion failure:', formatErrorsForLogging(conversionResult.errors || []));
|
|
396
|
-
return {
|
|
397
|
-
testName,
|
|
398
|
-
result: conversionResult,
|
|
399
|
-
duration: Date.now() - startTime,
|
|
400
|
-
assertions
|
|
401
|
-
};
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
catch (error) {
|
|
405
|
-
// Catching errors is expected in resilience testing
|
|
406
|
-
assertions.passed++;
|
|
407
|
-
assertions.details.push(`✅ System handled unexpected error gracefully: ${error}`);
|
|
408
|
-
console.log('✅ System resilience confirmed - error handled:', error);
|
|
409
|
-
return {
|
|
410
|
-
testName,
|
|
411
|
-
result: { success: false, errors: [{ type: 'system', message: `Resilience test error: ${error}` }] },
|
|
412
|
-
duration: Date.now() - startTime,
|
|
413
|
-
assertions
|
|
414
|
-
};
|
|
415
|
-
}
|
|
416
|
-
};
|
|
417
|
-
/**
|
|
418
|
-
* Run all integration tests and provide comprehensive summary
|
|
419
|
-
*/
|
|
420
|
-
export const runComprehensiveIntegrationTests = async () => {
|
|
421
|
-
console.log('🚀 Starting Comprehensive Integration Test Suite...\n');
|
|
422
|
-
console.log('📋 This suite tests multiple use cases and scenarios to ensure system reliability\n');
|
|
423
|
-
const testResults = [];
|
|
424
|
-
// Run all test scenarios
|
|
425
|
-
console.log('📋 Running End-to-End Workflow Test...');
|
|
426
|
-
const workflowTest = await testEndToEndWorkflowSuccess();
|
|
427
|
-
testResults.push(workflowTest);
|
|
428
|
-
console.log('\n📋 Running Error Handling Test...');
|
|
429
|
-
const errorTest = await testErrorHandlingScenario();
|
|
430
|
-
testResults.push(errorTest);
|
|
431
|
-
console.log('\n📋 Running Data Validation Test...');
|
|
432
|
-
const validationTest = await testDataValidationScenario();
|
|
433
|
-
testResults.push(validationTest);
|
|
434
|
-
console.log('\n📋 Running System Resilience Test...');
|
|
435
|
-
const resilienceTest = await testSystemResilienceScenario();
|
|
436
|
-
testResults.push(resilienceTest);
|
|
437
|
-
// Print comprehensive test summary
|
|
438
|
-
console.log('\n' + '='.repeat(80));
|
|
439
|
-
console.log('📊 COMPREHENSIVE INTEGRATION TEST SUMMARY');
|
|
440
|
-
console.log('='.repeat(80));
|
|
441
|
-
let totalPassed = 0;
|
|
442
|
-
let totalFailed = 0;
|
|
443
|
-
let totalDuration = 0;
|
|
444
|
-
testResults.forEach((test, index) => {
|
|
445
|
-
console.log(`\n🧪 Test ${index + 1}: ${test.testName}`);
|
|
446
|
-
console.log(`⏱️ Duration: ${test.duration}ms`);
|
|
447
|
-
console.log(`✅ Passed: ${test.assertions.passed}`);
|
|
448
|
-
console.log(`❌ Failed: ${test.assertions.failed}`);
|
|
449
|
-
const testSuccessRate = test.assertions.passed / (test.assertions.passed + test.assertions.failed) * 100;
|
|
450
|
-
console.log(`📈 Test Success Rate: ${testSuccessRate.toFixed(1)}%`);
|
|
451
|
-
console.log(`📋 Assertion Details:`);
|
|
452
|
-
test.assertions.details.forEach(detail => console.log(` ${detail}`));
|
|
453
|
-
if (test.result.success) {
|
|
454
|
-
console.log(`📤 Final Result: SUCCESS ✅`);
|
|
455
|
-
}
|
|
456
|
-
else {
|
|
457
|
-
console.log(`📤 Final Result: FAILURE ❌`);
|
|
458
|
-
if (test.result.errors) {
|
|
459
|
-
console.log(`🚨 Error Summary: ${formatErrorsForLogging(test.result.errors)}`);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
totalPassed += test.assertions.passed;
|
|
463
|
-
totalFailed += test.assertions.failed;
|
|
464
|
-
totalDuration += test.duration;
|
|
465
|
-
});
|
|
466
|
-
// Overall summary
|
|
467
|
-
console.log('\n' + '='.repeat(80));
|
|
468
|
-
console.log('🎯 OVERALL TEST SUITE RESULTS');
|
|
469
|
-
console.log('='.repeat(80));
|
|
470
|
-
console.log(`🧪 Total Tests Run: ${testResults.length}`);
|
|
471
|
-
console.log(`✅ Total Assertions Passed: ${totalPassed}`);
|
|
472
|
-
console.log(`❌ Total Assertions Failed: ${totalFailed}`);
|
|
473
|
-
console.log(`⏱️ Total Duration: ${totalDuration}ms`);
|
|
474
|
-
console.log(`📈 Overall Success Rate: ${((totalPassed / (totalPassed + totalFailed)) * 100).toFixed(1)}%`);
|
|
475
|
-
// Test categorization
|
|
476
|
-
const successfulTests = testResults.filter(t => t.result.success).length;
|
|
477
|
-
const failedTests = testResults.length - successfulTests;
|
|
478
|
-
console.log(`🟢 Successful Test Scenarios: ${successfulTests}/${testResults.length}`);
|
|
479
|
-
console.log(`🔴 Failed Test Scenarios: ${failedTests}/${testResults.length}`);
|
|
480
|
-
// Recommendations
|
|
481
|
-
console.log('\n📝 RECOMMENDATIONS:');
|
|
482
|
-
if (totalFailed === 0) {
|
|
483
|
-
console.log('🎉 All tests passed! System is functioning correctly.');
|
|
484
|
-
}
|
|
485
|
-
else if (totalFailed < totalPassed) {
|
|
486
|
-
console.log('⚠️ Some tests failed. Review error details above for improvements.');
|
|
487
|
-
}
|
|
488
|
-
else {
|
|
489
|
-
console.log('🚨 Many tests failed. System requires attention before deployment.');
|
|
490
|
-
}
|
|
491
|
-
console.log('='.repeat(80));
|
|
492
|
-
};
|
|
493
|
-
// Execute the comprehensive test suite
|
|
494
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
495
|
-
runComprehensiveIntegrationTests().catch(console.error);
|
|
496
|
-
}
|
|
497
|
-
// Export individual test functions for selective testing
|
|
498
|
-
export { testEndToEndWorkflowSuccess };
|
|
499
|
-
//# sourceMappingURL=integration.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/usecases/integration.test.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|