#
tokens: 32702/50000 1/825 files (page 57/61)
lines: on (toggle) GitHub
raw markdown copy reset
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 | 
```
Page 57/61FirstPrevNextLast