This is page 57 of 61. Use http://codebase.md/taurgis/sfcc-dev-mcp?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .DS_Store
├── .github
│ ├── dependabot.yml
│ ├── instructions
│ │ ├── mcp-node-tests.instructions.md
│ │ └── mcp-yml-tests.instructions.md
│ ├── ISSUE_TEMPLATE
│ │ ├── bug_report.yml
│ │ ├── config.yml
│ │ ├── documentation.yml
│ │ ├── feature_request.yml
│ │ └── question.yml
│ ├── PULL_REQUEST_TEMPLATE
│ │ ├── bug_fix.md
│ │ ├── documentation.md
│ │ └── new_tool.md
│ ├── pull_request_template.md
│ └── workflows
│ ├── ci.yml
│ ├── deploy-pages.yml
│ ├── publish.yml
│ └── update-docs.yml
├── .gitignore
├── .husky
│ └── pre-commit
├── aegis.config.docs-only.json
├── aegis.config.json
├── aegis.config.with-dw.json
├── AGENTS.md
├── ai-instructions
│ ├── claude-desktop
│ │ └── claude_custom_instructions.md
│ ├── cursor
│ │ └── .cursor
│ │ └── rules
│ │ ├── debugging-workflows.mdc
│ │ ├── hooks-development.mdc
│ │ ├── isml-templates.mdc
│ │ ├── job-framework.mdc
│ │ ├── performance-optimization.mdc
│ │ ├── scapi-endpoints.mdc
│ │ ├── security-patterns.mdc
│ │ ├── sfcc-development.mdc
│ │ ├── sfra-controllers.mdc
│ │ ├── sfra-models.mdc
│ │ ├── system-objects.mdc
│ │ └── testing-patterns.mdc
│ └── github-copilot
│ └── copilot-instructions.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── docs
│ ├── best-practices
│ │ ├── cartridge_creation.md
│ │ ├── isml_templates.md
│ │ ├── job_framework.md
│ │ ├── localserviceregistry.md
│ │ ├── ocapi_hooks.md
│ │ ├── performance.md
│ │ ├── scapi_custom_endpoint.md
│ │ ├── scapi_hooks.md
│ │ ├── security.md
│ │ ├── sfra_client_side_js.md
│ │ ├── sfra_controllers.md
│ │ ├── sfra_models.md
│ │ └── sfra_scss.md
│ ├── dw_campaign
│ │ ├── ABTest.md
│ │ ├── ABTestMgr.md
│ │ ├── ABTestSegment.md
│ │ ├── AmountDiscount.md
│ │ ├── ApproachingDiscount.md
│ │ ├── BonusChoiceDiscount.md
│ │ ├── BonusDiscount.md
│ │ ├── Campaign.md
│ │ ├── CampaignMgr.md
│ │ ├── CampaignStatusCodes.md
│ │ ├── Coupon.md
│ │ ├── CouponMgr.md
│ │ ├── CouponRedemption.md
│ │ ├── CouponStatusCodes.md
│ │ ├── Discount.md
│ │ ├── DiscountPlan.md
│ │ ├── FixedPriceDiscount.md
│ │ ├── FixedPriceShippingDiscount.md
│ │ ├── FreeDiscount.md
│ │ ├── FreeShippingDiscount.md
│ │ ├── PercentageDiscount.md
│ │ ├── PercentageOptionDiscount.md
│ │ ├── PriceBookPriceDiscount.md
│ │ ├── Promotion.md
│ │ ├── PromotionMgr.md
│ │ ├── PromotionPlan.md
│ │ ├── SlotContent.md
│ │ ├── SourceCodeGroup.md
│ │ ├── SourceCodeInfo.md
│ │ ├── SourceCodeStatusCodes.md
│ │ └── TotalFixedPriceDiscount.md
│ ├── dw_catalog
│ │ ├── Catalog.md
│ │ ├── CatalogMgr.md
│ │ ├── Category.md
│ │ ├── CategoryAssignment.md
│ │ ├── CategoryLink.md
│ │ ├── PriceBook.md
│ │ ├── PriceBookMgr.md
│ │ ├── Product.md
│ │ ├── ProductActiveData.md
│ │ ├── ProductAttributeModel.md
│ │ ├── ProductAvailabilityLevels.md
│ │ ├── ProductAvailabilityModel.md
│ │ ├── ProductInventoryList.md
│ │ ├── ProductInventoryMgr.md
│ │ ├── ProductInventoryRecord.md
│ │ ├── ProductLink.md
│ │ ├── ProductMgr.md
│ │ ├── ProductOption.md
│ │ ├── ProductOptionModel.md
│ │ ├── ProductOptionValue.md
│ │ ├── ProductPriceInfo.md
│ │ ├── ProductPriceModel.md
│ │ ├── ProductPriceTable.md
│ │ ├── ProductSearchHit.md
│ │ ├── ProductSearchModel.md
│ │ ├── ProductSearchRefinementDefinition.md
│ │ ├── ProductSearchRefinements.md
│ │ ├── ProductSearchRefinementValue.md
│ │ ├── ProductVariationAttribute.md
│ │ ├── ProductVariationAttributeValue.md
│ │ ├── ProductVariationModel.md
│ │ ├── Recommendation.md
│ │ ├── SearchModel.md
│ │ ├── SearchRefinementDefinition.md
│ │ ├── SearchRefinements.md
│ │ ├── SearchRefinementValue.md
│ │ ├── SortingOption.md
│ │ ├── SortingRule.md
│ │ ├── Store.md
│ │ ├── StoreGroup.md
│ │ ├── StoreInventoryFilter.md
│ │ ├── StoreInventoryFilterValue.md
│ │ ├── StoreMgr.md
│ │ ├── Variant.md
│ │ └── VariationGroup.md
│ ├── dw_content
│ │ ├── Content.md
│ │ ├── ContentMgr.md
│ │ ├── ContentSearchModel.md
│ │ ├── ContentSearchRefinementDefinition.md
│ │ ├── ContentSearchRefinements.md
│ │ ├── ContentSearchRefinementValue.md
│ │ ├── Folder.md
│ │ ├── Library.md
│ │ ├── MarkupText.md
│ │ └── MediaFile.md
│ ├── dw_crypto
│ │ ├── CertificateRef.md
│ │ ├── CertificateUtils.md
│ │ ├── Cipher.md
│ │ ├── Encoding.md
│ │ ├── JWE.md
│ │ ├── JWEHeader.md
│ │ ├── JWS.md
│ │ ├── JWSHeader.md
│ │ ├── KeyRef.md
│ │ ├── Mac.md
│ │ ├── MessageDigest.md
│ │ ├── SecureRandom.md
│ │ ├── Signature.md
│ │ ├── WeakCipher.md
│ │ ├── WeakMac.md
│ │ ├── WeakMessageDigest.md
│ │ ├── WeakSignature.md
│ │ └── X509Certificate.md
│ ├── dw_customer
│ │ ├── AddressBook.md
│ │ ├── AgentUserMgr.md
│ │ ├── AgentUserStatusCodes.md
│ │ ├── AuthenticationStatus.md
│ │ ├── Credentials.md
│ │ ├── Customer.md
│ │ ├── CustomerActiveData.md
│ │ ├── CustomerAddress.md
│ │ ├── CustomerCDPData.md
│ │ ├── CustomerContextMgr.md
│ │ ├── CustomerGroup.md
│ │ ├── CustomerList.md
│ │ ├── CustomerMgr.md
│ │ ├── CustomerPasswordConstraints.md
│ │ ├── CustomerPaymentInstrument.md
│ │ ├── CustomerStatusCodes.md
│ │ ├── EncryptedObject.md
│ │ ├── ExternalProfile.md
│ │ ├── OrderHistory.md
│ │ ├── ProductList.md
│ │ ├── ProductListItem.md
│ │ ├── ProductListItemPurchase.md
│ │ ├── ProductListMgr.md
│ │ ├── ProductListRegistrant.md
│ │ ├── Profile.md
│ │ └── Wallet.md
│ ├── dw_extensions.applepay
│ │ ├── ApplePayHookResult.md
│ │ └── ApplePayHooks.md
│ ├── dw_extensions.facebook
│ │ ├── FacebookFeedHooks.md
│ │ └── FacebookProduct.md
│ ├── dw_extensions.paymentrequest
│ │ ├── PaymentRequestHookResult.md
│ │ └── PaymentRequestHooks.md
│ ├── dw_extensions.payments
│ │ ├── SalesforceBancontactPaymentDetails.md
│ │ ├── SalesforceCardPaymentDetails.md
│ │ ├── SalesforceEpsPaymentDetails.md
│ │ ├── SalesforceIdealPaymentDetails.md
│ │ ├── SalesforceKlarnaPaymentDetails.md
│ │ ├── SalesforcePaymentDetails.md
│ │ ├── SalesforcePaymentIntent.md
│ │ ├── SalesforcePaymentMethod.md
│ │ ├── SalesforcePaymentRequest.md
│ │ ├── SalesforcePaymentsHooks.md
│ │ ├── SalesforcePaymentsMgr.md
│ │ ├── SalesforcePaymentsSiteConfiguration.md
│ │ ├── SalesforcePayPalOrder.md
│ │ ├── SalesforcePayPalOrderAddress.md
│ │ ├── SalesforcePayPalOrderPayer.md
│ │ ├── SalesforcePayPalPaymentDetails.md
│ │ ├── SalesforceSepaDebitPaymentDetails.md
│ │ └── SalesforceVenmoPaymentDetails.md
│ ├── dw_extensions.pinterest
│ │ ├── PinterestAvailability.md
│ │ ├── PinterestFeedHooks.md
│ │ ├── PinterestOrder.md
│ │ ├── PinterestOrderHooks.md
│ │ └── PinterestProduct.md
│ ├── dw_io
│ │ ├── CSVStreamReader.md
│ │ ├── CSVStreamWriter.md
│ │ ├── File.md
│ │ ├── FileReader.md
│ │ ├── FileWriter.md
│ │ ├── InputStream.md
│ │ ├── OutputStream.md
│ │ ├── PrintWriter.md
│ │ ├── RandomAccessFileReader.md
│ │ ├── Reader.md
│ │ ├── StringWriter.md
│ │ ├── Writer.md
│ │ ├── XMLIndentingStreamWriter.md
│ │ ├── XMLStreamConstants.md
│ │ ├── XMLStreamReader.md
│ │ └── XMLStreamWriter.md
│ ├── dw_job
│ │ ├── JobExecution.md
│ │ └── JobStepExecution.md
│ ├── dw_net
│ │ ├── FTPClient.md
│ │ ├── FTPFileInfo.md
│ │ ├── HTTPClient.md
│ │ ├── HTTPRequestPart.md
│ │ ├── Mail.md
│ │ ├── SFTPClient.md
│ │ ├── SFTPFileInfo.md
│ │ ├── WebDAVClient.md
│ │ └── WebDAVFileInfo.md
│ ├── dw_object
│ │ ├── ActiveData.md
│ │ ├── CustomAttributes.md
│ │ ├── CustomObject.md
│ │ ├── CustomObjectMgr.md
│ │ ├── Extensible.md
│ │ ├── ExtensibleObject.md
│ │ ├── Note.md
│ │ ├── ObjectAttributeDefinition.md
│ │ ├── ObjectAttributeGroup.md
│ │ ├── ObjectAttributeValueDefinition.md
│ │ ├── ObjectTypeDefinition.md
│ │ ├── PersistentObject.md
│ │ ├── SimpleExtensible.md
│ │ └── SystemObjectMgr.md
│ ├── dw_order
│ │ ├── AbstractItem.md
│ │ ├── AbstractItemCtnr.md
│ │ ├── Appeasement.md
│ │ ├── AppeasementItem.md
│ │ ├── Basket.md
│ │ ├── BasketMgr.md
│ │ ├── BonusDiscountLineItem.md
│ │ ├── CouponLineItem.md
│ │ ├── CreateAgentBasketLimitExceededException.md
│ │ ├── CreateBasketFromOrderException.md
│ │ ├── CreateCouponLineItemException.md
│ │ ├── CreateOrderException.md
│ │ ├── CreateTemporaryBasketLimitExceededException.md
│ │ ├── GiftCertificate.md
│ │ ├── GiftCertificateLineItem.md
│ │ ├── GiftCertificateMgr.md
│ │ ├── GiftCertificateStatusCodes.md
│ │ ├── Invoice.md
│ │ ├── InvoiceItem.md
│ │ ├── LineItem.md
│ │ ├── LineItemCtnr.md
│ │ ├── Order.md
│ │ ├── OrderAddress.md
│ │ ├── OrderItem.md
│ │ ├── OrderMgr.md
│ │ ├── OrderPaymentInstrument.md
│ │ ├── OrderProcessStatusCodes.md
│ │ ├── PaymentCard.md
│ │ ├── PaymentInstrument.md
│ │ ├── PaymentMethod.md
│ │ ├── PaymentMgr.md
│ │ ├── PaymentProcessor.md
│ │ ├── PaymentStatusCodes.md
│ │ ├── PaymentTransaction.md
│ │ ├── PriceAdjustment.md
│ │ ├── PriceAdjustmentLimitTypes.md
│ │ ├── ProductLineItem.md
│ │ ├── ProductShippingCost.md
│ │ ├── ProductShippingLineItem.md
│ │ ├── ProductShippingModel.md
│ │ ├── Return.md
│ │ ├── ReturnCase.md
│ │ ├── ReturnCaseItem.md
│ │ ├── ReturnItem.md
│ │ ├── Shipment.md
│ │ ├── ShipmentShippingCost.md
│ │ ├── ShipmentShippingModel.md
│ │ ├── ShippingLineItem.md
│ │ ├── ShippingLocation.md
│ │ ├── ShippingMethod.md
│ │ ├── ShippingMgr.md
│ │ ├── ShippingOrder.md
│ │ ├── ShippingOrderItem.md
│ │ ├── SumItem.md
│ │ ├── TaxGroup.md
│ │ ├── TaxItem.md
│ │ ├── TaxMgr.md
│ │ ├── TrackingInfo.md
│ │ └── TrackingRef.md
│ ├── dw_order.hooks
│ │ ├── CalculateHooks.md
│ │ ├── OrderHooks.md
│ │ ├── PaymentHooks.md
│ │ ├── ReturnHooks.md
│ │ └── ShippingOrderHooks.md
│ ├── dw_rpc
│ │ ├── SOAPUtil.md
│ │ ├── Stub.md
│ │ └── WebReference.md
│ ├── dw_suggest
│ │ ├── BrandSuggestions.md
│ │ ├── CategorySuggestions.md
│ │ ├── ContentSuggestions.md
│ │ ├── CustomSuggestions.md
│ │ ├── ProductSuggestions.md
│ │ ├── SearchPhraseSuggestions.md
│ │ ├── SuggestedCategory.md
│ │ ├── SuggestedContent.md
│ │ ├── SuggestedPhrase.md
│ │ ├── SuggestedProduct.md
│ │ ├── SuggestedTerm.md
│ │ ├── SuggestedTerms.md
│ │ ├── Suggestions.md
│ │ └── SuggestModel.md
│ ├── dw_svc
│ │ ├── FTPService.md
│ │ ├── FTPServiceDefinition.md
│ │ ├── HTTPFormService.md
│ │ ├── HTTPFormServiceDefinition.md
│ │ ├── HTTPService.md
│ │ ├── HTTPServiceDefinition.md
│ │ ├── LocalServiceRegistry.md
│ │ ├── Result.md
│ │ ├── Service.md
│ │ ├── ServiceCallback.md
│ │ ├── ServiceConfig.md
│ │ ├── ServiceCredential.md
│ │ ├── ServiceDefinition.md
│ │ ├── ServiceProfile.md
│ │ ├── ServiceRegistry.md
│ │ ├── SOAPService.md
│ │ └── SOAPServiceDefinition.md
│ ├── dw_system
│ │ ├── AgentUserStatusCodes.md
│ │ ├── Cache.md
│ │ ├── CacheMgr.md
│ │ ├── HookMgr.md
│ │ ├── InternalObject.md
│ │ ├── JobProcessMonitor.md
│ │ ├── Log.md
│ │ ├── Logger.md
│ │ ├── LogNDC.md
│ │ ├── OrganizationPreferences.md
│ │ ├── Pipeline.md
│ │ ├── PipelineDictionary.md
│ │ ├── RemoteInclude.md
│ │ ├── Request.md
│ │ ├── RequestHooks.md
│ │ ├── Response.md
│ │ ├── RESTErrorResponse.md
│ │ ├── RESTResponseMgr.md
│ │ ├── RESTSuccessResponse.md
│ │ ├── SearchStatus.md
│ │ ├── Session.md
│ │ ├── Site.md
│ │ ├── SitePreferences.md
│ │ ├── Status.md
│ │ ├── StatusItem.md
│ │ ├── System.md
│ │ └── Transaction.md
│ ├── dw_util
│ │ ├── ArrayList.md
│ │ ├── Assert.md
│ │ ├── BigInteger.md
│ │ ├── Bytes.md
│ │ ├── Calendar.md
│ │ ├── Collection.md
│ │ ├── Currency.md
│ │ ├── DateUtils.md
│ │ ├── Decimal.md
│ │ ├── FilteringCollection.md
│ │ ├── Geolocation.md
│ │ ├── HashMap.md
│ │ ├── HashSet.md
│ │ ├── Iterator.md
│ │ ├── LinkedHashMap.md
│ │ ├── LinkedHashSet.md
│ │ ├── List.md
│ │ ├── Locale.md
│ │ ├── Map.md
│ │ ├── MapEntry.md
│ │ ├── MappingKey.md
│ │ ├── MappingMgr.md
│ │ ├── PropertyComparator.md
│ │ ├── SecureEncoder.md
│ │ ├── SecureFilter.md
│ │ ├── SeekableIterator.md
│ │ ├── Set.md
│ │ ├── SortedMap.md
│ │ ├── SortedSet.md
│ │ ├── StringUtils.md
│ │ ├── Template.md
│ │ └── UUIDUtils.md
│ ├── dw_value
│ │ ├── EnumValue.md
│ │ ├── MimeEncodedText.md
│ │ ├── Money.md
│ │ └── Quantity.md
│ ├── dw_web
│ │ ├── ClickStream.md
│ │ ├── ClickStreamEntry.md
│ │ ├── Cookie.md
│ │ ├── Cookies.md
│ │ ├── CSRFProtection.md
│ │ ├── Form.md
│ │ ├── FormAction.md
│ │ ├── FormElement.md
│ │ ├── FormElementValidationResult.md
│ │ ├── FormField.md
│ │ ├── FormFieldOption.md
│ │ ├── FormFieldOptions.md
│ │ ├── FormGroup.md
│ │ ├── FormList.md
│ │ ├── FormListItem.md
│ │ ├── Forms.md
│ │ ├── HttpParameter.md
│ │ ├── HttpParameterMap.md
│ │ ├── LoopIterator.md
│ │ ├── PageMetaData.md
│ │ ├── PageMetaTag.md
│ │ ├── PagingModel.md
│ │ ├── Resource.md
│ │ ├── URL.md
│ │ ├── URLAction.md
│ │ ├── URLParameter.md
│ │ ├── URLRedirect.md
│ │ ├── URLRedirectMgr.md
│ │ └── URLUtils.md
│ ├── sfra
│ │ ├── account.md
│ │ ├── address.md
│ │ ├── billing.md
│ │ ├── cart.md
│ │ ├── categories.md
│ │ ├── content.md
│ │ ├── locale.md
│ │ ├── order.md
│ │ ├── payment.md
│ │ ├── price-default.md
│ │ ├── price-range.md
│ │ ├── price-tiered.md
│ │ ├── product-bundle.md
│ │ ├── product-full.md
│ │ ├── product-line-items.md
│ │ ├── product-search.md
│ │ ├── product-tile.md
│ │ ├── querystring.md
│ │ ├── render.md
│ │ ├── request.md
│ │ ├── response.md
│ │ ├── server.md
│ │ ├── shipping.md
│ │ ├── store.md
│ │ ├── stores.md
│ │ └── totals.md
│ └── TopLevel
│ ├── APIException.md
│ ├── arguments.md
│ ├── Array.md
│ ├── ArrayBuffer.md
│ ├── BigInt.md
│ ├── Boolean.md
│ ├── ConversionError.md
│ ├── DataView.md
│ ├── Date.md
│ ├── Error.md
│ ├── ES6Iterator.md
│ ├── EvalError.md
│ ├── Fault.md
│ ├── Float32Array.md
│ ├── Float64Array.md
│ ├── Function.md
│ ├── Generator.md
│ ├── global.md
│ ├── Int16Array.md
│ ├── Int32Array.md
│ ├── Int8Array.md
│ ├── InternalError.md
│ ├── IOError.md
│ ├── Iterable.md
│ ├── Iterator.md
│ ├── JSON.md
│ ├── Map.md
│ ├── Math.md
│ ├── Module.md
│ ├── Namespace.md
│ ├── Number.md
│ ├── Object.md
│ ├── QName.md
│ ├── RangeError.md
│ ├── ReferenceError.md
│ ├── RegExp.md
│ ├── Set.md
│ ├── StopIteration.md
│ ├── String.md
│ ├── Symbol.md
│ ├── SyntaxError.md
│ ├── SystemError.md
│ ├── TypeError.md
│ ├── Uint16Array.md
│ ├── Uint32Array.md
│ ├── Uint8Array.md
│ ├── Uint8ClampedArray.md
│ ├── URIError.md
│ ├── WeakMap.md
│ ├── WeakSet.md
│ ├── XML.md
│ ├── XMLList.md
│ └── XMLStreamError.md
├── docs-site
│ ├── .gitignore
│ ├── App.tsx
│ ├── components
│ │ ├── Badge.tsx
│ │ ├── BreadcrumbSchema.tsx
│ │ ├── CodeBlock.tsx
│ │ ├── Collapsible.tsx
│ │ ├── ConfigBuilder.tsx
│ │ ├── ConfigHero.tsx
│ │ ├── ConfigModeTabs.tsx
│ │ ├── icons.tsx
│ │ ├── Layout.tsx
│ │ ├── LightCodeContainer.tsx
│ │ ├── NewcomerCTA.tsx
│ │ ├── NextStepsStrip.tsx
│ │ ├── OnThisPage.tsx
│ │ ├── Search.tsx
│ │ ├── SEO.tsx
│ │ ├── Sidebar.tsx
│ │ ├── StructuredData.tsx
│ │ ├── ToolCard.tsx
│ │ ├── ToolFilters.tsx
│ │ ├── Typography.tsx
│ │ └── VersionBadge.tsx
│ ├── constants.tsx
│ ├── index.html
│ ├── main.tsx
│ ├── metadata.json
│ ├── package-lock.json
│ ├── package.json
│ ├── pages
│ │ ├── AIInterfacesPage.tsx
│ │ ├── ConfigurationPage.tsx
│ │ ├── DevelopmentPage.tsx
│ │ ├── ExamplesPage.tsx
│ │ ├── FeaturesPage.tsx
│ │ ├── HomePage.tsx
│ │ ├── SecurityPage.tsx
│ │ ├── ToolsPage.tsx
│ │ └── TroubleshootingPage.tsx
│ ├── postcss.config.js
│ ├── public
│ │ ├── .well-known
│ │ │ └── security.txt
│ │ ├── 404.html
│ │ ├── android-chrome-192x192.png
│ │ ├── android-chrome-512x512.png
│ │ ├── apple-touch-icon.png
│ │ ├── explain-product-pricing-methods-no-mcp.png
│ │ ├── explain-product-pricing-methods.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ ├── favicon.ico
│ │ ├── llms.txt
│ │ ├── robots.txt
│ │ ├── site.webmanifest
│ │ └── sitemap.xml
│ ├── README.md
│ ├── scripts
│ │ ├── generate-search-index.js
│ │ ├── generate-sitemap.js
│ │ └── search-dev.js
│ ├── src
│ │ └── styles
│ │ ├── input.css
│ │ └── prism-theme.css
│ ├── tailwind.config.js
│ ├── tsconfig.json
│ ├── types.ts
│ ├── utils
│ │ ├── search.ts
│ │ └── toolsData.ts
│ └── vite.config.ts
├── eslint.config.js
├── jest.config.js
├── LICENSE
├── package-lock.json
├── package.json
├── README.md
├── scripts
│ └── convert-docs.js
├── SECURITY.md
├── server.json
├── src
│ ├── clients
│ │ ├── base
│ │ │ ├── http-client.ts
│ │ │ ├── oauth-token.ts
│ │ │ └── ocapi-auth-client.ts
│ │ ├── best-practices-client.ts
│ │ ├── cartridge-generation-client.ts
│ │ ├── docs
│ │ │ ├── class-content-parser.ts
│ │ │ ├── class-name-resolver.ts
│ │ │ ├── documentation-scanner.ts
│ │ │ ├── index.ts
│ │ │ └── referenced-types-extractor.ts
│ │ ├── docs-client.ts
│ │ ├── log-client.ts
│ │ ├── logs
│ │ │ ├── index.ts
│ │ │ ├── log-analyzer.ts
│ │ │ ├── log-client.ts
│ │ │ ├── log-constants.ts
│ │ │ ├── log-file-discovery.ts
│ │ │ ├── log-file-reader.ts
│ │ │ ├── log-formatter.ts
│ │ │ ├── log-processor.ts
│ │ │ ├── log-types.ts
│ │ │ └── webdav-client-manager.ts
│ │ ├── ocapi
│ │ │ ├── code-versions-client.ts
│ │ │ ├── site-preferences-client.ts
│ │ │ └── system-objects-client.ts
│ │ ├── ocapi-client.ts
│ │ └── sfra-client.ts
│ ├── config
│ │ ├── configuration-factory.ts
│ │ └── dw-json-loader.ts
│ ├── core
│ │ ├── handlers
│ │ │ ├── abstract-log-tool-handler.ts
│ │ │ ├── base-handler.ts
│ │ │ ├── best-practices-handler.ts
│ │ │ ├── cartridge-handler.ts
│ │ │ ├── client-factory.ts
│ │ │ ├── code-version-handler.ts
│ │ │ ├── docs-handler.ts
│ │ │ ├── job-log-handler.ts
│ │ │ ├── job-log-tool-config.ts
│ │ │ ├── log-handler.ts
│ │ │ ├── log-tool-config.ts
│ │ │ ├── sfra-handler.ts
│ │ │ ├── system-object-handler.ts
│ │ │ └── validation-helpers.ts
│ │ ├── server.ts
│ │ └── tool-definitions.ts
│ ├── index.ts
│ ├── main.ts
│ ├── services
│ │ ├── file-system-service.ts
│ │ ├── index.ts
│ │ └── path-service.ts
│ ├── tool-configs
│ │ ├── best-practices-tool-config.ts
│ │ ├── cartridge-tool-config.ts
│ │ ├── code-version-tool-config.ts
│ │ ├── docs-tool-config.ts
│ │ ├── job-log-tool-config.ts
│ │ ├── log-tool-config.ts
│ │ ├── sfra-tool-config.ts
│ │ └── system-object-tool-config.ts
│ ├── types
│ │ └── types.ts
│ └── utils
│ ├── cache.ts
│ ├── job-log-tool-config.ts
│ ├── job-log-utils.ts
│ ├── log-cache.ts
│ ├── log-tool-config.ts
│ ├── log-tool-constants.ts
│ ├── log-tool-utils.ts
│ ├── logger.ts
│ ├── ocapi-url-builder.ts
│ ├── path-resolver.ts
│ ├── query-builder.ts
│ ├── utils.ts
│ └── validator.ts
├── tests
│ ├── __mocks__
│ │ ├── docs-client.ts
│ │ ├── src
│ │ │ └── clients
│ │ │ └── base
│ │ │ └── http-client.js
│ │ └── webdav.js
│ ├── base-handler.test.ts
│ ├── base-http-client.test.ts
│ ├── best-practices-handler.test.ts
│ ├── cache.test.ts
│ ├── cartridge-handler.test.ts
│ ├── class-content-parser.test.ts
│ ├── class-name-resolver.test.ts
│ ├── client-factory.test.ts
│ ├── code-version-handler.test.ts
│ ├── code-versions-client.test.ts
│ ├── config.test.ts
│ ├── configuration-factory.test.ts
│ ├── docs-handler.test.ts
│ ├── documentation-scanner.test.ts
│ ├── file-system-service.test.ts
│ ├── job-log-handler.test.ts
│ ├── job-log-utils.test.ts
│ ├── log-client.test.ts
│ ├── log-handler.test.ts
│ ├── log-processor.test.ts
│ ├── logger.test.ts
│ ├── mcp
│ │ ├── AGENTS.md
│ │ ├── node
│ │ │ ├── activate-code-version-advanced.full-mode.programmatic.test.js
│ │ │ ├── code-versions.full-mode.programmatic.test.js
│ │ │ ├── generate-cartridge-structure.docs-only.programmatic.test.js
│ │ │ ├── get-available-best-practice-guides.docs-only.programmatic.test.js
│ │ │ ├── get-available-sfra-documents.programmatic.test.js
│ │ │ ├── get-best-practice-guide.docs-only.programmatic.test.js
│ │ │ ├── get-hook-reference.docs-only.programmatic.test.js
│ │ │ ├── get-job-execution-summary.full-mode.programmatic.test.js
│ │ │ ├── get-job-log-entries.full-mode.programmatic.test.js
│ │ │ ├── get-latest-debug.full-mode.programmatic.test.js
│ │ │ ├── get-latest-error.full-mode.programmatic.test.js
│ │ │ ├── get-latest-info.full-mode.programmatic.test.js
│ │ │ ├── get-latest-job-log-files.full-mode.programmatic.test.js
│ │ │ ├── get-latest-warn.full-mode.programmatic.test.js
│ │ │ ├── get-log-file-contents.full-mode.programmatic.test.js
│ │ │ ├── get-sfcc-class-documentation.docs-only.programmatic.test.js
│ │ │ ├── get-sfcc-class-info.docs-only.programmatic.test.js
│ │ │ ├── get-sfra-categories.docs-only.programmatic.test.js
│ │ │ ├── get-sfra-document.programmatic.test.js
│ │ │ ├── get-sfra-documents-by-category.docs-only.programmatic.test.js
│ │ │ ├── get-system-object-definition.full-mode.programmatic.test.js
│ │ │ ├── get-system-object-definitions.docs-only.programmatic.test.js
│ │ │ ├── get-system-object-definitions.full-mode.programmatic.test.js
│ │ │ ├── list-log-files.full-mode.programmatic.test.js
│ │ │ ├── list-sfcc-classes.docs-only.programmatic.test.js
│ │ │ ├── search-best-practices.docs-only.programmatic.test.js
│ │ │ ├── search-custom-object-attribute-definitions.full-mode.programmatic.test.js
│ │ │ ├── search-job-logs-by-name.full-mode.programmatic.test.js
│ │ │ ├── search-job-logs.full-mode.programmatic.test.js
│ │ │ ├── search-logs.full-mode.programmatic.test.js
│ │ │ ├── search-sfcc-classes.docs-only.programmatic.test.js
│ │ │ ├── search-sfcc-methods.docs-only.programmatic.test.js
│ │ │ ├── search-sfra-documentation.docs-only.programmatic.test.js
│ │ │ ├── search-site-preferences.full-mode.programmatic.test.js
│ │ │ ├── search-system-object-attribute-definitions.full-mode.programmatic.test.js
│ │ │ ├── search-system-object-attribute-groups.full-mode.programmatic.test.js
│ │ │ ├── summarize-logs.full-mode.programmatic.test.js
│ │ │ ├── tools.docs-only.programmatic.test.js
│ │ │ └── tools.full-mode.programmatic.test.js
│ │ ├── README.md
│ │ ├── test-fixtures
│ │ │ └── dw.json
│ │ └── yaml
│ │ ├── activate-code-version.docs-only.test.mcp.yml
│ │ ├── activate-code-version.full-mode.test.mcp.yml
│ │ ├── get_latest_error.test.mcp.yml
│ │ ├── get-available-best-practice-guides.docs-only.test.mcp.yml
│ │ ├── get-available-best-practice-guides.full-mode.test.mcp.yml
│ │ ├── get-available-sfra-documents.docs-only.test.mcp.yml
│ │ ├── get-available-sfra-documents.full-mode.test.mcp.yml
│ │ ├── get-best-practice-guide.docs-only.test.mcp.yml
│ │ ├── get-best-practice-guide.full-mode.test.mcp.yml
│ │ ├── get-code-versions.docs-only.test.mcp.yml
│ │ ├── get-code-versions.full-mode.test.mcp.yml
│ │ ├── get-hook-reference.docs-only.test.mcp.yml
│ │ ├── get-hook-reference.full-mode.test.mcp.yml
│ │ ├── get-job-execution-summary.full-mode.test.mcp.yml
│ │ ├── get-job-log-entries.full-mode.test.mcp.yml
│ │ ├── get-latest-debug.full-mode.test.mcp.yml
│ │ ├── get-latest-error.full-mode.test.mcp.yml
│ │ ├── get-latest-info.full-mode.test.mcp.yml
│ │ ├── get-latest-job-log-files.full-mode.test.mcp.yml
│ │ ├── get-latest-warn.full-mode.test.mcp.yml
│ │ ├── get-log-file-contents.full-mode.test.mcp.yml
│ │ ├── get-sfcc-class-documentation.docs-only.test.mcp.yml
│ │ ├── get-sfcc-class-documentation.full-mode.test.mcp.yml
│ │ ├── get-sfcc-class-info.docs-only.test.mcp.yml
│ │ ├── get-sfcc-class-info.full-mode.test.mcp.yml
│ │ ├── get-sfra-categories.docs-only.test.mcp.yml
│ │ ├── get-sfra-categories.full-mode.test.mcp.yml
│ │ ├── get-sfra-document.docs-only.test.mcp.yml
│ │ ├── get-sfra-document.full-mode.test.mcp.yml
│ │ ├── get-sfra-documents-by-category.docs-only.test.mcp.yml
│ │ ├── get-sfra-documents-by-category.full-mode.test.mcp.yml
│ │ ├── get-system-object-definition.docs-only.test.mcp.yml
│ │ ├── get-system-object-definition.full-mode.test.mcp.yml
│ │ ├── get-system-object-definitions.docs-only.test.mcp.yml
│ │ ├── get-system-object-definitions.full-mode.test.mcp.yml
│ │ ├── list-log-files.full-mode.test.mcp.yml
│ │ ├── list-sfcc-classes.docs-only.test.mcp.yml
│ │ ├── list-sfcc-classes.full-mode.test.mcp.yml
│ │ ├── search-best-practices.docs-only.test.mcp.yml
│ │ ├── search-best-practices.full-mode.test.mcp.yml
│ │ ├── search-custom-object-attribute-definitions.docs-only.test.mcp.yml
│ │ ├── search-custom-object-attribute-definitions.test.mcp.yml
│ │ ├── search-job-logs-by-name.full-mode.test.mcp.yml
│ │ ├── search-job-logs.full-mode.test.mcp.yml
│ │ ├── search-logs.full-mode.test.mcp.yml
│ │ ├── search-sfcc-classes.docs-only.test.mcp.yml
│ │ ├── search-sfcc-classes.full-mode.test.mcp.yml
│ │ ├── search-sfcc-methods.docs-only.test.mcp.yml
│ │ ├── search-sfcc-methods.full-mode.test.mcp.yml
│ │ ├── search-sfra-documentation.docs-only.test.mcp.yml
│ │ ├── search-sfra-documentation.full-mode.test.mcp.yml
│ │ ├── search-site-preferences.docs-only.test.mcp.yml
│ │ ├── search-site-preferences.full-mode.test.mcp.yml
│ │ ├── search-system-object-attribute-definitions.docs-only.test.mcp.yml
│ │ ├── search-system-object-attribute-definitions.full-mode.test.mcp.yml
│ │ ├── search-system-object-attribute-groups.docs-only.test.mcp.yml
│ │ ├── search-system-object-attribute-groups.full-mode.test.mcp.yml
│ │ ├── summarize-logs.full-mode.test.mcp.yml
│ │ ├── tools.docs-only.test.mcp.yml
│ │ └── tools.full-mode.test.mcp.yml
│ ├── oauth-token.test.ts
│ ├── ocapi-auth-client.test.ts
│ ├── ocapi-client.test.ts
│ ├── path-service.test.ts
│ ├── query-builder.test.ts
│ ├── referenced-types-extractor.test.ts
│ ├── servers
│ │ ├── sfcc-mock-server
│ │ │ ├── mock-data
│ │ │ │ └── ocapi
│ │ │ │ ├── code-versions.json
│ │ │ │ ├── custom-object-attributes-customapi.json
│ │ │ │ ├── custom-object-attributes-globalsettings.json
│ │ │ │ ├── custom-object-attributes-versionhistory.json
│ │ │ │ ├── site-preferences-ccv.json
│ │ │ │ ├── site-preferences-fastforward.json
│ │ │ │ ├── site-preferences-sfra.json
│ │ │ │ ├── site-preferences-storefront.json
│ │ │ │ ├── site-preferences-system.json
│ │ │ │ ├── system-object-attribute-groups-campaign.json
│ │ │ │ ├── system-object-attribute-groups-category.json
│ │ │ │ ├── system-object-attribute-groups-order.json
│ │ │ │ ├── system-object-attribute-groups-product.json
│ │ │ │ ├── system-object-attribute-groups-sitepreferences.json
│ │ │ │ ├── system-object-attributes-customeraddress.json
│ │ │ │ ├── system-object-attributes-product-expanded.json
│ │ │ │ ├── system-object-attributes-product.json
│ │ │ │ ├── system-object-definition-category.json
│ │ │ │ ├── system-object-definition-customer.json
│ │ │ │ ├── system-object-definition-customeraddress.json
│ │ │ │ ├── system-object-definition-order.json
│ │ │ │ ├── system-object-definition-product.json
│ │ │ │ ├── system-object-definitions-old.json
│ │ │ │ └── system-object-definitions.json
│ │ │ ├── package-lock.json
│ │ │ ├── package.json
│ │ │ ├── README.md
│ │ │ ├── scripts
│ │ │ │ └── setup-logs.js
│ │ │ ├── server.js
│ │ │ └── src
│ │ │ ├── app.js
│ │ │ ├── config
│ │ │ │ └── server-config.js
│ │ │ ├── middleware
│ │ │ │ ├── auth.js
│ │ │ │ ├── cors.js
│ │ │ │ └── logging.js
│ │ │ ├── routes
│ │ │ │ ├── ocapi
│ │ │ │ │ ├── code-versions-handler.js
│ │ │ │ │ ├── oauth-handler.js
│ │ │ │ │ ├── ocapi-error-utils.js
│ │ │ │ │ ├── ocapi-utils.js
│ │ │ │ │ ├── site-preferences-handler.js
│ │ │ │ │ └── system-objects-handler.js
│ │ │ │ ├── ocapi.js
│ │ │ │ └── webdav.js
│ │ │ └── utils
│ │ │ ├── mock-data-loader.js
│ │ │ └── webdav-xml.js
│ │ └── sfcc-mock-server-manager.ts
│ ├── sfcc-mock-server.test.ts
│ ├── site-preferences-client.test.ts
│ ├── system-objects-client.test.ts
│ ├── utils.test.ts
│ ├── validation-helpers.test.ts
│ └── validator.test.ts
├── tsconfig.json
└── tsconfig.test.json
```
# Files
--------------------------------------------------------------------------------
/tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml:
--------------------------------------------------------------------------------
```yaml
1 | # ==================================================================================
2 | # SFCC MCP Server - get_sfcc_class_documentation Tool YAML Tests
3 | # Comprehensive testing for SFCC class documentation retrieval functionality
4 | # Tests both successful responses and error handling scenarios
5 | #
6 | # Quick Test Commands:
7 | # aegis "tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml" --config "aegis.config.docs-only.json" --verbose
8 | # aegis "tests/mcp/yaml/get-sfcc-class-documentation.docs-only.test.mcp.yml" --config "aegis.config.docs-only.json" --debug --timing
9 | # aegis query get_sfcc_class_documentation '{"className": "dw.catalog.Product"}' --config "aegis.config.docs-only.json"
10 | # aegis query get_sfcc_class_documentation '{"className": "dw.order.Order"}' --config "aegis.config.docs-only.json"
11 | # ==================================================================================
12 | description: "SFCC MCP Server get_sfcc_class_documentation tool - comprehensive validation"
13 |
14 | # ==================================================================================
15 | # BASIC TOOL STRUCTURE VALIDATION
16 | # ==================================================================================
17 | tests:
18 | - it: "should list get_sfcc_class_documentation tool in available tools"
19 | request:
20 | jsonrpc: "2.0"
21 | id: "tool-available"
22 | method: "tools/list"
23 | params: {}
24 | expect:
25 | response:
26 | jsonrpc: "2.0"
27 | id: "tool-available"
28 | result:
29 | match:extractField: "tools.*.name"
30 | value: "match:arrayContains:get_sfcc_class_documentation"
31 | stderr: "toBeEmpty"
32 |
33 | - it: "should have get_sfcc_class_documentation in tools list with proper structure"
34 | request:
35 | jsonrpc: "2.0"
36 | id: "tool-metadata"
37 | method: "tools/list"
38 | params: {}
39 | expect:
40 | response:
41 | jsonrpc: "2.0"
42 | id: "tool-metadata"
43 | result:
44 | tools: "match:arrayContains:name:get_sfcc_class_documentation"
45 | stderr: "toBeEmpty"
46 |
47 | - it: "should have tool with meaningful description"
48 | request:
49 | jsonrpc: "2.0"
50 | id: "tool-description-quality"
51 | method: "tools/list"
52 | params: {}
53 | expect:
54 | response:
55 | jsonrpc: "2.0"
56 | id: "tool-description-quality"
57 | result:
58 | tools:
59 | match:arrayElements:
60 | match:partial:
61 | name: "match:type:string"
62 | description: "match:regex:.{20,}" # At least 20 characters
63 | stderr: "toBeEmpty"
64 |
65 | - it: "should have proper inputSchema structure for get_sfcc_class_documentation"
66 | request:
67 | jsonrpc: "2.0"
68 | id: "tool-schema-structure"
69 | method: "tools/list"
70 | params: {}
71 | expect:
72 | response:
73 | jsonrpc: "2.0"
74 | id: "tool-schema-structure"
75 | result:
76 | tools:
77 | match:arrayElements:
78 | match:partial:
79 | name: "match:type:string"
80 | inputSchema:
81 | type: "object"
82 | properties: "match:type:object"
83 | stderr: "toBeEmpty"
84 |
85 | # ==================================================================================
86 | # SUCCESSFUL EXECUTION TESTS - CORE CLASSES
87 | # ==================================================================================
88 |
89 | - it: "should execute with dw.catalog.Product class"
90 | request:
91 | jsonrpc: "2.0"
92 | id: "exec-product-basic"
93 | method: "tools/call"
94 | params:
95 | name: "get_sfcc_class_documentation"
96 | arguments:
97 | className: "dw.catalog.Product"
98 | expect:
99 | response:
100 | jsonrpc: "2.0"
101 | id: "exec-product-basic"
102 | result:
103 | content:
104 | - type: "text"
105 | text: "match:contains:## Package: dw.catalog"
106 | isError: false
107 | stderr: "toBeEmpty"
108 |
109 | - it: "should return complete documentation for dw.catalog.Product"
110 | request:
111 | jsonrpc: "2.0"
112 | id: "exec-product-complete"
113 | method: "tools/call"
114 | params:
115 | name: "get_sfcc_class_documentation"
116 | arguments:
117 | className: "dw.catalog.Product"
118 | expect:
119 | response:
120 | jsonrpc: "2.0"
121 | id: "exec-product-complete"
122 | result:
123 | content:
124 | - type: "text"
125 | text: "match:contains:# Class Product"
126 | isError: false
127 | stderr: "toBeEmpty"
128 |
129 | - it: "should include inheritance hierarchy in Product documentation"
130 | request:
131 | jsonrpc: "2.0"
132 | id: "exec-product-inheritance"
133 | method: "tools/call"
134 | params:
135 | name: "get_sfcc_class_documentation"
136 | arguments:
137 | className: "dw.catalog.Product"
138 | expect:
139 | response:
140 | jsonrpc: "2.0"
141 | id: "exec-product-inheritance"
142 | result:
143 | content:
144 | - type: "text"
145 | text: "match:contains:## Inheritance Hierarchy"
146 | isError: false
147 | stderr: "toBeEmpty"
148 |
149 | - it: "should include properties section in Product documentation"
150 | request:
151 | jsonrpc: "2.0"
152 | id: "exec-product-properties"
153 | method: "tools/call"
154 | params:
155 | name: "get_sfcc_class_documentation"
156 | arguments:
157 | className: "dw.catalog.Product"
158 | expect:
159 | response:
160 | jsonrpc: "2.0"
161 | id: "exec-product-properties"
162 | result:
163 | content:
164 | - type: "text"
165 | text: "match:contains:## Properties"
166 | isError: false
167 | stderr: "toBeEmpty"
168 |
169 | - it: "should include method summary in Product documentation"
170 | request:
171 | jsonrpc: "2.0"
172 | id: "exec-product-methods"
173 | method: "tools/call"
174 | params:
175 | name: "get_sfcc_class_documentation"
176 | arguments:
177 | className: "dw.catalog.Product"
178 | expect:
179 | response:
180 | jsonrpc: "2.0"
181 | id: "exec-product-methods"
182 | result:
183 | content:
184 | - type: "text"
185 | text: "match:contains:## Method Summary"
186 | isError: false
187 | stderr: "toBeEmpty"
188 |
189 | - it: "should include method details in Product documentation"
190 | request:
191 | jsonrpc: "2.0"
192 | id: "exec-product-method-details"
193 | method: "tools/call"
194 | params:
195 | name: "get_sfcc_class_documentation"
196 | arguments:
197 | className: "dw.catalog.Product"
198 | expect:
199 | response:
200 | jsonrpc: "2.0"
201 | id: "exec-product-method-details"
202 | result:
203 | content:
204 | - type: "text"
205 | text: "match:contains:## Method Details"
206 | isError: false
207 | stderr: "toBeEmpty"
208 |
209 | # ==================================================================================
210 | # CLASS NAME VARIATIONS TESTING
211 | # ==================================================================================
212 |
213 | - it: "should work with fully qualified class names"
214 | request:
215 | jsonrpc: "2.0"
216 | id: "exec-fqn"
217 | method: "tools/call"
218 | params:
219 | name: "get_sfcc_class_documentation"
220 | arguments:
221 | className: "dw.catalog.Product"
222 | expect:
223 | response:
224 | jsonrpc: "2.0"
225 | id: "exec-fqn"
226 | result:
227 | content:
228 | - type: "text"
229 | text: "match:contains:dw.catalog.Product"
230 | isError: false
231 | stderr: "toBeEmpty"
232 |
233 | - it: "should work with dw.order.Order class"
234 | request:
235 | jsonrpc: "2.0"
236 | id: "exec-order-class"
237 | method: "tools/call"
238 | params:
239 | name: "get_sfcc_class_documentation"
240 | arguments:
241 | className: "dw.order.Order"
242 | expect:
243 | response:
244 | jsonrpc: "2.0"
245 | id: "exec-order-class"
246 | result:
247 | content:
248 | - type: "text"
249 | text: "match:contains:## Package: dw.order"
250 | isError: false
251 | stderr: "toBeEmpty"
252 |
253 | - it: "should work with dw.system.Site class"
254 | request:
255 | jsonrpc: "2.0"
256 | id: "exec-site-class"
257 | method: "tools/call"
258 | params:
259 | name: "get_sfcc_class_documentation"
260 | arguments:
261 | className: "dw.system.Site"
262 | expect:
263 | response:
264 | jsonrpc: "2.0"
265 | id: "exec-site-class"
266 | result:
267 | content:
268 | - type: "text"
269 | text: "match:contains:# Class Site"
270 | isError: false
271 | stderr: "toBeEmpty"
272 |
273 | - it: "should work with dw.customer.Customer class"
274 | request:
275 | jsonrpc: "2.0"
276 | id: "exec-customer-class"
277 | method: "tools/call"
278 | params:
279 | name: "get_sfcc_class_documentation"
280 | arguments:
281 | className: "dw.customer.Customer"
282 | expect:
283 | response:
284 | jsonrpc: "2.0"
285 | id: "exec-customer-class"
286 | result:
287 | content:
288 | - type: "text"
289 | text: "match:contains:dw.customer.Customer"
290 | isError: false
291 | stderr: "toBeEmpty"
292 |
293 | # ==================================================================================
294 | # CORE SFCC CLASSES VALIDATION - TOP 15 MOST IMPORTANT CLASSES
295 | # ==================================================================================
296 |
297 | - it: "should return documentation for dw.catalog.Catalog class"
298 | request:
299 | jsonrpc: "2.0"
300 | id: "core-catalog"
301 | method: "tools/call"
302 | params:
303 | name: "get_sfcc_class_documentation"
304 | arguments:
305 | className: "dw.catalog.Catalog"
306 | expect:
307 | response:
308 | jsonrpc: "2.0"
309 | id: "core-catalog"
310 | result:
311 | content:
312 | - type: "text"
313 | text: "match:contains:# Class Catalog"
314 | isError: false
315 | stderr: "toBeEmpty"
316 |
317 | - it: "should return documentation for dw.catalog.Category class"
318 | request:
319 | jsonrpc: "2.0"
320 | id: "core-category"
321 | method: "tools/call"
322 | params:
323 | name: "get_sfcc_class_documentation"
324 | arguments:
325 | className: "dw.catalog.Category"
326 | expect:
327 | response:
328 | jsonrpc: "2.0"
329 | id: "core-category"
330 | result:
331 | content:
332 | - type: "text"
333 | text: "match:contains:## Package: dw.catalog"
334 | isError: false
335 | stderr: "toBeEmpty"
336 |
337 | - it: "should return documentation for dw.order.Basket class"
338 | request:
339 | jsonrpc: "2.0"
340 | id: "core-basket"
341 | method: "tools/call"
342 | params:
343 | name: "get_sfcc_class_documentation"
344 | arguments:
345 | className: "dw.order.Basket"
346 | expect:
347 | response:
348 | jsonrpc: "2.0"
349 | id: "core-basket"
350 | result:
351 | content:
352 | - type: "text"
353 | text: "match:contains:# Class Basket"
354 | isError: false
355 | stderr: "toBeEmpty"
356 |
357 | - it: "should return documentation for dw.order.ProductLineItem class"
358 | request:
359 | jsonrpc: "2.0"
360 | id: "core-lineitem"
361 | method: "tools/call"
362 | params:
363 | name: "get_sfcc_class_documentation"
364 | arguments:
365 | className: "dw.order.ProductLineItem"
366 | expect:
367 | response:
368 | jsonrpc: "2.0"
369 | id: "core-lineitem"
370 | result:
371 | content:
372 | - type: "text"
373 | text: "match:contains:ProductLineItem"
374 | isError: false
375 | stderr: "toBeEmpty"
376 |
377 | - it: "should return documentation for dw.customer.CustomerMgr class"
378 | request:
379 | jsonrpc: "2.0"
380 | id: "core-customermgr"
381 | method: "tools/call"
382 | params:
383 | name: "get_sfcc_class_documentation"
384 | arguments:
385 | className: "dw.customer.CustomerMgr"
386 | expect:
387 | response:
388 | jsonrpc: "2.0"
389 | id: "core-customermgr"
390 | result:
391 | content:
392 | - type: "text"
393 | text: "match:contains:CustomerMgr"
394 | isError: false
395 | stderr: "toBeEmpty"
396 |
397 | - it: "should return documentation for dw.system.Session class"
398 | request:
399 | jsonrpc: "2.0"
400 | id: "core-session"
401 | method: "tools/call"
402 | params:
403 | name: "get_sfcc_class_documentation"
404 | arguments:
405 | className: "dw.system.Session"
406 | expect:
407 | response:
408 | jsonrpc: "2.0"
409 | id: "core-session"
410 | result:
411 | content:
412 | - type: "text"
413 | text: "match:contains:# Class Session"
414 | isError: false
415 | stderr: "toBeEmpty"
416 |
417 | - it: "should return documentation for dw.system.Request class"
418 | request:
419 | jsonrpc: "2.0"
420 | id: "core-request"
421 | method: "tools/call"
422 | params:
423 | name: "get_sfcc_class_documentation"
424 | arguments:
425 | className: "dw.system.Request"
426 | expect:
427 | response:
428 | jsonrpc: "2.0"
429 | id: "core-request"
430 | result:
431 | content:
432 | - type: "text"
433 | text: "match:contains:## Package: dw.system"
434 | isError: false
435 | stderr: "toBeEmpty"
436 |
437 | - it: "should return documentation for dw.system.Response class"
438 | request:
439 | jsonrpc: "2.0"
440 | id: "core-response"
441 | method: "tools/call"
442 | params:
443 | name: "get_sfcc_class_documentation"
444 | arguments:
445 | className: "dw.system.Response"
446 | expect:
447 | response:
448 | jsonrpc: "2.0"
449 | id: "core-response"
450 | result:
451 | content:
452 | - type: "text"
453 | text: "match:contains:# Class Response"
454 | isError: false
455 | stderr: "toBeEmpty"
456 |
457 | - it: "should return documentation for dw.web.URLUtils class"
458 | request:
459 | jsonrpc: "2.0"
460 | id: "core-urlutils"
461 | method: "tools/call"
462 | params:
463 | name: "get_sfcc_class_documentation"
464 | arguments:
465 | className: "dw.web.URLUtils"
466 | expect:
467 | response:
468 | jsonrpc: "2.0"
469 | id: "core-urlutils"
470 | result:
471 | content:
472 | - type: "text"
473 | text: "match:contains:URLUtils"
474 | isError: false
475 | stderr: "toBeEmpty"
476 |
477 | - it: "should return documentation for dw.catalog.ProductMgr class"
478 | request:
479 | jsonrpc: "2.0"
480 | id: "core-productmgr"
481 | method: "tools/call"
482 | params:
483 | name: "get_sfcc_class_documentation"
484 | arguments:
485 | className: "dw.catalog.ProductMgr"
486 | expect:
487 | response:
488 | jsonrpc: "2.0"
489 | id: "core-productmgr"
490 | result:
491 | content:
492 | - type: "text"
493 | text: "match:contains:ProductMgr"
494 | isError: false
495 | stderr: "toBeEmpty"
496 |
497 | - it: "should return documentation for dw.order.OrderMgr class"
498 | request:
499 | jsonrpc: "2.0"
500 | id: "core-ordermgr"
501 | method: "tools/call"
502 | params:
503 | name: "get_sfcc_class_documentation"
504 | arguments:
505 | className: "dw.order.OrderMgr"
506 | expect:
507 | response:
508 | jsonrpc: "2.0"
509 | id: "core-ordermgr"
510 | result:
511 | content:
512 | - type: "text"
513 | text: "match:contains:# Class OrderMgr"
514 | isError: false
515 | stderr: "toBeEmpty"
516 |
517 | - it: "should return documentation for dw.order.BasketMgr class"
518 | request:
519 | jsonrpc: "2.0"
520 | id: "core-basketmgr"
521 | method: "tools/call"
522 | params:
523 | name: "get_sfcc_class_documentation"
524 | arguments:
525 | className: "dw.order.BasketMgr"
526 | expect:
527 | response:
528 | jsonrpc: "2.0"
529 | id: "core-basketmgr"
530 | result:
531 | content:
532 | - type: "text"
533 | text: "match:contains:BasketMgr"
534 | isError: false
535 | stderr: "toBeEmpty"
536 |
537 | - it: "should return documentation for dw.util.ArrayList class"
538 | request:
539 | jsonrpc: "2.0"
540 | id: "core-arraylist"
541 | method: "tools/call"
542 | params:
543 | name: "get_sfcc_class_documentation"
544 | arguments:
545 | className: "dw.util.ArrayList"
546 | expect:
547 | response:
548 | jsonrpc: "2.0"
549 | id: "core-arraylist"
550 | result:
551 | content:
552 | - type: "text"
553 | text: "match:contains:ArrayList"
554 | isError: false
555 | stderr: "toBeEmpty"
556 |
557 | - it: "should return documentation for dw.util.HashMap class"
558 | request:
559 | jsonrpc: "2.0"
560 | id: "core-hashmap"
561 | method: "tools/call"
562 | params:
563 | name: "get_sfcc_class_documentation"
564 | arguments:
565 | className: "dw.util.HashMap"
566 | expect:
567 | response:
568 | jsonrpc: "2.0"
569 | id: "core-hashmap"
570 | result:
571 | content:
572 | - type: "text"
573 | text: "match:contains:# Class HashMap"
574 | isError: false
575 | stderr: "toBeEmpty"
576 |
577 | - it: "should return documentation for dw.value.Money class"
578 | request:
579 | jsonrpc: "2.0"
580 | id: "core-money"
581 | method: "tools/call"
582 | params:
583 | name: "get_sfcc_class_documentation"
584 | arguments:
585 | className: "dw.value.Money"
586 | expect:
587 | response:
588 | jsonrpc: "2.0"
589 | id: "core-money"
590 | result:
591 | content:
592 | - type: "text"
593 | text: "match:contains:## Package: dw.value"
594 | isError: false
595 | stderr: "toBeEmpty"
596 |
597 | # ==================================================================================
598 | # EXTENDED SFCC CLASSES VALIDATION - 30 ADDITIONAL IMPORTANT CLASSES
599 | # ==================================================================================
600 |
601 | - it: "should return documentation for dw.content.ContentMgr class"
602 | request:
603 | jsonrpc: "2.0"
604 | id: "ext-contentmgr"
605 | method: "tools/call"
606 | params:
607 | name: "get_sfcc_class_documentation"
608 | arguments:
609 | className: "dw.content.ContentMgr"
610 | expect:
611 | response:
612 | jsonrpc: "2.0"
613 | id: "ext-contentmgr"
614 | result:
615 | content:
616 | - type: "text"
617 | text: "match:contains:ContentMgr"
618 | isError: false
619 | stderr: "toBeEmpty"
620 |
621 | - it: "should return documentation for dw.content.Content class"
622 | request:
623 | jsonrpc: "2.0"
624 | id: "ext-content"
625 | method: "tools/call"
626 | params:
627 | name: "get_sfcc_class_documentation"
628 | arguments:
629 | className: "dw.content.Content"
630 | expect:
631 | response:
632 | jsonrpc: "2.0"
633 | id: "ext-content"
634 | result:
635 | content:
636 | - type: "text"
637 | text: "match:contains:# Class Content"
638 | isError: false
639 | stderr: "toBeEmpty"
640 |
641 | - it: "should return documentation for dw.catalog.ProductSearchModel class"
642 | request:
643 | jsonrpc: "2.0"
644 | id: "ext-productsearch"
645 | method: "tools/call"
646 | params:
647 | name: "get_sfcc_class_documentation"
648 | arguments:
649 | className: "dw.catalog.ProductSearchModel"
650 | expect:
651 | response:
652 | jsonrpc: "2.0"
653 | id: "ext-productsearch"
654 | result:
655 | content:
656 | - type: "text"
657 | text: "match:contains:ProductSearchModel"
658 | isError: false
659 | stderr: "toBeEmpty"
660 |
661 | - it: "should return documentation for dw.catalog.SearchModel class"
662 | request:
663 | jsonrpc: "2.0"
664 | id: "ext-searchmodel"
665 | method: "tools/call"
666 | params:
667 | name: "get_sfcc_class_documentation"
668 | arguments:
669 | className: "dw.catalog.SearchModel"
670 | expect:
671 | response:
672 | jsonrpc: "2.0"
673 | id: "ext-searchmodel"
674 | result:
675 | content:
676 | - type: "text"
677 | text: "match:contains:SearchModel"
678 | isError: false
679 | stderr: "toBeEmpty"
680 |
681 | - it: "should return documentation for dw.catalog.PriceBook class"
682 | request:
683 | jsonrpc: "2.0"
684 | id: "ext-pricebook"
685 | method: "tools/call"
686 | params:
687 | name: "get_sfcc_class_documentation"
688 | arguments:
689 | className: "dw.catalog.PriceBook"
690 | expect:
691 | response:
692 | jsonrpc: "2.0"
693 | id: "ext-pricebook"
694 | result:
695 | content:
696 | - type: "text"
697 | text: "match:contains:PriceBook"
698 | isError: false
699 | stderr: "toBeEmpty"
700 |
701 | - it: "should return documentation for dw.catalog.Variant class"
702 | request:
703 | jsonrpc: "2.0"
704 | id: "ext-variant"
705 | method: "tools/call"
706 | params:
707 | name: "get_sfcc_class_documentation"
708 | arguments:
709 | className: "dw.catalog.Variant"
710 | expect:
711 | response:
712 | jsonrpc: "2.0"
713 | id: "ext-variant"
714 | result:
715 | content:
716 | - type: "text"
717 | text: "match:contains:# Class Variant"
718 | isError: false
719 | stderr: "toBeEmpty"
720 |
721 | - it: "should return documentation for dw.order.PaymentInstrument class"
722 | request:
723 | jsonrpc: "2.0"
724 | id: "ext-paymentinstrument"
725 | method: "tools/call"
726 | params:
727 | name: "get_sfcc_class_documentation"
728 | arguments:
729 | className: "dw.order.PaymentInstrument"
730 | expect:
731 | response:
732 | jsonrpc: "2.0"
733 | id: "ext-paymentinstrument"
734 | result:
735 | content:
736 | - type: "text"
737 | text: "match:contains:PaymentInstrument"
738 | isError: false
739 | stderr: "toBeEmpty"
740 |
741 | - it: "should return documentation for dw.order.Shipment class"
742 | request:
743 | jsonrpc: "2.0"
744 | id: "ext-shipment"
745 | method: "tools/call"
746 | params:
747 | name: "get_sfcc_class_documentation"
748 | arguments:
749 | className: "dw.order.Shipment"
750 | expect:
751 | response:
752 | jsonrpc: "2.0"
753 | id: "ext-shipment"
754 | result:
755 | content:
756 | - type: "text"
757 | text: "match:contains:# Class Shipment"
758 | isError: false
759 | stderr: "toBeEmpty"
760 |
761 | - it: "should return documentation for dw.order.ShippingMethod class"
762 | request:
763 | jsonrpc: "2.0"
764 | id: "ext-shippingmethod"
765 | method: "tools/call"
766 | params:
767 | name: "get_sfcc_class_documentation"
768 | arguments:
769 | className: "dw.order.ShippingMethod"
770 | expect:
771 | response:
772 | jsonrpc: "2.0"
773 | id: "ext-shippingmethod"
774 | result:
775 | content:
776 | - type: "text"
777 | text: "match:contains:ShippingMethod"
778 | isError: false
779 | stderr: "toBeEmpty"
780 |
781 | - it: "should return documentation for dw.customer.CustomerGroup class"
782 | request:
783 | jsonrpc: "2.0"
784 | id: "ext-customergroup"
785 | method: "tools/call"
786 | params:
787 | name: "get_sfcc_class_documentation"
788 | arguments:
789 | className: "dw.customer.CustomerGroup"
790 | expect:
791 | response:
792 | jsonrpc: "2.0"
793 | id: "ext-customergroup"
794 | result:
795 | content:
796 | - type: "text"
797 | text: "match:contains:CustomerGroup"
798 | isError: false
799 | stderr: "toBeEmpty"
800 |
801 | - it: "should return documentation for dw.customer.Profile class"
802 | request:
803 | jsonrpc: "2.0"
804 | id: "ext-profile"
805 | method: "tools/call"
806 | params:
807 | name: "get_sfcc_class_documentation"
808 | arguments:
809 | className: "dw.customer.Profile"
810 | expect:
811 | response:
812 | jsonrpc: "2.0"
813 | id: "ext-profile"
814 | result:
815 | content:
816 | - type: "text"
817 | text: "match:contains:# Class Profile"
818 | isError: false
819 | stderr: "toBeEmpty"
820 |
821 | - it: "should return documentation for dw.system.Logger class"
822 | request:
823 | jsonrpc: "2.0"
824 | id: "ext-logger"
825 | method: "tools/call"
826 | params:
827 | name: "get_sfcc_class_documentation"
828 | arguments:
829 | className: "dw.system.Logger"
830 | expect:
831 | response:
832 | jsonrpc: "2.0"
833 | id: "ext-logger"
834 | result:
835 | content:
836 | - type: "text"
837 | text: "match:contains:# Class Logger"
838 | isError: false
839 | stderr: "toBeEmpty"
840 |
841 | - it: "should return documentation for dw.system.Transaction class"
842 | request:
843 | jsonrpc: "2.0"
844 | id: "ext-transaction"
845 | method: "tools/call"
846 | params:
847 | name: "get_sfcc_class_documentation"
848 | arguments:
849 | className: "dw.system.Transaction"
850 | expect:
851 | response:
852 | jsonrpc: "2.0"
853 | id: "ext-transaction"
854 | result:
855 | content:
856 | - type: "text"
857 | text: "match:contains:Transaction"
858 | isError: false
859 | stderr: "toBeEmpty"
860 |
861 | - it: "should return documentation for dw.web.Cookie class"
862 | request:
863 | jsonrpc: "2.0"
864 | id: "ext-cookie"
865 | method: "tools/call"
866 | params:
867 | name: "get_sfcc_class_documentation"
868 | arguments:
869 | className: "dw.web.Cookie"
870 | expect:
871 | response:
872 | jsonrpc: "2.0"
873 | id: "ext-cookie"
874 | result:
875 | content:
876 | - type: "text"
877 | text: "match:contains:# Class Cookie"
878 | isError: false
879 | stderr: "toBeEmpty"
880 |
881 | - it: "should return documentation for dw.web.Resource class"
882 | request:
883 | jsonrpc: "2.0"
884 | id: "ext-resource"
885 | method: "tools/call"
886 | params:
887 | name: "get_sfcc_class_documentation"
888 | arguments:
889 | className: "dw.web.Resource"
890 | expect:
891 | response:
892 | jsonrpc: "2.0"
893 | id: "ext-resource"
894 | result:
895 | content:
896 | - type: "text"
897 | text: "match:contains:Resource"
898 | isError: false
899 | stderr: "toBeEmpty"
900 |
901 | - it: "should return documentation for dw.web.Form class"
902 | request:
903 | jsonrpc: "2.0"
904 | id: "ext-form"
905 | method: "tools/call"
906 | params:
907 | name: "get_sfcc_class_documentation"
908 | arguments:
909 | className: "dw.web.Form"
910 | expect:
911 | response:
912 | jsonrpc: "2.0"
913 | id: "ext-form"
914 | result:
915 | content:
916 | - type: "text"
917 | text: "match:contains:# Class Form"
918 | isError: false
919 | stderr: "toBeEmpty"
920 |
921 | - it: "should return documentation for dw.util.Collection class"
922 | request:
923 | jsonrpc: "2.0"
924 | id: "ext-collection"
925 | method: "tools/call"
926 | params:
927 | name: "get_sfcc_class_documentation"
928 | arguments:
929 | className: "dw.util.Collection"
930 | expect:
931 | response:
932 | jsonrpc: "2.0"
933 | id: "ext-collection"
934 | result:
935 | content:
936 | - type: "text"
937 | text: "match:contains:Collection"
938 | isError: false
939 | stderr: "toBeEmpty"
940 |
941 | - it: "should return documentation for dw.util.Iterator class"
942 | request:
943 | jsonrpc: "2.0"
944 | id: "ext-iterator"
945 | method: "tools/call"
946 | params:
947 | name: "get_sfcc_class_documentation"
948 | arguments:
949 | className: "dw.util.Iterator"
950 | expect:
951 | response:
952 | jsonrpc: "2.0"
953 | id: "ext-iterator"
954 | result:
955 | content:
956 | - type: "text"
957 | text: "match:contains:Iterator"
958 | isError: false
959 | stderr: "toBeEmpty"
960 |
961 | - it: "should return documentation for dw.util.Calendar class"
962 | request:
963 | jsonrpc: "2.0"
964 | id: "ext-calendar"
965 | method: "tools/call"
966 | params:
967 | name: "get_sfcc_class_documentation"
968 | arguments:
969 | className: "dw.util.Calendar"
970 | expect:
971 | response:
972 | jsonrpc: "2.0"
973 | id: "ext-calendar"
974 | result:
975 | content:
976 | - type: "text"
977 | text: "match:contains:# Class Calendar"
978 | isError: false
979 | stderr: "toBeEmpty"
980 |
981 | - it: "should return documentation for dw.value.Quantity class"
982 | request:
983 | jsonrpc: "2.0"
984 | id: "ext-quantity"
985 | method: "tools/call"
986 | params:
987 | name: "get_sfcc_class_documentation"
988 | arguments:
989 | className: "dw.value.Quantity"
990 | expect:
991 | response:
992 | jsonrpc: "2.0"
993 | id: "ext-quantity"
994 | result:
995 | content:
996 | - type: "text"
997 | text: "match:contains:Quantity"
998 | isError: false
999 | stderr: "toBeEmpty"
1000 |
1001 | - it: "should return documentation for dw.net.HTTPClient class"
1002 | request:
1003 | jsonrpc: "2.0"
1004 | id: "ext-httpclient"
1005 | method: "tools/call"
1006 | params:
1007 | name: "get_sfcc_class_documentation"
1008 | arguments:
1009 | className: "dw.net.HTTPClient"
1010 | expect:
1011 | response:
1012 | jsonrpc: "2.0"
1013 | id: "ext-httpclient"
1014 | result:
1015 | content:
1016 | - type: "text"
1017 | text: "match:contains:HTTPClient"
1018 | isError: false
1019 | stderr: "toBeEmpty"
1020 |
1021 | - it: "should return documentation for dw.net.Mail class"
1022 | request:
1023 | jsonrpc: "2.0"
1024 | id: "ext-mail"
1025 | method: "tools/call"
1026 | params:
1027 | name: "get_sfcc_class_documentation"
1028 | arguments:
1029 | className: "dw.net.Mail"
1030 | expect:
1031 | response:
1032 | jsonrpc: "2.0"
1033 | id: "ext-mail"
1034 | result:
1035 | content:
1036 | - type: "text"
1037 | text: "match:contains:# Class Mail"
1038 | isError: false
1039 | stderr: "toBeEmpty"
1040 |
1041 | - it: "should return documentation for dw.io.File class"
1042 | request:
1043 | jsonrpc: "2.0"
1044 | id: "ext-file"
1045 | method: "tools/call"
1046 | params:
1047 | name: "get_sfcc_class_documentation"
1048 | arguments:
1049 | className: "dw.io.File"
1050 | expect:
1051 | response:
1052 | jsonrpc: "2.0"
1053 | id: "ext-file"
1054 | result:
1055 | content:
1056 | - type: "text"
1057 | text: "match:contains:# Class File"
1058 | isError: false
1059 | stderr: "toBeEmpty"
1060 |
1061 | - it: "should return documentation for dw.io.Reader class"
1062 | request:
1063 | jsonrpc: "2.0"
1064 | id: "ext-reader"
1065 | method: "tools/call"
1066 | params:
1067 | name: "get_sfcc_class_documentation"
1068 | arguments:
1069 | className: "dw.io.Reader"
1070 | expect:
1071 | response:
1072 | jsonrpc: "2.0"
1073 | id: "ext-reader"
1074 | result:
1075 | content:
1076 | - type: "text"
1077 | text: "match:contains:Reader"
1078 | isError: false
1079 | stderr: "toBeEmpty"
1080 |
1081 | - it: "should return documentation for dw.svc.ServiceRegistry class"
1082 | request:
1083 | jsonrpc: "2.0"
1084 | id: "ext-serviceregistry"
1085 | method: "tools/call"
1086 | params:
1087 | name: "get_sfcc_class_documentation"
1088 | arguments:
1089 | className: "dw.svc.ServiceRegistry"
1090 | expect:
1091 | response:
1092 | jsonrpc: "2.0"
1093 | id: "ext-serviceregistry"
1094 | result:
1095 | content:
1096 | - type: "text"
1097 | text: "match:contains:ServiceRegistry"
1098 | isError: false
1099 | stderr: "toBeEmpty"
1100 |
1101 | - it: "should return documentation for dw.svc.HTTPService class"
1102 | request:
1103 | jsonrpc: "2.0"
1104 | id: "ext-httpservice"
1105 | method: "tools/call"
1106 | params:
1107 | name: "get_sfcc_class_documentation"
1108 | arguments:
1109 | className: "dw.svc.HTTPService"
1110 | expect:
1111 | response:
1112 | jsonrpc: "2.0"
1113 | id: "ext-httpservice"
1114 | result:
1115 | content:
1116 | - type: "text"
1117 | text: "match:contains:HTTPService"
1118 | isError: false
1119 | stderr: "toBeEmpty"
1120 |
1121 | - it: "should return documentation for dw.campaign.Campaign class"
1122 | request:
1123 | jsonrpc: "2.0"
1124 | id: "ext-campaign"
1125 | method: "tools/call"
1126 | params:
1127 | name: "get_sfcc_class_documentation"
1128 | arguments:
1129 | className: "dw.campaign.Campaign"
1130 | expect:
1131 | response:
1132 | jsonrpc: "2.0"
1133 | id: "ext-campaign"
1134 | result:
1135 | content:
1136 | - type: "text"
1137 | text: "match:contains:# Class Campaign"
1138 | isError: false
1139 | stderr: "toBeEmpty"
1140 |
1141 | - it: "should return documentation for dw.campaign.Promotion class"
1142 | request:
1143 | jsonrpc: "2.0"
1144 | id: "ext-promotion"
1145 | method: "tools/call"
1146 | params:
1147 | name: "get_sfcc_class_documentation"
1148 | arguments:
1149 | className: "dw.campaign.Promotion"
1150 | expect:
1151 | response:
1152 | jsonrpc: "2.0"
1153 | id: "ext-promotion"
1154 | result:
1155 | content:
1156 | - type: "text"
1157 | text: "match:contains:Promotion"
1158 | isError: false
1159 | stderr: "toBeEmpty"
1160 |
1161 | - it: "should return documentation for dw.object.CustomObject class"
1162 | request:
1163 | jsonrpc: "2.0"
1164 | id: "ext-customobject"
1165 | method: "tools/call"
1166 | params:
1167 | name: "get_sfcc_class_documentation"
1168 | arguments:
1169 | className: "dw.object.CustomObject"
1170 | expect:
1171 | response:
1172 | jsonrpc: "2.0"
1173 | id: "ext-customobject"
1174 | result:
1175 | content:
1176 | - type: "text"
1177 | text: "match:contains:CustomObject"
1178 | isError: false
1179 | stderr: "toBeEmpty"
1180 |
1181 | - it: "should return documentation for dw.object.CustomObjectMgr class"
1182 | request:
1183 | jsonrpc: "2.0"
1184 | id: "ext-customobjectmgr"
1185 | method: "tools/call"
1186 | params:
1187 | name: "get_sfcc_class_documentation"
1188 | arguments:
1189 | className: "dw.object.CustomObjectMgr"
1190 | expect:
1191 | response:
1192 | jsonrpc: "2.0"
1193 | id: "ext-customobjectmgr"
1194 | result:
1195 | content:
1196 | - type: "text"
1197 | text: "match:contains:CustomObjectMgr"
1198 | isError: false
1199 | stderr: "toBeEmpty"
1200 |
1201 | # ==================================================================================
1202 | # ADVANCED SFCC CLASSES VALIDATION - 30 MORE SPECIALIZED CLASSES
1203 | # ==================================================================================
1204 |
1205 | - it: "should return documentation for dw.catalog.CatalogMgr class"
1206 | request:
1207 | jsonrpc: "2.0"
1208 | id: "adv-catalogmgr"
1209 | method: "tools/call"
1210 | params:
1211 | name: "get_sfcc_class_documentation"
1212 | arguments:
1213 | className: "dw.catalog.CatalogMgr"
1214 | expect:
1215 | response:
1216 | jsonrpc: "2.0"
1217 | id: "adv-catalogmgr"
1218 | result:
1219 | content:
1220 | - type: "text"
1221 | text: "match:contains:CatalogMgr"
1222 | isError: false
1223 | stderr: "toBeEmpty"
1224 |
1225 | - it: "should return documentation for dw.catalog.ProductOption class"
1226 | request:
1227 | jsonrpc: "2.0"
1228 | id: "adv-productoption"
1229 | method: "tools/call"
1230 | params:
1231 | name: "get_sfcc_class_documentation"
1232 | arguments:
1233 | className: "dw.catalog.ProductOption"
1234 | expect:
1235 | response:
1236 | jsonrpc: "2.0"
1237 | id: "adv-productoption"
1238 | result:
1239 | content:
1240 | - type: "text"
1241 | text: "match:contains:ProductOption"
1242 | isError: false
1243 | stderr: "toBeEmpty"
1244 |
1245 | - it: "should return documentation for dw.catalog.ProductOptionModel class"
1246 | request:
1247 | jsonrpc: "2.0"
1248 | id: "adv-productoptionmodel"
1249 | method: "tools/call"
1250 | params:
1251 | name: "get_sfcc_class_documentation"
1252 | arguments:
1253 | className: "dw.catalog.ProductOptionModel"
1254 | expect:
1255 | response:
1256 | jsonrpc: "2.0"
1257 | id: "adv-productoptionmodel"
1258 | result:
1259 | content:
1260 | - type: "text"
1261 | text: "match:contains:ProductOptionModel"
1262 | isError: false
1263 | stderr: "toBeEmpty"
1264 |
1265 | - it: "should return documentation for dw.catalog.Recommendation class"
1266 | request:
1267 | jsonrpc: "2.0"
1268 | id: "adv-recommendation"
1269 | method: "tools/call"
1270 | params:
1271 | name: "get_sfcc_class_documentation"
1272 | arguments:
1273 | className: "dw.catalog.Recommendation"
1274 | expect:
1275 | response:
1276 | jsonrpc: "2.0"
1277 | id: "adv-recommendation"
1278 | result:
1279 | content:
1280 | - type: "text"
1281 | text: "match:contains:# Class Recommendation"
1282 | isError: false
1283 | stderr: "toBeEmpty"
1284 |
1285 | - it: "should return documentation for dw.catalog.ProductAttributeModel class"
1286 | request:
1287 | jsonrpc: "2.0"
1288 | id: "adv-productattributemodel"
1289 | method: "tools/call"
1290 | params:
1291 | name: "get_sfcc_class_documentation"
1292 | arguments:
1293 | className: "dw.catalog.ProductAttributeModel"
1294 | expect:
1295 | response:
1296 | jsonrpc: "2.0"
1297 | id: "adv-productattributemodel"
1298 | result:
1299 | content:
1300 | - type: "text"
1301 | text: "match:contains:ProductAttributeModel"
1302 | isError: false
1303 | stderr: "toBeEmpty"
1304 |
1305 | - it: "should return documentation for dw.order.LineItem class"
1306 | request:
1307 | jsonrpc: "2.0"
1308 | id: "adv-lineitem"
1309 | method: "tools/call"
1310 | params:
1311 | name: "get_sfcc_class_documentation"
1312 | arguments:
1313 | className: "dw.order.LineItem"
1314 | expect:
1315 | response:
1316 | jsonrpc: "2.0"
1317 | id: "adv-lineitem"
1318 | result:
1319 | content:
1320 | - type: "text"
1321 | text: "match:contains:# Class LineItem"
1322 | isError: false
1323 | stderr: "toBeEmpty"
1324 |
1325 | - it: "should return documentation for dw.order.OrderAddress class"
1326 | request:
1327 | jsonrpc: "2.0"
1328 | id: "adv-orderaddress"
1329 | method: "tools/call"
1330 | params:
1331 | name: "get_sfcc_class_documentation"
1332 | arguments:
1333 | className: "dw.order.OrderAddress"
1334 | expect:
1335 | response:
1336 | jsonrpc: "2.0"
1337 | id: "adv-orderaddress"
1338 | result:
1339 | content:
1340 | - type: "text"
1341 | text: "match:contains:OrderAddress"
1342 | isError: false
1343 | stderr: "toBeEmpty"
1344 |
1345 | - it: "should return documentation for dw.order.PaymentMethod class"
1346 | request:
1347 | jsonrpc: "2.0"
1348 | id: "adv-paymentmethod"
1349 | method: "tools/call"
1350 | params:
1351 | name: "get_sfcc_class_documentation"
1352 | arguments:
1353 | className: "dw.order.PaymentMethod"
1354 | expect:
1355 | response:
1356 | jsonrpc: "2.0"
1357 | id: "adv-paymentmethod"
1358 | result:
1359 | content:
1360 | - type: "text"
1361 | text: "match:contains:PaymentMethod"
1362 | isError: false
1363 | stderr: "toBeEmpty"
1364 |
1365 | - it: "should return documentation for dw.order.PaymentMgr class"
1366 | request:
1367 | jsonrpc: "2.0"
1368 | id: "adv-paymentmgr"
1369 | method: "tools/call"
1370 | params:
1371 | name: "get_sfcc_class_documentation"
1372 | arguments:
1373 | className: "dw.order.PaymentMgr"
1374 | expect:
1375 | response:
1376 | jsonrpc: "2.0"
1377 | id: "adv-paymentmgr"
1378 | result:
1379 | content:
1380 | - type: "text"
1381 | text: "match:contains:PaymentMgr"
1382 | isError: false
1383 | stderr: "toBeEmpty"
1384 |
1385 | - it: "should return documentation for dw.order.ShippingMgr class"
1386 | request:
1387 | jsonrpc: "2.0"
1388 | id: "adv-shippingmgr"
1389 | method: "tools/call"
1390 | params:
1391 | name: "get_sfcc_class_documentation"
1392 | arguments:
1393 | className: "dw.order.ShippingMgr"
1394 | expect:
1395 | response:
1396 | jsonrpc: "2.0"
1397 | id: "adv-shippingmgr"
1398 | result:
1399 | content:
1400 | - type: "text"
1401 | text: "match:contains:ShippingMgr"
1402 | isError: false
1403 | stderr: "toBeEmpty"
1404 |
1405 | - it: "should return documentation for dw.customer.AddressBook class"
1406 | request:
1407 | jsonrpc: "2.0"
1408 | id: "adv-addressbook"
1409 | method: "tools/call"
1410 | params:
1411 | name: "get_sfcc_class_documentation"
1412 | arguments:
1413 | className: "dw.customer.AddressBook"
1414 | expect:
1415 | response:
1416 | jsonrpc: "2.0"
1417 | id: "adv-addressbook"
1418 | result:
1419 | content:
1420 | - type: "text"
1421 | text: "match:contains:AddressBook"
1422 | isError: false
1423 | stderr: "toBeEmpty"
1424 |
1425 | - it: "should return documentation for dw.customer.CustomerAddress class"
1426 | request:
1427 | jsonrpc: "2.0"
1428 | id: "adv-customeraddress"
1429 | method: "tools/call"
1430 | params:
1431 | name: "get_sfcc_class_documentation"
1432 | arguments:
1433 | className: "dw.customer.CustomerAddress"
1434 | expect:
1435 | response:
1436 | jsonrpc: "2.0"
1437 | id: "adv-customeraddress"
1438 | result:
1439 | content:
1440 | - type: "text"
1441 | text: "match:contains:CustomerAddress"
1442 | isError: false
1443 | stderr: "toBeEmpty"
1444 |
1445 | - it: "should return documentation for dw.customer.CustomerPaymentInstrument class"
1446 | request:
1447 | jsonrpc: "2.0"
1448 | id: "adv-custpaymentinstrument"
1449 | method: "tools/call"
1450 | params:
1451 | name: "get_sfcc_class_documentation"
1452 | arguments:
1453 | className: "dw.customer.CustomerPaymentInstrument"
1454 | expect:
1455 | response:
1456 | jsonrpc: "2.0"
1457 | id: "adv-custpaymentinstrument"
1458 | result:
1459 | content:
1460 | - type: "text"
1461 | text: "match:contains:CustomerPaymentInstrument"
1462 | isError: false
1463 | stderr: "toBeEmpty"
1464 |
1465 | - it: "should return documentation for dw.customer.Wallet class"
1466 | request:
1467 | jsonrpc: "2.0"
1468 | id: "adv-wallet"
1469 | method: "tools/call"
1470 | params:
1471 | name: "get_sfcc_class_documentation"
1472 | arguments:
1473 | className: "dw.customer.Wallet"
1474 | expect:
1475 | response:
1476 | jsonrpc: "2.0"
1477 | id: "adv-wallet"
1478 | result:
1479 | content:
1480 | - type: "text"
1481 | text: "match:contains:# Class Wallet"
1482 | isError: false
1483 | stderr: "toBeEmpty"
1484 |
1485 | - it: "should return documentation for dw.system.Pipeline class"
1486 | request:
1487 | jsonrpc: "2.0"
1488 | id: "adv-pipeline"
1489 | method: "tools/call"
1490 | params:
1491 | name: "get_sfcc_class_documentation"
1492 | arguments:
1493 | className: "dw.system.Pipeline"
1494 | expect:
1495 | response:
1496 | jsonrpc: "2.0"
1497 | id: "adv-pipeline"
1498 | result:
1499 | content:
1500 | - type: "text"
1501 | text: "match:contains:Pipeline"
1502 | isError: false
1503 | stderr: "toBeEmpty"
1504 |
1505 | - it: "should return documentation for dw.system.HookMgr class"
1506 | request:
1507 | jsonrpc: "2.0"
1508 | id: "adv-hookmgr"
1509 | method: "tools/call"
1510 | params:
1511 | name: "get_sfcc_class_documentation"
1512 | arguments:
1513 | className: "dw.system.HookMgr"
1514 | expect:
1515 | response:
1516 | jsonrpc: "2.0"
1517 | id: "adv-hookmgr"
1518 | result:
1519 | content:
1520 | - type: "text"
1521 | text: "match:contains:HookMgr"
1522 | isError: false
1523 | stderr: "toBeEmpty"
1524 |
1525 | - it: "should return documentation for dw.system.CacheMgr class"
1526 | request:
1527 | jsonrpc: "2.0"
1528 | id: "adv-cachemgr"
1529 | method: "tools/call"
1530 | params:
1531 | name: "get_sfcc_class_documentation"
1532 | arguments:
1533 | className: "dw.system.CacheMgr"
1534 | expect:
1535 | response:
1536 | jsonrpc: "2.0"
1537 | id: "adv-cachemgr"
1538 | result:
1539 | content:
1540 | - type: "text"
1541 | text: "match:contains:CacheMgr"
1542 | isError: false
1543 | stderr: "toBeEmpty"
1544 |
1545 | - it: "should return documentation for dw.web.Forms class"
1546 | request:
1547 | jsonrpc: "2.0"
1548 | id: "adv-forms"
1549 | method: "tools/call"
1550 | params:
1551 | name: "get_sfcc_class_documentation"
1552 | arguments:
1553 | className: "dw.web.Forms"
1554 | expect:
1555 | response:
1556 | jsonrpc: "2.0"
1557 | id: "adv-forms"
1558 | result:
1559 | content:
1560 | - type: "text"
1561 | text: "match:contains:# Class Forms"
1562 | isError: false
1563 | stderr: "toBeEmpty"
1564 |
1565 | - it: "should return documentation for dw.web.PageMetaData class"
1566 | request:
1567 | jsonrpc: "2.0"
1568 | id: "adv-pagemetadata"
1569 | method: "tools/call"
1570 | params:
1571 | name: "get_sfcc_class_documentation"
1572 | arguments:
1573 | className: "dw.web.PageMetaData"
1574 | expect:
1575 | response:
1576 | jsonrpc: "2.0"
1577 | id: "adv-pagemetadata"
1578 | result:
1579 | content:
1580 | - type: "text"
1581 | text: "match:contains:PageMetaData"
1582 | isError: false
1583 | stderr: "toBeEmpty"
1584 |
1585 | - it: "should return documentation for dw.web.PagingModel class"
1586 | request:
1587 | jsonrpc: "2.0"
1588 | id: "adv-pagingmodel"
1589 | method: "tools/call"
1590 | params:
1591 | name: "get_sfcc_class_documentation"
1592 | arguments:
1593 | className: "dw.web.PagingModel"
1594 | expect:
1595 | response:
1596 | jsonrpc: "2.0"
1597 | id: "adv-pagingmodel"
1598 | result:
1599 | content:
1600 | - type: "text"
1601 | text: "match:contains:PagingModel"
1602 | isError: false
1603 | stderr: "toBeEmpty"
1604 |
1605 | - it: "should return documentation for dw.util.StringUtils class"
1606 | request:
1607 | jsonrpc: "2.0"
1608 | id: "adv-stringutils"
1609 | method: "tools/call"
1610 | params:
1611 | name: "get_sfcc_class_documentation"
1612 | arguments:
1613 | className: "dw.util.StringUtils"
1614 | expect:
1615 | response:
1616 | jsonrpc: "2.0"
1617 | id: "adv-stringutils"
1618 | result:
1619 | content:
1620 | - type: "text"
1621 | text: "match:contains:StringUtils"
1622 | isError: false
1623 | stderr: "toBeEmpty"
1624 |
1625 | - it: "should return documentation for dw.util.Map class"
1626 | request:
1627 | jsonrpc: "2.0"
1628 | id: "adv-map"
1629 | method: "tools/call"
1630 | params:
1631 | name: "get_sfcc_class_documentation"
1632 | arguments:
1633 | className: "dw.util.Map"
1634 | expect:
1635 | response:
1636 | jsonrpc: "2.0"
1637 | id: "adv-map"
1638 | result:
1639 | content:
1640 | - type: "text"
1641 | text: "match:contains:# Class Map"
1642 | isError: false
1643 | stderr: "toBeEmpty"
1644 |
1645 | - it: "should return documentation for dw.util.Locale class"
1646 | request:
1647 | jsonrpc: "2.0"
1648 | id: "adv-locale"
1649 | method: "tools/call"
1650 | params:
1651 | name: "get_sfcc_class_documentation"
1652 | arguments:
1653 | className: "dw.util.Locale"
1654 | expect:
1655 | response:
1656 | jsonrpc: "2.0"
1657 | id: "adv-locale"
1658 | result:
1659 | content:
1660 | - type: "text"
1661 | text: "match:contains:# Class Locale"
1662 | isError: false
1663 | stderr: "toBeEmpty"
1664 |
1665 | - it: "should return documentation for dw.util.List class"
1666 | request:
1667 | jsonrpc: "2.0"
1668 | id: "adv-list"
1669 | method: "tools/call"
1670 | params:
1671 | name: "get_sfcc_class_documentation"
1672 | arguments:
1673 | className: "dw.util.List"
1674 | expect:
1675 | response:
1676 | jsonrpc: "2.0"
1677 | id: "adv-list"
1678 | result:
1679 | content:
1680 | - type: "text"
1681 | text: "match:contains:# Class List"
1682 | isError: false
1683 | stderr: "toBeEmpty"
1684 |
1685 | - it: "should return documentation for dw.value.EnumValue class"
1686 | request:
1687 | jsonrpc: "2.0"
1688 | id: "adv-enumvalue"
1689 | method: "tools/call"
1690 | params:
1691 | name: "get_sfcc_class_documentation"
1692 | arguments:
1693 | className: "dw.value.EnumValue"
1694 | expect:
1695 | response:
1696 | jsonrpc: "2.0"
1697 | id: "adv-enumvalue"
1698 | result:
1699 | content:
1700 | - type: "text"
1701 | text: "match:contains:EnumValue"
1702 | isError: false
1703 | stderr: "toBeEmpty"
1704 |
1705 | - it: "should return documentation for dw.net.FTPClient class"
1706 | request:
1707 | jsonrpc: "2.0"
1708 | id: "adv-ftpclient"
1709 | method: "tools/call"
1710 | params:
1711 | name: "get_sfcc_class_documentation"
1712 | arguments:
1713 | className: "dw.net.FTPClient"
1714 | expect:
1715 | response:
1716 | jsonrpc: "2.0"
1717 | id: "adv-ftpclient"
1718 | result:
1719 | content:
1720 | - type: "text"
1721 | text: "match:contains:FTPClient"
1722 | isError: false
1723 | stderr: "toBeEmpty"
1724 |
1725 | - it: "should return documentation for dw.net.SFTPClient class"
1726 | request:
1727 | jsonrpc: "2.0"
1728 | id: "adv-sftpclient"
1729 | method: "tools/call"
1730 | params:
1731 | name: "get_sfcc_class_documentation"
1732 | arguments:
1733 | className: "dw.net.SFTPClient"
1734 | expect:
1735 | response:
1736 | jsonrpc: "2.0"
1737 | id: "adv-sftpclient"
1738 | result:
1739 | content:
1740 | - type: "text"
1741 | text: "match:contains:SFTPClient"
1742 | isError: false
1743 | stderr: "toBeEmpty"
1744 |
1745 | - it: "should return documentation for dw.io.CSVStreamWriter class"
1746 | request:
1747 | jsonrpc: "2.0"
1748 | id: "adv-csvstreamwriter"
1749 | method: "tools/call"
1750 | params:
1751 | name: "get_sfcc_class_documentation"
1752 | arguments:
1753 | className: "dw.io.CSVStreamWriter"
1754 | expect:
1755 | response:
1756 | jsonrpc: "2.0"
1757 | id: "adv-csvstreamwriter"
1758 | result:
1759 | content:
1760 | - type: "text"
1761 | text: "match:contains:CSVStreamWriter"
1762 | isError: false
1763 | stderr: "toBeEmpty"
1764 |
1765 | - it: "should return documentation for dw.io.XMLStreamWriter class"
1766 | request:
1767 | jsonrpc: "2.0"
1768 | id: "adv-xmlstreamwriter"
1769 | method: "tools/call"
1770 | params:
1771 | name: "get_sfcc_class_documentation"
1772 | arguments:
1773 | className: "dw.io.XMLStreamWriter"
1774 | expect:
1775 | response:
1776 | jsonrpc: "2.0"
1777 | id: "adv-xmlstreamwriter"
1778 | result:
1779 | content:
1780 | - type: "text"
1781 | text: "match:contains:XMLStreamWriter"
1782 | isError: false
1783 | stderr: "toBeEmpty"
1784 |
1785 | - it: "should return documentation for dw.system.Status class"
1786 | request:
1787 | jsonrpc: "2.0"
1788 | id: "adv-status"
1789 | method: "tools/call"
1790 | params:
1791 | name: "get_sfcc_class_documentation"
1792 | arguments:
1793 | className: "dw.system.Status"
1794 | expect:
1795 | response:
1796 | jsonrpc: "2.0"
1797 | id: "adv-status"
1798 | result:
1799 | content:
1800 | - type: "text"
1801 | text: "match:contains:# Class Status"
1802 | isError: false
1803 | stderr: "toBeEmpty"
1804 |
1805 | # ==================================================================================
1806 | # DOCUMENTATION CONTENT VALIDATION
1807 | # ==================================================================================
1808 |
1809 | - it: "should include class description in Order documentation"
1810 | request:
1811 | jsonrpc: "2.0"
1812 | id: "exec-order-description"
1813 | method: "tools/call"
1814 | params:
1815 | name: "get_sfcc_class_documentation"
1816 | arguments:
1817 | className: "dw.order.Order"
1818 | expect:
1819 | response:
1820 | jsonrpc: "2.0"
1821 | id: "exec-order-description"
1822 | result:
1823 | content:
1824 | - type: "text"
1825 | text: "match:contains:## Description"
1826 | isError: false
1827 | stderr: "toBeEmpty"
1828 |
1829 | - it: "should include constants in Order documentation"
1830 | request:
1831 | jsonrpc: "2.0"
1832 | id: "exec-order-constants"
1833 | method: "tools/call"
1834 | params:
1835 | name: "get_sfcc_class_documentation"
1836 | arguments:
1837 | className: "dw.order.Order"
1838 | expect:
1839 | response:
1840 | jsonrpc: "2.0"
1841 | id: "exec-order-constants"
1842 | result:
1843 | content:
1844 | - type: "text"
1845 | text: "match:contains:## Constants"
1846 | isError: false
1847 | stderr: "toBeEmpty"
1848 |
1849 | - it: "should include constructor summary in Order documentation"
1850 | request:
1851 | jsonrpc: "2.0"
1852 | id: "exec-order-constructors"
1853 | method: "tools/call"
1854 | params:
1855 | name: "get_sfcc_class_documentation"
1856 | arguments:
1857 | className: "dw.order.Order"
1858 | expect:
1859 | response:
1860 | jsonrpc: "2.0"
1861 | id: "exec-order-constructors"
1862 | result:
1863 | content:
1864 | - type: "text"
1865 | text: "match:contains:## Constructor Summary"
1866 | isError: false
1867 | stderr: "toBeEmpty"
1868 |
1869 | - it: "should include method signatures in documentation"
1870 | request:
1871 | jsonrpc: "2.0"
1872 | id: "exec-method-signatures"
1873 | method: "tools/call"
1874 | params:
1875 | name: "get_sfcc_class_documentation"
1876 | arguments:
1877 | className: "dw.catalog.Product"
1878 | expect:
1879 | response:
1880 | jsonrpc: "2.0"
1881 | id: "exec-method-signatures"
1882 | result:
1883 | content:
1884 | - type: "text"
1885 | text: "match:contains:**Signature:**"
1886 | isError: false
1887 | stderr: "toBeEmpty"
1888 |
1889 | - it: "should include property types in documentation"
1890 | request:
1891 | jsonrpc: "2.0"
1892 | id: "exec-property-types"
1893 | method: "tools/call"
1894 | params:
1895 | name: "get_sfcc_class_documentation"
1896 | arguments:
1897 | className: "dw.catalog.Product"
1898 | expect:
1899 | response:
1900 | jsonrpc: "2.0"
1901 | id: "exec-property-types"
1902 | result:
1903 | content:
1904 | - type: "text"
1905 | text: "match:contains:**Type:**"
1906 | isError: false
1907 | stderr: "toBeEmpty"
1908 |
1909 | - it: "should include return valid markdown format"
1910 | request:
1911 | jsonrpc: "2.0"
1912 | id: "exec-markdown-format"
1913 | method: "tools/call"
1914 | params:
1915 | name: "get_sfcc_class_documentation"
1916 | arguments:
1917 | className: "dw.catalog.Product"
1918 | expect:
1919 | response:
1920 | jsonrpc: "2.0"
1921 | id: "exec-markdown-format"
1922 | result:
1923 | content:
1924 | - type: "text"
1925 | text: "match:regex:[\\s\\S]*#{1,6}[\\s\\S]*" # Contains markdown headers
1926 | isError: false
1927 | stderr: "toBeEmpty"
1928 |
1929 | # ==================================================================================
1930 | # ERROR HANDLING TESTS
1931 | # ==================================================================================
1932 |
1933 | - it: "should handle invalid class names gracefully"
1934 | request:
1935 | jsonrpc: "2.0"
1936 | id: "error-invalid-class"
1937 | method: "tools/call"
1938 | params:
1939 | name: "get_sfcc_class_documentation"
1940 | arguments:
1941 | className: "NonExistentClass"
1942 | expect:
1943 | response:
1944 | jsonrpc: "2.0"
1945 | id: "error-invalid-class"
1946 | result:
1947 | content:
1948 | - type: "text"
1949 | text: "match:contains:Error"
1950 | isError: true
1951 | stderr: "toBeEmpty"
1952 |
1953 | - it: "should handle invalid class with specific error message"
1954 | request:
1955 | jsonrpc: "2.0"
1956 | id: "error-invalid-specific"
1957 | method: "tools/call"
1958 | params:
1959 | name: "get_sfcc_class_documentation"
1960 | arguments:
1961 | className: "InvalidClassName"
1962 | expect:
1963 | response:
1964 | jsonrpc: "2.0"
1965 | id: "error-invalid-specific"
1966 | result:
1967 | content:
1968 | - type: "text"
1969 | text: "match:contains:not found"
1970 | isError: true
1971 | stderr: "toBeEmpty"
1972 |
1973 | - it: "should handle empty class name"
1974 | request:
1975 | jsonrpc: "2.0"
1976 | id: "error-empty-class"
1977 | method: "tools/call"
1978 | params:
1979 | name: "get_sfcc_class_documentation"
1980 | arguments:
1981 | className: ""
1982 | expect:
1983 | response:
1984 | jsonrpc: "2.0"
1985 | id: "error-empty-class"
1986 | result:
1987 | content:
1988 | - type: "text"
1989 | text: "match:contains:non-empty string"
1990 | isError: true
1991 | stderr: "toBeEmpty"
1992 |
1993 | - it: "should handle missing className parameter with error response"
1994 | request:
1995 | jsonrpc: "2.0"
1996 | id: "error-missing-param"
1997 | method: "tools/call"
1998 | params:
1999 | name: "get_sfcc_class_documentation"
2000 | arguments: {}
2001 | expect:
2002 | response:
2003 | jsonrpc: "2.0"
2004 | id: "error-missing-param"
2005 | result:
2006 | content:
2007 | - type: "text"
2008 | text: "match:contains:non-empty string"
2009 | isError: true
2010 | stderr: "toBeEmpty"
2011 |
2012 | - it: "should handle null className gracefully"
2013 | request:
2014 | jsonrpc: "2.0"
2015 | id: "error-null-class"
2016 | method: "tools/call"
2017 | params:
2018 | name: "get_sfcc_class_documentation"
2019 | arguments:
2020 | className: null
2021 | expect:
2022 | response:
2023 | jsonrpc: "2.0"
2024 | id: "error-null-class"
2025 | result:
2026 | content:
2027 | - type: "text"
2028 | text: "match:contains:Error"
2029 | isError: true
2030 | stderr: "toBeEmpty"
2031 |
2032 | - it: "should handle numeric className gracefully"
2033 | request:
2034 | jsonrpc: "2.0"
2035 | id: "error-numeric-class"
2036 | method: "tools/call"
2037 | params:
2038 | name: "get_sfcc_class_documentation"
2039 | arguments:
2040 | className: 123
2041 | expect:
2042 | response:
2043 | jsonrpc: "2.0"
2044 | id: "error-numeric-class"
2045 | result:
2046 | content:
2047 | - type: "text"
2048 | text: "match:contains:Error"
2049 | isError: true
2050 | stderr: "toBeEmpty"
2051 |
2052 | # ==================================================================================
2053 | # EDGE CASE TESTING
2054 | # ==================================================================================
2055 |
2056 | - it: "should handle whitespace-only className"
2057 | request:
2058 | jsonrpc: "2.0"
2059 | id: "edge-whitespace"
2060 | method: "tools/call"
2061 | params:
2062 | name: "get_sfcc_class_documentation"
2063 | arguments:
2064 | className: " "
2065 | expect:
2066 | response:
2067 | jsonrpc: "2.0"
2068 | id: "edge-whitespace"
2069 | result:
2070 | content:
2071 | - type: "text"
2072 | text: "match:contains:Error"
2073 | isError: true
2074 | stderr: "toBeEmpty"
2075 |
2076 | - it: "should handle class names with special characters"
2077 | request:
2078 | jsonrpc: "2.0"
2079 | id: "edge-special-chars"
2080 | method: "tools/call"
2081 | params:
2082 | name: "get_sfcc_class_documentation"
2083 | arguments:
2084 | className: "dw.catalog.Product@#$"
2085 | expect:
2086 | response:
2087 | jsonrpc: "2.0"
2088 | id: "edge-special-chars"
2089 | result:
2090 | content:
2091 | - type: "text"
2092 | text: "match:contains:Error"
2093 | isError: true
2094 | stderr: "toBeEmpty"
2095 |
2096 | - it: "should handle very long invalid class names"
2097 | request:
2098 | jsonrpc: "2.0"
2099 | id: "edge-long-invalid"
2100 | method: "tools/call"
2101 | params:
2102 | name: "get_sfcc_class_documentation"
2103 | arguments:
2104 | className: "dw.very.long.nonexistent.package.that.does.not.exist.anywhere.InvalidClass"
2105 | expect:
2106 | response:
2107 | jsonrpc: "2.0"
2108 | id: "edge-long-invalid"
2109 | result:
2110 | content:
2111 | - type: "text"
2112 | text: "match:contains:Error"
2113 | isError: true
2114 | stderr: "toBeEmpty"
2115 |
2116 | # ==================================================================================
2117 | # COMPREHENSIVE CONTENT VALIDATION
2118 | # ==================================================================================
2119 |
2120 | - it: "should return substantial documentation content for Product class"
2121 | request:
2122 | jsonrpc: "2.0"
2123 | id: "content-substantial"
2124 | method: "tools/call"
2125 | params:
2126 | name: "get_sfcc_class_documentation"
2127 | arguments:
2128 | className: "dw.catalog.Product"
2129 | expect:
2130 | response:
2131 | jsonrpc: "2.0"
2132 | id: "content-substantial"
2133 | result:
2134 | content:
2135 | - type: "text"
2136 | text: "match:regex:[\\s\\S]{5000,}" # At least 5000 characters
2137 | isError: false
2138 | stderr: "toBeEmpty"
2139 |
2140 | - it: "should include multiple sections in complete documentation"
2141 | request:
2142 | jsonrpc: "2.0"
2143 | id: "content-multiple-sections"
2144 | method: "tools/call"
2145 | params:
2146 | name: "get_sfcc_class_documentation"
2147 | arguments:
2148 | className: "dw.catalog.Product"
2149 | expect:
2150 | response:
2151 | jsonrpc: "2.0"
2152 | id: "content-multiple-sections"
2153 | result:
2154 | content:
2155 | - type: "text"
2156 | text: "match:contains:## Properties"
2157 | isError: false
2158 | stderr: "toBeEmpty"
2159 |
2160 | - it: "should include detailed method information"
2161 | request:
2162 | jsonrpc: "2.0"
2163 | id: "content-method-info"
2164 | method: "tools/call"
2165 | params:
2166 | name: "get_sfcc_class_documentation"
2167 | arguments:
2168 | className: "dw.catalog.Product"
2169 | expect:
2170 | response:
2171 | jsonrpc: "2.0"
2172 | id: "content-method-info"
2173 | result:
2174 | content:
2175 | - type: "text"
2176 | text: "match:contains:**Parameters:**"
2177 | isError: false
2178 | stderr: "toBeEmpty"
2179 |
2180 | - it: "should include return value information"
2181 | request:
2182 | jsonrpc: "2.0"
2183 | id: "content-return-info"
2184 | method: "tools/call"
2185 | params:
2186 | name: "get_sfcc_class_documentation"
2187 | arguments:
2188 | className: "dw.catalog.Product"
2189 | expect:
2190 | response:
2191 | jsonrpc: "2.0"
2192 | id: "content-return-info"
2193 | result:
2194 | content:
2195 | - type: "text"
2196 | text: "match:contains:**Returns:**"
2197 | isError: false
2198 | stderr: "toBeEmpty"
2199 |
2200 | # ==================================================================================
2201 | # PERFORMANCE AND CONSISTENCY VALIDATION
2202 | # ==================================================================================
2203 |
2204 | - it: "should have consistent response structure across different classes"
2205 | request:
2206 | jsonrpc: "2.0"
2207 | id: "consistency-structure"
2208 | method: "tools/call"
2209 | params:
2210 | name: "get_sfcc_class_documentation"
2211 | arguments:
2212 | className: "dw.order.Order"
2213 | expect:
2214 | response:
2215 | jsonrpc: "2.0"
2216 | id: "consistency-structure"
2217 | result:
2218 | content:
2219 | - type: "text"
2220 | text: "match:type:string"
2221 | isError: false
2222 | stderr: "toBeEmpty"
2223 |
2224 | - it: "should not include isError field for successful responses"
2225 | request:
2226 | jsonrpc: "2.0"
2227 | id: "success-no-error-flag"
2228 | method: "tools/call"
2229 | params:
2230 | name: "get_sfcc_class_documentation"
2231 | arguments:
2232 | className: "dw.catalog.Product"
2233 | expect:
2234 | response:
2235 | jsonrpc: "2.0"
2236 | id: "success-no-error-flag"
2237 | result:
2238 | content: "match:type:array"
2239 | isError: false
2240 | stderr: "toBeEmpty"
2241 |
2242 | # ==================================================================================
2243 | # PERFORMANCE TIMING TESTS - CI-FRIENDLY
2244 | # ==================================================================================
2245 |
2246 | - it: "should respond within reasonable time for Product class lookup"
2247 | request:
2248 | jsonrpc: "2.0"
2249 | id: "perf-product-timing"
2250 | method: "tools/call"
2251 | params:
2252 | name: "get_sfcc_class_documentation"
2253 | arguments:
2254 | className: "dw.catalog.Product"
2255 | expect:
2256 | response:
2257 | jsonrpc: "2.0"
2258 | id: "perf-product-timing"
2259 | result:
2260 | content:
2261 | - type: "text"
2262 | text: "match:contains:dw.catalog.Product"
2263 | isError: false
2264 | performance:
2265 | maxResponseTime: "500ms" # CI-friendly timeout for documentation lookup
2266 | stderr: "toBeEmpty"
2267 |
2268 | - it: "should respond within reasonable time for Order class lookup"
2269 | request:
2270 | jsonrpc: "2.0"
2271 | id: "perf-order-timing"
2272 | method: "tools/call"
2273 | params:
2274 | name: "get_sfcc_class_documentation"
2275 | arguments:
2276 | className: "dw.order.Order"
2277 | expect:
2278 | response:
2279 | jsonrpc: "2.0"
2280 | id: "perf-order-timing"
2281 | result:
2282 | content:
2283 | - type: "text"
2284 | text: "match:contains:dw.order.Order"
2285 | isError: false
2286 | performance:
2287 | maxResponseTime: "500ms" # CI-friendly timeout for documentation lookup
2288 | stderr: "toBeEmpty"
2289 |
2290 | - it: "should respond within reasonable time for Customer class lookup"
2291 | request:
2292 | jsonrpc: "2.0"
2293 | id: "perf-customer-timing"
2294 | method: "tools/call"
2295 | params:
2296 | name: "get_sfcc_class_documentation"
2297 | arguments:
2298 | className: "dw.customer.Customer"
2299 | expect:
2300 | response:
2301 | jsonrpc: "2.0"
2302 | id: "perf-customer-timing"
2303 | result:
2304 | content:
2305 | - type: "text"
2306 | text: "match:contains:dw.customer.Customer"
2307 | isError: false
2308 | performance:
2309 | maxResponseTime: "500ms" # CI-friendly timeout for documentation lookup
2310 | stderr: "toBeEmpty"
2311 |
2312 | - it: "should handle error cases quickly"
2313 | request:
2314 | jsonrpc: "2.0"
2315 | id: "perf-error-timing"
2316 | method: "tools/call"
2317 | params:
2318 | name: "get_sfcc_class_documentation"
2319 | arguments:
2320 | className: "NonExistentClass"
2321 | expect:
2322 | response:
2323 | jsonrpc: "2.0"
2324 | id: "perf-error-timing"
2325 | result:
2326 | content:
2327 | - type: "text"
2328 | text: "match:contains:Error"
2329 | isError: true
2330 | performance:
2331 | maxResponseTime: "300ms" # Error handling should be faster
2332 | stderr: "toBeEmpty"
2333 |
2334 | - it: "should handle validation errors very quickly"
2335 | request:
2336 | jsonrpc: "2.0"
2337 | id: "perf-validation-timing"
2338 | method: "tools/call"
2339 | params:
2340 | name: "get_sfcc_class_documentation"
2341 | arguments:
2342 | className: ""
2343 | expect:
2344 | response:
2345 | jsonrpc: "2.0"
2346 | id: "perf-validation-timing"
2347 | result:
2348 | content:
2349 | - type: "text"
2350 | text: "match:contains:non-empty string"
2351 | isError: true
2352 | performance:
2353 | maxResponseTime: "200ms" # Validation errors should be very fast
2354 | stderr: "toBeEmpty"
2355 |
2356 | # ==================================================================================
2357 | # RESPONSE FORMAT VALIDATION
2358 | # ==================================================================================
2359 |
2360 | - it: "should return proper content array structure"
2361 | request:
2362 | jsonrpc: "2.0"
2363 | id: "format-content-array"
2364 | method: "tools/call"
2365 | params:
2366 | name: "get_sfcc_class_documentation"
2367 | arguments:
2368 | className: "dw.catalog.Product"
2369 | expect:
2370 | response:
2371 | jsonrpc: "2.0"
2372 | id: "format-content-array"
2373 | result:
2374 | content: "match:arrayLength:1"
2375 | isError: false
2376 | stderr: "toBeEmpty"
2377 |
2378 | - it: "should return content with proper type field"
2379 | request:
2380 | jsonrpc: "2.0"
2381 | id: "format-content-type"
2382 | method: "tools/call"
2383 | params:
2384 | name: "get_sfcc_class_documentation"
2385 | arguments:
2386 | className: "dw.catalog.Product"
2387 | expect:
2388 | response:
2389 | jsonrpc: "2.0"
2390 | id: "format-content-type"
2391 | result:
2392 | content:
2393 | - type: "text"
2394 | text: "match:type:string"
2395 | isError: false
2396 | stderr: "toBeEmpty"
2397 |
2398 | - it: "should maintain consistent error response format"
2399 | request:
2400 | jsonrpc: "2.0"
2401 | id: "format-error-consistent"
2402 | method: "tools/call"
2403 | params:
2404 | name: "get_sfcc_class_documentation"
2405 | arguments:
2406 | className: "InvalidClass"
2407 | expect:
2408 | response:
2409 | jsonrpc: "2.0"
2410 | id: "format-error-consistent"
2411 | result:
2412 | content:
2413 | - type: "text"
2414 | text: "match:type:string"
2415 | isError: true
2416 | stderr: "toBeEmpty"
2417 |
```