SAP Spartacus OccEndpointsService单元测试的依赖注入

it2024-03-31  51

OccEndpointsService的两个依赖:

OccConfig和可选的BaseSiteService:

OccConfig是SiteContextConfig的子类:

export abstract class OccConfig extends SiteContextConfig { backend?: { occ?: { baseUrl?: string; prefix?: string; /** * Indicates whether or not cross-site Access-Control requests should be made * using credentials such as cookies, authorization headers or TLS client certificates */ useWithCredentials?: boolean; endpoints?: OccEndpoints; legacy?: boolean; }; media?: { /** * Media URLs are typically relative, so that the host can be configured. * Configurable media baseURLs are useful for SEO, multi-site, * switching environments, etc. */ baseUrl?: string; }; loadingScopes?: LoadingScopes; }; }

SiteContextConfig的实现:urlParameter,字符串数组和上下文名称:

export abstract class SiteContextConfig { context?: { urlParameters?: string[]; [contextName: string]: string[]; }; }

end point数据结构:OccEndpoints

export interface OccEndpoints { /** * Client login (get authorization token) * * @member {string} */ login?: string | OccEndpoint; /** * Client logout (revoke authorization token) * * @member {string} */ revoke?: string | OccEndpoint; /** * Get product details for scope * * @member Object */ product?: string | ProductOccEndpoint; /** * Get reviews for a product * * @member {string} */ productReviews?: string | OccEndpoint; /** * Get a list of product references * * @member {string} */ productReferences?: string | OccEndpoint; /** * Get a list of products and additional data * * @member {string} */ productSearch?: string | OccEndpoint; /** * Get a list of available suggestions * * @member {string} */ productSuggestions?: string | OccEndpoint; /** * Get CMS component details * * @member {string} */ component?: string | OccEndpoint; /** * Get a list of CMS component details * * @member {string} */ components?: string | OccEndpoint; /** * Get page data with list of cms content slots * * @member {string} */ pages?: string | OccEndpoint; /** * Get page data with list of cms content slots * * @member {string} */ page?: string | OccEndpoint; /** * Get all carts * * @member {string} [carts] */ carts?: string | OccEndpoint; /** * Get a cart with a given identifier * * @member {string} [cart] */ cart?: string | OccEndpoint; /** * Creates or restore a cart for a user * * @member {string} [createCart] */ createCart?: string | OccEndpoint; /** * Deletes a cart with a given cart id * * @member {string} [deleteCart] */ deleteCart?: string | OccEndpoint; /** * Adds a product to the cart * * @member {string} [addEntries] */ addEntries?: string | OccEndpoint; /** * Update quantity and store the details of a cart entry * * @member {string} [updateEntries] */ updateEntries?: string | OccEndpoint; /** * Deletes cart entry * * @member {string} [removeEntries] */ removeEntries?: string | OccEndpoint; /** * Assign email to cart * * @member {string} [addEmail] */ addEmail?: string | OccEndpoint; /** * Get a store location * * @member {string} [page] */ store?: string | OccEndpoint; /** * Get a list of store locations * * @member {string} [page] */ stores?: string | OccEndpoint; /** * Gets a store location count per country and regions * * @member {string} [page] */ storescounts?: string | OccEndpoint; /** * Get a list of available languages * * @member {string} */ languages?: string | OccEndpoint; /** * Get a list of available currencies * * @member {string} */ currencies?: string | OccEndpoint; /** * Get a list of countries * * @member {string} */ countries?: string | OccEndpoint; /** * Fetch the list of regions for the provided country * * @member {string} */ regions?: string | OccEndpoint; /** * Titles used for user's personal info. * * @member {string} */ titles?: string | OccEndpoint; /** * Get user details * * @member {string} */ user?: string | OccEndpoint; /** * Register a new user. * * @member {string} */ userRegister?: string | OccEndpoint; /** * Request an email to reset the password * * @member {string} */ userForgotPassword?: string | OccEndpoint; /** * Reset the password once the email is recieved. * * @member {string} */ userResetPassword?: string | OccEndpoint; /** * Update the user id with which the user authenticates. * * @member {string} */ userUpdateLoginId?: string | OccEndpoint; /** * Update the user's password * * @member {string} */ userUpdatePassword?: string | OccEndpoint; /** * Payment details root endpoint. * * @member {string} */ paymentDetailsAll?: string | OccEndpoint; /** * Endpoint for a specific payment method. * * @member {string} */ paymentDetail?: string | OccEndpoint; /** * Endpoint for the list of one user's orders * * @member {string} */ orderHistory?: string | OccEndpoint; /** * Endpoint for the details of one user's order * * @member {string} */ orderDetail?: string | OccEndpoint; /** * Endpoint for anonymous consent templates * * @member {string} */ anonymousConsentTemplates?: string | OccEndpoint; /** * Endpoint for consent templates * * @member {string} */ consentTemplates?: string | OccEndpoint; /** * Endpoint for a user's consents * * @member {string} */ consents?: string | OccEndpoint; /** * Endpoint for a user's specific previously given consent. * * @member {string} */ consentDetail?: string | OccEndpoint; /** * Endpoint for a user's addresses * * @member {string} */ addresses?: string | OccEndpoint; /** * Endpoint for a user's specific address * * @member {string} */ addressDetail?: string | OccEndpoint; /** * Endpoint for address verification * * @member {string} */ addressVerification?: string | OccEndpoint; /** * Endpoint for consignment tracking * * @member {string} */ consignmentTracking?: string | OccEndpoint; /** * Endpoint for asm customer search * * @member {string} */ asmCustomerSearch?: string | OccEndpoint; /** * Endpoint for cart voucher * * @member {string} */ cartVoucher?: string | OccEndpoint; /** * Endpoint for coupons * * @member {string} */ customerCoupons?: string | OccEndpoint; /** * Endpoint for claiming coupon * * @member {string} */ claimCoupon?: string | OccEndpoint; /** * Endpoint for coupons * * @member {string} */ couponNotification?: string | OccEndpoint; /** * Explicitly saves a cart * * @member {string} */ saveCart?: string | OccEndpoint; /** * Endpoint for notification preference * * @member {string} */ notificationPreference?: string | OccEndpoint; /** * Endpoint for product interests * * @member {string} */ productInterests?: string | OccEndpoint; /** * Endpoint for getting product interests * * @member {string} */ getProductInterests?: string | OccEndpoint; /** * Endpoint for cancel an order */ cancelOrder?: string | OccEndpoint; /** * Endpoint for creating order return request */ returnOrder?: string | OccEndpoint; /** * Endpoint for user's order return requests */ orderReturns?: string | OccEndpoint; /** * Endpoint for order return request details */ orderReturnDetail?: string | OccEndpoint; /** * Endpoint for cancelling return request */ cancelReturn?: string | OccEndpoint; /** * Endpoint for set delivery address to cart */ setDeliveryAddress?: string | OccEndpoint; /** * Endpoint for place order */ placeOrder?: string | OccEndpoint; /** * Endpoint for userGroupOrderApprovalPermission * * @member {string} */ budget?: string | OccEndpoint; /** * Endpoint for budgets list * * @member {string} */ budgets?: string | OccEndpoint; /** * Endpoint for organizations * * @member {string} */ orgUnits?: string | OccEndpoint; /** * Endpoint for organizations list * * @member {string} */ orgUnitsAvailable?: string | OccEndpoint; /** * Endpoint for organization units tree * * @member {string} */ orgUnitsTree?: string | OccEndpoint; /** * Endpoint for approval processes for organization units * * @member {string} */ orgUnitsApprovalProcesses?: string | OccEndpoint; /** * Endpoint for organization * * @member {string} */ orgUnit?: string | OccEndpoint; /** * Endpoint for orgUnitUsers: * * @member {string} */ orgUnitUsers?: string | OccEndpoint; /** * Endpoint for add orgUnitUserRoles (except approver): * * @member {string} */ orgUnitUserRoles?: string | OccEndpoint; /** * Endpoint for remove orgUnitUserRole (except approver): * * @member {string} */ orgUnitUserRole?: string | OccEndpoint; /** * Endpoint for add orgUnitApprovers: * * @member {string} */ orgUnitApprovers?: string | OccEndpoint; /** * Endpoint for delete orgUnitApprover: * * @member {string} */ orgUnitApprover?: string | OccEndpoint; /** * Endpoint for organizational unit addresses * * @member {string} */ orgUnitsAddresses?: string | OccEndpoint; /** * Endpoint for organizational unit address * * @member {string} */ orgUnitsAddress?: string | OccEndpoint; /** * Endpoint for organizational unit user groups list * * @member {string} */ userGroups?: string | OccEndpoint; /** * Endpoint for organizational unit user group * * @member {string} */ userGroup?: string | OccEndpoint; /** * Endpoint for costCenter list * * @member {string} */ userGroupAvailableOrderApprovalPermissions?: string | OccEndpoint; /** * Endpoint for userGroupAvailableOrderApprovalPermissions list * * @member {string} */ userGroupAvailableOrgCustomers?: string | OccEndpoint; /** * Endpoint for userGroupAvailableOrgCustomers list * * @member {string} */ userGroupMembers?: string | OccEndpoint; /** * Endpoint for userGroupMembers list * * @member {string} */ userGroupMember?: string | OccEndpoint; /** * Endpoint for userGroupMember * * @member {string} */ userGroupOrderApprovalPermissions?: string | OccEndpoint; /** * Endpoint for userGroupOrderApprovalPermissions list * * @member {string} */ userGroupOrderApprovalPermission?: string | OccEndpoint; /** * Endpoint for userGroupOrderApprovalPermission * * @member {string} */ costCenters?: string | OccEndpoint; /** * Endpoint to schedule a replenishment order * * * @member {string} */ scheduleReplenishmentOrder?: string | OccEndpoint; /** * * Endpoint for the list of one user's replenishment orders * * * @member {string} */ replenishmentOrderHistory?: string | OccEndpoint; /* Endpoint to get a replenishment order details * * * @member {string} */ replenishmentOrderDetails?: string | OccEndpoint; /** * Endpoint to get a replenishment order history for a replenishment * * * @member {string} */ replenishmentOrderDetailsHistory?: string | OccEndpoint; /** * Endpoint to get a replenishment order history for a replenishment * * * @member {string} */ cancelReplenishmentOrder?: string | OccEndpoint; /** * Endpoint for all costCenters * * @member {string} */ costCentersAll?: string | OccEndpoint; /** * Endpoint for costCenter * * @member {string} */ costCenter?: string | OccEndpoint; /** * Endpoint for budgets assigned to costCenter * * @member {string} */ costCenterBudgets?: string | OccEndpoint; /** * Endpoint for budget assigned to costCenter * * @member {string} */ costCenterBudget?: string | OccEndpoint; /** * Endpoint for permission list * * @member {string} */ permissions?: string | OccEndpoint; /** * Endpoint for permission * * @member {string} */ permission?: string | OccEndpoint; /** * Endpoint for order approval permission types * * @member {string} */ orderApprovalPermissionTypes?: string | OccEndpoint; /** * Endpoint for organization customers * * @member {string} */ b2bUsers?: string | OccEndpoint; /** * Endpoint for organization customer * * @member {string} */ b2bUser?: string | OccEndpoint; /** * Endpoint for organization customer approvers * * @member {string} */ b2bUserApprovers?: string | OccEndpoint; /** * Endpoint for organization customer approver * * @member {string} */ b2bUserApprover?: string | OccEndpoint; /** * Endpoint for organization customer user groups * * @member {string} */ b2bUserUserGroups?: string | OccEndpoint; /** * Endpoint for organization customer user group * * @member {string} */ b2bUserUserGroup?: string | OccEndpoint; /** * Endpoint for organization customer permissions * * @member {string} */ b2bUserPermissions?: string | OccEndpoint; /** * Endpoint for organization customer permission * * @member {string} */ b2bUserPermission?: string | OccEndpoint; /** * Endpoint for order approvals * * @member {string} */ orderApprovals?: string | OccEndpoint; /** * Endpoint for order approval * * @member {string} */ orderApproval?: string | OccEndpoint; /** * Endpoint for order approval decision * * @member {string} */ orderApprovalDecision?: string | OccEndpoint; }

在单元测试里对OccConfig进行mock:

beforeEach(() => { mockOccConfig = { backend: { occ: { baseUrl: 'test-baseUrl', prefix: '/test-occPrefix', endpoints: { login: '/authorizationserver/oauth/token', product: { default: 'configured-endpoint1/${test}?fields=abc', test: 'configured-endpoint1/${test}?fields=test', }, }, }, }, context: { baseSite: ['/test-baseSite'], }, }; TestBed.configureTestingModule({ providers: [{ provide: OccConfig, useValue: mockOccConfig }], }); service = TestBed.inject(OccEndpointsService); }); 汪子熙 认证博客专家 前端框架 Node.js SAP JerryWang,2007年从电子科技大学计算机专业硕士毕业后加入SAP成都研究院工作至今。Jerry是SAP社区导师,SAP中国技术大使。2020年5月下旬,Jerry做了脑部肿瘤的开颅切除手术,对编程和人生又有了新的感悟。
最新回复(0)