Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
147 commits
Select commit Hold shift + click to select a range
848adee
Add design spec for ARCH-001 Product panel consolidation
KrzysztofPajak Aug 16, 2026
44d1536
Add ARCH-001 Phase 1 implementation plan (Product controller + servic…
KrzysztofPajak Aug 16, 2026
9dfbec5
Ignore .worktrees/ directory for local git worktree isolation
KrzysztofPajak Aug 16, 2026
d529440
Plan fix: Tasks 9-10 must also update BaseProductController call site…
KrzysztofPajak Aug 16, 2026
5541be6
Plan fix: run Grand.Web.Store.Tests unfiltered (AutoMapperConfig stat…
KrzysztofPajak Aug 16, 2026
7b404b9
Add IAdminDataScope<TEntity> abstraction (ARCH-001 Phase 1)
KrzysztofPajak Aug 16, 2026
2a5ccc8
Add GlobalAdminDataScope for the Admin host (ARCH-001 Phase 1)
KrzysztofPajak Aug 16, 2026
76aa1bf
Add StoreAdminDataScope for the Store host (ARCH-001 Phase 1)
KrzysztofPajak Aug 16, 2026
00f892e
Add StoreAdminDataScope for the Store host (ARCH-001 Phase 1)
KrzysztofPajak Aug 16, 2026
3a5e4a7
Add VendorProductDataScope for the Vendor host (ARCH-001 Phase 1)
KrzysztofPajak Aug 16, 2026
083ed52
Register IAdminDataScope<Product> in Admin, Store, Vendor hosts (ARCH…
KrzysztofPajak Aug 16, 2026
36ffd59
Add BaseProductController with the list/create/edit/delete region (AR…
KrzysztofPajak Aug 16, 2026
dcddc85
Plan fix: add IAdminDataScope.CanView, fix DeleteSelected scoping, in…
KrzysztofPajak Aug 16, 2026
35dd5d9
Fix Task 7 review findings: scope DeleteSelected, add CanView for Sto…
KrzysztofPajak Aug 16, 2026
a8a0574
Migrate 'Required products' region into BaseProductController (ARCH-0…
KrzysztofPajak Aug 16, 2026
329c786
Migrate 'Product categories' region into BaseProductController (ARCH-…
KrzysztofPajak Aug 16, 2026
2490c4b
Migrate 'Product collections' region into BaseProductController (ARCH…
KrzysztofPajak Aug 16, 2026
81f64b2
Migrate 'Related products' region into BaseProductController (ARCH-00…
KrzysztofPajak Aug 16, 2026
a13edc3
Migrate 'Similar products' region into BaseProductController (ARCH-00…
KrzysztofPajak Aug 16, 2026
8ae78a6
Migrate 'Bundle products' region into BaseProductController (ARCH-001…
KrzysztofPajak Aug 16, 2026
fbae675
Migrate 'Cross-sell products' region into BaseProductController (ARCH…
KrzysztofPajak Aug 16, 2026
fad7cc3
Migrate 'Recommended products' region into BaseProductController (ARC…
KrzysztofPajak Aug 16, 2026
e8d2bc7
Migrate 'Associated products' region into BaseProductController (ARCH…
KrzysztofPajak Aug 16, 2026
73de989
Migrate 'Product pictures' region into BaseProductController (ARCH-00…
KrzysztofPajak Aug 16, 2026
ecf4ca2
Migrate 'Product specification attributes' region into BaseProductCon…
KrzysztofPajak Aug 16, 2026
8883e04
Migrate 'Purchased with order' region into BaseProductController (ARC…
KrzysztofPajak Aug 16, 2026
324131c
Fix: PurchasedWithOrders cannot be virtual (Vendor override impossibl…
KrzysztofPajak Aug 16, 2026
4591d1d
Migrate 'Reviews' region into BaseProductController (ARCH-001 Phase 1)
KrzysztofPajak Aug 16, 2026
061181c
Migrate 'Export / Import' region into BaseProductController (ARCH-001…
KrzysztofPajak Aug 16, 2026
b8ea135
Migrate 'Bulk editing' region into BaseProductController (ARCH-001 Ph…
KrzysztofPajak Aug 16, 2026
a8def83
Plan fix: make PrepareBulkEditProductModel vendor-scoping a hard Task…
KrzysztofPajak Aug 16, 2026
87899dc
Strengthen Bulk editing region comment: flag Task 11 blocking prerequ…
KrzysztofPajak Aug 16, 2026
5b5d73b
Migrate 'Product currency price' region into BaseProductController (A…
KrzysztofPajak Aug 16, 2026
c2b40a4
Migrate 'Tier prices' region into BaseProductController (ARCH-001 Pha…
KrzysztofPajak Aug 16, 2026
5bac264
Migrate 'Product attributes' region into BaseProductController (ARCH-…
KrzysztofPajak Aug 16, 2026
9daa238
Migrate 'Product attributes. Condition' region into BaseProductContro…
KrzysztofPajak Aug 17, 2026
bb22f38
Fix inaccurate comment on dropped Vendor ModelState.IsValid check (AR…
KrzysztofPajak Aug 17, 2026
f7f64c3
Migrate 'Product attribute values' region into BaseProductController …
KrzysztofPajak Aug 17, 2026
4664481
Plan fix: flag Vendor's field-level validators as dead code once Task…
KrzysztofPajak Aug 17, 2026
ed2e8f0
Correct row-20 narrative: Vendor was the at-risk host, not Admin (ARC…
KrzysztofPajak Aug 17, 2026
bc9727d
Migrate 'Product attribute combinations' region into BaseProductContr…
KrzysztofPajak Aug 17, 2026
62d77e2
Migrate 'Product Attribute combination - tier prices' region into Bas…
KrzysztofPajak Aug 17, 2026
e55e5ab
Migrate 'Reservation' region into BaseProductController (ARCH-001 Pha…
KrzysztofPajak Aug 17, 2026
871b0d2
Migrate 'Bids' region into BaseProductController (ARCH-001 Phase 1)
KrzysztofPajak Aug 17, 2026
06d4c9b
Drop storeId params from IProductViewModelService; inject IAdminDataS…
KrzysztofPajak Aug 17, 2026
526beee
Task 9 fix round 1: gate PrepareTierPriceModel's store dropdown by Sh…
KrzysztofPajak Aug 17, 2026
ae5a6d1
Reconcile remaining ProductViewModelService rows: vendor-scope produc…
KrzysztofPajak Aug 17, 2026
85ef2bf
Add tests for vendor-scoped product search and dead-param drops (ARCH…
KrzysztofPajak Aug 17, 2026
c1eb4b0
Force VendorId on InsertProductModel/UpdateProductModel for vendor sc…
KrzysztofPajak Aug 17, 2026
0a1a8e1
Plan fix: escalate Task 10 review's per-id ownership filter gap to a …
KrzysztofPajak Aug 17, 2026
e9eba6a
Reduce Admin and Store ProductController to thin BaseProductControlle…
KrzysztofPajak Aug 17, 2026
2bc3309
Filter selected product ids by ownership in Insert*ProductModel (ARCH…
KrzysztofPajak Aug 17, 2026
86f50b4
Delete stale Admin/Store ProductControllerTests.cs, superseded by thi…
KrzysztofPajak Aug 17, 2026
6787f53
Task 11 fix round 1: close review findings (attribute regression test…
KrzysztofPajak Aug 17, 2026
8bc4b86
Delete Vendor's duplicate ProductViewModelService/interface, use Admi…
KrzysztofPajak Aug 17, 2026
b521a35
Task 12 fix round 1: correct stale doc comment, escalate review's orp…
KrzysztofPajak Aug 17, 2026
26888ac
Trim Vendor ProductControllerTests to routing-only, delete superseded…
KrzysztofPajak Aug 17, 2026
f0f2c06
Trim VendorMappingTests to non-Product cases, delete orphaned Vendor …
KrzysztofPajak Aug 17, 2026
eec7855
Add ARCH-001 Phase 2 (view consolidation) design spec
KrzysztofPajak Aug 17, 2026
d0ea382
Add ARCH-001 Phase 2 (view consolidation) implementation plan
KrzysztofPajak Aug 17, 2026
8ca05b8
Fix plan: split fake namespace types into their own file (Task 2), C#…
KrzysztofPajak Aug 17, 2026
a0f5d86
Convert Grand.Web.AdminShared to a Razor Class Library (ARCH-001 Phas…
KrzysztofPajak Aug 17, 2026
d9ba038
Add AdminShared view fallback branch to ViewLocationExpander (ARCH-00…
KrzysztofPajak Aug 17, 2026
2fc0868
Migrate TierPriceCreatePopup to AdminShared, pilot for view consolida…
KrzysztofPajak Aug 17, 2026
6d1324d
Keep Product/List.cshtml as host-specific override, no unification (A…
KrzysztofPajak Aug 17, 2026
190125d
Keep Product/AttributeCombinationPopup.cshtml as host-specific overri…
KrzysztofPajak Aug 17, 2026
00b9aea
Keep Product/Partials/CreateOrUpdate.Info.cshtml as host-specific ove…
KrzysztofPajak Aug 17, 2026
9125fb9
Keep Product/Partials/CreateOrUpdate.Prices.cshtml as host-specific o…
KrzysztofPajak Aug 17, 2026
de545c6
Keep Product/Partials/CreateOrUpdate.PurchasedWithOrders.cshtml as ho…
KrzysztofPajak Aug 17, 2026
a7066ba
Migrate Product/Partials/CreateOrUpdate.cshtml to AdminShared (ARCH-0…
KrzysztofPajak Aug 17, 2026
8fb8dd6
Migrate BulkEdit.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
0eaf0b1
Migrate CreateOrUpdate.Additional.cshtml to AdminShared (ARCH-001 Pha…
KrzysztofPajak Aug 17, 2026
28dee1f
Migrate CreateOrUpdate.Calendar.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
279b5b2
Fix IAdminDataScope<Product> registration collision when hosts share …
KrzysztofPajak Aug 17, 2026
4c32d0c
Migrate CreateOrUpdate.Categories.cshtml to AdminShared (ARCH-001 Pha…
KrzysztofPajak Aug 17, 2026
3c0d1d6
Migrate CreateOrUpdate.Collections.cshtml to AdminShared (ARCH-001 Ph…
KrzysztofPajak Aug 17, 2026
16cdbd4
Migrate RequiredProductAddPopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
ce0068b
Migrate CreateOrUpdate.Discounts.cshtml to AdminShared (ARCH-001 Phas…
KrzysztofPajak Aug 17, 2026
ce5123c
Migrate CreateOrUpdate.Documents.cshtml to AdminShared (ARCH-001 Phas…
KrzysztofPajak Aug 17, 2026
0d01a32
Migrate AssociateProductToAttributeValuePopup.cshtml to AdminShared (…
KrzysztofPajak Aug 17, 2026
f3d9b00
Migrate AssociatedProductAddPopup.cshtml to AdminShared (ARCH-001 Pha…
KrzysztofPajak Aug 17, 2026
79543f0
Migrate BundleProductAddPopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
b0b4cb9
Migrate Create.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
fff0c26
Migrate CrossSellProductAddPopup.cshtml to AdminShared (ARCH-001 Phas…
KrzysztofPajak Aug 17, 2026
02bf8b1
Migrate Edit.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
0cdeafa
Migrate CreateOrUpdate.AssociatedProducts.cshtml to AdminShared (ARCH…
KrzysztofPajak Aug 17, 2026
8625051
Migrate CreateOrUpdate.Bids.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
25d5a8e
Migrate CreateOrUpdate.BundleProducts.cshtml to AdminShared (ARCH-001…
KrzysztofPajak Aug 17, 2026
a2e9802
Migrate CreateOrUpdate.CrossSells.cshtml to AdminShared (ARCH-001 Pha…
KrzysztofPajak Aug 17, 2026
f70a06b
Migrate CreateOrUpdate.Inventory.cshtml to AdminShared (ARCH-001 Phas…
KrzysztofPajak Aug 17, 2026
0058ffc
Migrate CreateOrUpdate.Pictures.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 17, 2026
2908cfe
Migrate CreateOrUpdate.ProductAttributes.TabAttributeCombinations.csh…
KrzysztofPajak Aug 17, 2026
956ec57
Migrate CreateOrUpdate.ProductAttributes.TabAttributes.cshtml to Admi…
KrzysztofPajak Aug 17, 2026
e3a89bb
Spec addendum: widget-zone selection uses per-area partial files, not…
KrzysztofPajak Aug 18, 2026
efb870b
Retrofit BulkEdit.cshtml widget-zone selection to per-area partial fi…
KrzysztofPajak Aug 18, 2026
f32c314
Retrofit Create.cshtml widget-zone selection to per-area partial file…
KrzysztofPajak Aug 18, 2026
117f659
Retrofit Edit.cshtml widget-zone selection to per-area partial files …
KrzysztofPajak Aug 18, 2026
a83be07
Retrofit CreateOrUpdate.Additional.cshtml widget-zone selection to pe…
KrzysztofPajak Aug 18, 2026
5cd268c
Retrofit CreateOrUpdate.AssociatedProducts.cshtml widget-zone selecti…
KrzysztofPajak Aug 18, 2026
3e38d30
Retrofit CreateOrUpdate.Bids.cshtml widget-zone selection to per-area…
KrzysztofPajak Aug 18, 2026
27bbd4f
Retrofit CreateOrUpdate.BundleProducts.cshtml widget-zone selection t…
KrzysztofPajak Aug 18, 2026
c13aa79
Retrofit CreateOrUpdate.Calendar.cshtml widget-zone selection to per-…
KrzysztofPajak Aug 18, 2026
791beb1
Retrofit CreateOrUpdate.Categories.cshtml widget-zone selection to pe…
KrzysztofPajak Aug 18, 2026
5c86aa2
Retrofit CreateOrUpdate.Collections.cshtml widget-zone selection to p…
KrzysztofPajak Aug 18, 2026
c16cdb1
Retrofit CreateOrUpdate.CrossSells.cshtml widget-zone selection to pe…
KrzysztofPajak Aug 18, 2026
8ab0c90
Retrofit CreateOrUpdate.cshtml (tab container) widget-zone selection …
KrzysztofPajak Aug 18, 2026
ecfa5e3
Retrofit CreateOrUpdate.Inventory.cshtml widget-zone selection to per…
KrzysztofPajak Aug 18, 2026
1aa394b
Retrofit CreateOrUpdate.Pictures.cshtml widget-zone selection to per-…
KrzysztofPajak Aug 18, 2026
dee12e0
Retrofit CreateOrUpdate.ProductAttributes.TabAttributeCombinations.cs…
KrzysztofPajak Aug 18, 2026
2054d36
Retrofit CreateOrUpdate.ProductAttributes.TabAttributes.cshtml widget…
KrzysztofPajak Aug 18, 2026
00ec639
Migrate CreateOrUpdate.ProductAttributes.cshtml to AdminShared (ARCH-…
KrzysztofPajak Aug 18, 2026
2c18fec
Migrate CreateOrUpdate.ProductPrices.cshtml to AdminShared (ARCH-001 …
KrzysztofPajak Aug 18, 2026
7486618
Migrate CreateOrUpdate.Recommended.cshtml to AdminShared (ARCH-001 Ph…
KrzysztofPajak Aug 18, 2026
c0eccc4
Migrate CreateOrUpdate.RelatedProducts.cshtml to AdminShared (ARCH-00…
KrzysztofPajak Aug 18, 2026
e739fa4
Migrate CreateOrUpdate.Reviews.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
1ba00e0
Migrate CreateOrUpdate.SEO.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
707e9a5
Migrate CreateOrUpdate.SimilarProducts.cshtml to AdminShared (ARCH-00…
KrzysztofPajak Aug 18, 2026
8cf623c
Migrate CreateOrUpdate.SpecificationAttributes.cshtml to AdminShared …
KrzysztofPajak Aug 18, 2026
64638dd
Migrate CreateOrUpdateProductAttributeValue.cshtml to AdminShared (AR…
KrzysztofPajak Aug 18, 2026
1eb7841
Migrate CreateOrUpdateTierPrice.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
2e73136
Migrate ProductAttributes.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
8d55f66
Migrate ProductAttributeConditionPopup.cshtml to AdminShared (ARCH-00…
KrzysztofPajak Aug 18, 2026
fcec3a1
Migrate ProductAttributeMappingPopup.cshtml to AdminShared (ARCH-001 …
KrzysztofPajak Aug 18, 2026
7df47dd
Migrate ProductAttributeValidationRulesPopup.cshtml to AdminShared (A…
KrzysztofPajak Aug 18, 2026
0d0c5be
Migrate ProductAttributeValueCreatePopup.cshtml to AdminShared (ARCH-…
KrzysztofPajak Aug 18, 2026
bbb5db0
Migrate ProductAttributeValueEditPopup.cshtml to AdminShared (ARCH-00…
KrzysztofPajak Aug 18, 2026
e5713dd
Migrate ProductPicturePopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
79d1df6
Migrate ProductSpecAttrPopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
57048e2
Migrate RecommendedProductAddPopup.cshtml to AdminShared (ARCH-001 Ph…
KrzysztofPajak Aug 18, 2026
78efefe
Migrate RelatedProductAddPopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
1d43f09
Migrate SimilarProductAddPopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
e64ad0c
Migrate TierPriceEditPopup.cshtml to AdminShared (ARCH-001 Phase 2)
KrzysztofPajak Aug 18, 2026
2b5b9d5
Fix dead admin widget zones in consolidated Product views
KrzysztofPajak Aug 18, 2026
36b25c2
Nest AdminShared views under /Views/AdminShared to avoid path collisions
KrzysztofPajak Aug 18, 2026
d337a12
Make RoutedProductDataScope fail closed on an unknown area
KrzysztofPajak Aug 18, 2026
38db1e8
Document the two host-detection idioms and guard _ViewStart on a null…
KrzysztofPajak Aug 18, 2026
65cde42
Amend Phase 2 spec with the post-review corrections
KrzysztofPajak Aug 18, 2026
4b14989
Amend Phase 2 spec: retire ResourceKeyPrefix as a content-gating idiom
KrzysztofPajak Aug 18, 2026
9db9612
Retire ResourceKeyPrefix as a content-gating idiom in Product views
KrzysztofPajak Aug 18, 2026
a414f97
Fix cross-store product export IDOR in ExportExcelAll
KrzysztofPajak Aug 18, 2026
b26b2c8
Wire Grand.Web.Store's own vc:store-widget into Product widget zones
KrzysztofPajak Aug 18, 2026
332c7b2
Remove dead IAdminDataScope<TEntity>.ApplyScope
KrzysztofPajak Aug 19, 2026
e4b2ef1
Harden BaseProductController against CodeQL CSRF finding; gitignore d…
KrzysztofPajak Aug 19, 2026
613fa35
Untrack docs/superpowers/ (now gitignored)
KrzysztofPajak Aug 19, 2026
f830ae7
Add @model ProductModel consistently across Product WidgetZone.*.cshtml
KrzysztofPajak Aug 23, 2026
f2e1c61
Minor fix
KrzysztofPajak Aug 23, 2026
9d136c7
Remove unused file
KrzysztofPajak Aug 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -380,4 +380,5 @@ src/Web/Grand.Web.Store/App_Data/Settings.cfg
src/Web/Grand.Web.Store/Plugins/*
src/Web/Grand.Web.Store/Modules/*
src/Web/Grand.Web.Store/App_Data/DataProtectionKeys/*
src/Web/Grand.Web.Store/wwwroot/assets/images/thumbs/*.**
src/Web/Grand.Web.Store/wwwroot/assets/images/thumbs/*.**.worktrees/
docs/superpowers/

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

80 changes: 7 additions & 73 deletions src/Tests/Grand.Mapping.Tests/Vendor/VendorMappingTests.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,22 @@
using Grand.Mapping;
using Grand.Domain.Catalog;
using Grand.Domain.Common;
using Grand.Web.Vendor.Mapper;
using Grand.Web.Vendor.Models.Catalog;
using Grand.Web.Vendor.Models.Common;
using Grand.Web.Vendor.Models.Vendor;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using VerifyMSTest;
using AddressProfile = Grand.Web.Vendor.Mapper.AddressProfile;
using ProductProfile = Grand.Web.Vendor.Mapper.ProductProfile;
using VendorProfile = Grand.Web.Vendor.Mapper.VendorProfile;

namespace Grand.Mapping.Tests.Vendor;

// Product-related cases (Product/ProductAttributeMapping/ProductAttributeCombination <-> Vendor's
// Models.Catalog) were removed here (ARCH-001 Phase 1 Task 13): the Vendor.Mapper.ProductProfile they
// exercised, and the Vendor.Models.Catalog types they mapped to/from, were deleted as orphans once
// Task 12 repointed Vendor's _ViewImports.cshtml to AdminShared's models/service. The equivalent
// coverage - mapping Product/ProductAttributeMapping/ProductAttributeCombination to/from AdminShared's
// ProductModel via AdminShared's ProductProfile, which Vendor now uses - lives in
// Grand.Mapping.Tests.AdminShared.CatalogProductMappingTests.
[TestClass]
public class VendorMappingTests : VerifyBase
{
Expand All @@ -23,7 +27,6 @@ public void Setup()
{
var config = new MapperConfiguration(cfg => {
cfg.AddProfile<AddressProfile>();
cfg.AddProfile<ProductProfile>();
cfg.AddProfile<VendorProfile>();
});
_mapper = config.CreateMapper();
Expand Down Expand Up @@ -88,73 +91,4 @@ public Task VendorModel_ToVendor()
};
return Verify(_mapper.Map<Grand.Domain.Vendors.Vendor>(model));
}

// ── Product ───────────────────────────────────────────────────────────────

[TestMethod]
public Task Product_ToVendorProductModel()
{
var entity = new Product {
Id = "prod-v-1",
Name = "Vendor Product",
ShortDescription = "Short desc",
FullDescription = "Full description",
Sku = "VSKU001",
Price = 49.99,
OldPrice = 59.99,
Published = true,
StockQuantity = 50,
Weight = 1.5,
DisplayOrder = 1,
ProductTypeId = (ProductType)5
};
return Verify(_mapper.Map<ProductModel>(entity));
}

[TestMethod]
public Task VendorProductModel_ToProduct()
{
var model = new ProductModel {
Name = "New Product",
ShortDescription = "Short",
FullDescription = "Full",
Sku = "SKU002",
Price = 39.99,
Published = true,
StockQuantity = 25
};
return Verify(_mapper.Map<Product>(model));
}

// ── ProductAttributeMapping ───────────────────────────────────────────────

[TestMethod]
public Task ProductAttributeMapping_ToVendorModel()
{
var entity = new ProductAttributeMapping {
Id = "pam-v-1",
ProductAttributeId = "pa-1",
TextPrompt = "Choose size",
IsRequired = true,
AttributeControlTypeId = (AttributeControlType)1,
DisplayOrder = 0
};
return Verify(_mapper.Map<ProductModel.ProductAttributeMappingModel>(entity));
}

// ── ProductAttributeCombination ───────────────────────────────────────────

[TestMethod]
public Task ProductAttributeCombination_ToVendorModel()
{
var entity = new ProductAttributeCombination {
Id = "pac-v-1",
Sku = "COMB-SKU",
StockQuantity = 5,
AllowOutOfStockOrders = false,
OverriddenPrice = null,
NotifyAdminForQuantityBelow = 1
};
return Verify(_mapper.Map<ProductAttributeCombinationModel>(entity));
}
}
Loading
Loading