diff --git a/README.md b/README.md index 9cd0aea1..8cc71dba 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ More features will be added over time. The following is a list of features to be added in the future: * In-store pickup. -* Package and bundle support. * Multi-payment support. Installation diff --git a/Sources/AssemblyVersionAuto.cs b/Sources/AssemblyVersionAuto.cs index fb9557f4..9e0bc88d 100644 --- a/Sources/AssemblyVersionAuto.cs +++ b/Sources/AssemblyVersionAuto.cs @@ -2,6 +2,6 @@ -[assembly: AssemblyVersion("10.4.1.0")] -[assembly: AssemblyInformationalVersion("10.4.1")] -[assembly: AssemblyFileVersion("10.4.1.2266")] +[assembly: AssemblyVersion("10.4.2.0")] +[assembly: AssemblyInformationalVersion("10.4.2")] +[assembly: AssemblyFileVersion("10.4.2.2273")] diff --git a/Sources/EPiServer.Reference.Commerce.Manager/EPiServer.Reference.Commerce.Manager.csproj b/Sources/EPiServer.Reference.Commerce.Manager/EPiServer.Reference.Commerce.Manager.csproj index ba9e869b..b0c77b9f 100644 --- a/Sources/EPiServer.Reference.Commerce.Manager/EPiServer.Reference.Commerce.Manager.csproj +++ b/Sources/EPiServer.Reference.Commerce.Manager/EPiServer.Reference.Commerce.Manager.csproj @@ -33,8 +33,7 @@ prompt 4 true - true - 5 + 6 pdbonly @@ -44,6 +43,7 @@ prompt 4 true + 6 @@ -431,109 +431,109 @@ - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Business.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Business.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Commerce.Internal.Migration.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Commerce.Internal.Migration.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.Data.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.Data.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Marketing.Validators.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Marketing.Validators.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Payment.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Payment.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Website.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Website.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Workflow.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Workflow.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.DataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.DataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.FileUploader.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.FileUploader.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.MetaDataPlus.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.MetaDataPlus.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.Extensions.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.Extensions.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.LuceneSearchProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.LuceneSearchProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.SqlDataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.SqlDataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.WebConsoleLib.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.WebConsoleLib.dll True - ..\..\packages\EPiServer.CommerceManager.10.4.1\lib\net45\Mediachase.ConsoleManager.dll + ..\..\packages\EPiServer.CommerceManager.10.4.2\lib\net45\Mediachase.ConsoleManager.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\AjaxControlToolkit.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\AjaxControlToolkit.dll True - ..\..\packages\EPiServer.CommerceManager.10.4.1\lib\net45\ComponentArt.Web.UI.dll + ..\..\packages\EPiServer.CommerceManager.10.4.2\lib\net45\ComponentArt.Web.UI.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\nsoftware.IBizPay.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\nsoftware.IBizPay.dll True - ..\..\packages\EPiServer.CommerceManager.10.4.1\lib\net45\RssToolkit.dll + ..\..\packages\EPiServer.CommerceManager.10.4.2\lib\net45\RssToolkit.dll True - ..\..\packages\EPiServer.CommerceManager.10.4.1\lib\net45\Validators.dll + ..\..\packages\EPiServer.CommerceManager.10.4.2\lib\net45\Validators.dll True - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + diff --git a/Sources/EPiServer.Reference.Commerce.Manager/packages.config b/Sources/EPiServer.Reference.Commerce.Manager/packages.config index 360a6fa1..611844d9 100644 --- a/Sources/EPiServer.Reference.Commerce.Manager/packages.config +++ b/Sources/EPiServer.Reference.Commerce.Manager/packages.config @@ -32,6 +32,6 @@ - - + + diff --git a/Sources/EPiServer.Reference.Commerce.Manager/web.config b/Sources/EPiServer.Reference.Commerce.Manager/web.config index a9b794ce..8720bb24 100644 --- a/Sources/EPiServer.Reference.Commerce.Manager/web.config +++ b/Sources/EPiServer.Reference.Commerce.Manager/web.config @@ -550,75 +550,75 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Sources/EPiServer.Reference.Commerce.Shared/EPiServer.Reference.Commerce.Shared.csproj b/Sources/EPiServer.Reference.Commerce.Shared/EPiServer.Reference.Commerce.Shared.csproj index ad250a54..ff213052 100644 --- a/Sources/EPiServer.Reference.Commerce.Shared/EPiServer.Reference.Commerce.Shared.csproj +++ b/Sources/EPiServer.Reference.Commerce.Shared/EPiServer.Reference.Commerce.Shared.csproj @@ -22,7 +22,7 @@ prompt 4 true - 5 + 6 pdbonly @@ -32,6 +32,7 @@ prompt 4 true + 6 bin\CA\ @@ -289,83 +290,83 @@ --> - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Business.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Business.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Commerce.Internal.Migration.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Commerce.Internal.Migration.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.Data.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.Data.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Marketing.Validators.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Marketing.Validators.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Payment.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Payment.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Website.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Website.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Workflow.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Workflow.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.DataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.DataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.FileUploader.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.FileUploader.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.MetaDataPlus.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.MetaDataPlus.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.Extensions.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.Extensions.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.LuceneSearchProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.LuceneSearchProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.SqlDataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.SqlDataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.WebConsoleLib.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.WebConsoleLib.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\AjaxControlToolkit.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\AjaxControlToolkit.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\nsoftware.IBizPay.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\nsoftware.IBizPay.dll True diff --git a/Sources/EPiServer.Reference.Commerce.Shared/packages.config b/Sources/EPiServer.Reference.Commerce.Shared/packages.config index c2b0eba4..e201293d 100644 --- a/Sources/EPiServer.Reference.Commerce.Shared/packages.config +++ b/Sources/EPiServer.Reference.Commerce.Shared/packages.config @@ -30,5 +30,5 @@ - + diff --git a/Sources/EPiServer.Reference.Commerce.Site.Tests/EPiServer.Reference.Commerce.Site.Tests.csproj b/Sources/EPiServer.Reference.Commerce.Site.Tests/EPiServer.Reference.Commerce.Site.Tests.csproj index b1c341f4..57b2ea91 100644 --- a/Sources/EPiServer.Reference.Commerce.Site.Tests/EPiServer.Reference.Commerce.Site.Tests.csproj +++ b/Sources/EPiServer.Reference.Commerce.Site.Tests/EPiServer.Reference.Commerce.Site.Tests.csproj @@ -30,7 +30,7 @@ prompt 4 true - 5 + 6 pdbonly @@ -40,6 +40,7 @@ prompt 4 true + 6 bin\CA\ @@ -410,91 +411,91 @@ --> - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Business.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Business.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Commerce.Internal.Migration.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Commerce.Internal.Migration.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.Data.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.Data.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Marketing.Validators.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Marketing.Validators.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Payment.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Payment.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Website.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Website.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Workflow.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Workflow.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.DataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.DataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.FileUploader.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.FileUploader.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.MetaDataPlus.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.MetaDataPlus.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.Extensions.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.Extensions.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.LuceneSearchProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.LuceneSearchProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.SqlDataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.SqlDataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.WebConsoleLib.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.WebConsoleLib.dll True - ..\..\packages\EPiServer.Recommendations.1.0.6\lib\net45\EPiServer.Recommendations.dll + ..\..\packages\EPiServer.Recommendations.1.1.0\lib\net45\EPiServer.Recommendations.dll True - ..\..\packages\EPiServer.Recommendations.Commerce.10.4.1\lib\net45\EPiServer.Recommendations.Commerce.dll + ..\..\packages\EPiServer.Recommendations.Commerce.10.4.2\lib\net45\EPiServer.Recommendations.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\AjaxControlToolkit.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\AjaxControlToolkit.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\nsoftware.IBizPay.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\nsoftware.IBizPay.dll True diff --git a/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/CategoryControllerTests.cs b/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/CategoryControllerTests.cs index 1c2bdda9..35b0a0b7 100644 --- a/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/CategoryControllerTests.cs +++ b/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/CategoryControllerTests.cs @@ -60,10 +60,35 @@ public void Index_WhenPassingFormModel_ShouldPassItOnToFactory() // Assert _viewModelFactoryMock.Verify(v => v.Create(It.IsAny(), formModel)); } - + + [Fact] + public void Facet_WhenBrowsingFirstResultPage_ShouldSendFacetTracking() + { + _subject.Facet(null, new FilterOptionViewModel() {SelectedFacet = "key:value", Page = 1 }); + _recommendationServiceMock.Verify( + x => x.SendFacetTrackingData( + It.IsAny(), + It.IsAny() + ), + Times.Once); + } + + [Fact] + public void Facet_WhenBrowsingNextResultPage_ShouldNotSendFacetTracking() + { + _subject.Facet(null, new FilterOptionViewModel() {SelectedFacet = "key:value", Page = 2 }); + _recommendationServiceMock.Verify( + x => x.SendFacetTrackingData( + It.IsAny(), + It.IsAny() + ), + Times.Never); + } + private readonly CategoryController _subject; private readonly Mock _viewModelFactoryMock; private readonly Mock _httpRequestMock; + Mock _recommendationServiceMock; public CategoryControllerTests() { @@ -72,13 +97,14 @@ public CategoryControllerTests() .Returns(() => new ContentReference(1)); _viewModelFactoryMock = new Mock(null, null); _httpRequestMock = new Mock(); + _recommendationServiceMock = new Mock(); var context = new Mock(); context.SetupGet(x => x.Request).Returns(_httpRequestMock.Object); _subject = new CategoryController( - _viewModelFactoryMock.Object, - Mock.Of(), + _viewModelFactoryMock.Object, + _recommendationServiceMock.Object, referenceConverterMock.Object); _subject.ControllerContext = new ControllerContext(context.Object, new RouteData(), _subject); } diff --git a/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/SearchControllerTests.cs b/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/SearchControllerTests.cs index 5e2098c7..ab6c929c 100644 --- a/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/SearchControllerTests.cs +++ b/Sources/EPiServer.Reference.Commerce.Site.Tests/Features/Search/Controllers/SearchControllerTests.cs @@ -29,9 +29,9 @@ public void Index_ShouldReturnViewModel() } [Fact] - public void Index_ShouldSendSearchTracking() + public void Index_WhenBrowsingFirstResultPage_ShouldSendSearchTracking() { - _subject.Index(new SearchPage(), new FilterOptionViewModel()); + _subject.Index(new SearchPage(), new FilterOptionViewModel() { Page = 1 }); _recommendationServiceMock.Verify( x => x.SendSearchTracking( It.IsAny(), @@ -41,6 +41,19 @@ public void Index_ShouldSendSearchTracking() Times.Once); } + [Fact] + public void Index_WhenBrowsingNextResultPage_ShouldNotSendSearchTracking() + { + _subject.Index(new SearchPage(), new FilterOptionViewModel() { Page = 2 }); + _recommendationServiceMock.Verify( + x => x.SendSearchTracking( + It.IsAny(), + It.IsAny(), + It.IsAny>() + ), + Times.Never); + } + [Fact] public void QuickSearch_WhenSearch_ShouldReturnIEnumerableProductViewModel() { diff --git a/Sources/EPiServer.Reference.Commerce.Site.Tests/packages.config b/Sources/EPiServer.Reference.Commerce.Site.Tests/packages.config index c47e9a99..76b97398 100644 --- a/Sources/EPiServer.Reference.Commerce.Site.Tests/packages.config +++ b/Sources/EPiServer.Reference.Commerce.Site.Tests/packages.config @@ -41,7 +41,7 @@ - - - + + + diff --git a/Sources/EPiServer.Reference.Commerce.Site/EPiServer.Reference.Commerce.Site.csproj b/Sources/EPiServer.Reference.Commerce.Site/EPiServer.Reference.Commerce.Site.csproj index a4f4d34f..cb6d3dbb 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/EPiServer.Reference.Commerce.Site.csproj +++ b/Sources/EPiServer.Reference.Commerce.Site/EPiServer.Reference.Commerce.Site.csproj @@ -931,16 +931,26 @@ 10.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) - + true + full + false bin\ DEBUG;TRACE + prompt + 4 true - full - AnyCPU + 6 + + + pdbonly + true + bin\ + TRACE prompt - MinimumRecommendedRules.ruleset - 5 + 4 + true + 6 bin\ @@ -997,103 +1007,103 @@ - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Business.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Business.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\EPiServer.Commerce.Internal.Migration.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\EPiServer.Commerce.Internal.Migration.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.BusinessFoundation.Data.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.BusinessFoundation.Data.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Marketing.Validators.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Marketing.Validators.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Payment.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Payment.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Plugins.Shipping.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Website.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Website.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Commerce.Workflow.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Commerce.Workflow.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.DataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.DataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.FileUploader.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.FileUploader.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.MetaDataPlus.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.MetaDataPlus.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.Extensions.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.Extensions.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.Search.LuceneSearchProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.Search.LuceneSearchProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.SqlDataProvider.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.SqlDataProvider.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\Mediachase.WebConsoleLib.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\Mediachase.WebConsoleLib.dll True - ..\..\packages\EPiServer.Commerce.UI.10.4.1\lib\net45\EPiServer.Commerce.Shell.dll + ..\..\packages\EPiServer.Commerce.UI.10.4.2\lib\net45\EPiServer.Commerce.Shell.dll True - ..\..\packages\EPiServer.Commerce.UI.ManagerIntegration.10.4.1\lib\net45\EPiServer.Commerce.Shell.ManagerIntegration.dll + ..\..\packages\EPiServer.Commerce.UI.ManagerIntegration.10.4.2\lib\net45\EPiServer.Commerce.Shell.ManagerIntegration.dll True - ..\..\packages\EPiServer.Commerce.UI.10.4.1\lib\net45\EPiServer.Commerce.UI.dll + ..\..\packages\EPiServer.Commerce.UI.10.4.2\lib\net45\EPiServer.Commerce.UI.dll True - ..\..\packages\EPiServer.Recommendations.1.0.6\lib\net45\EPiServer.Recommendations.dll + ..\..\packages\EPiServer.Recommendations.1.1.0\lib\net45\EPiServer.Recommendations.dll True - ..\..\packages\EPiServer.Recommendations.Commerce.10.4.1\lib\net45\EPiServer.Recommendations.Commerce.dll + ..\..\packages\EPiServer.Recommendations.Commerce.10.4.2\lib\net45\EPiServer.Recommendations.Commerce.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\AjaxControlToolkit.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\AjaxControlToolkit.dll True - ..\..\packages\EPiServer.Commerce.Core.10.4.1\lib\net45\nsoftware.IBizPay.dll + ..\..\packages\EPiServer.Commerce.Core.10.4.2\lib\net45\nsoftware.IBizPay.dll True diff --git a/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/CategoryController.cs b/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/CategoryController.cs index 723784fb..0623c374 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/CategoryController.cs +++ b/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/CategoryController.cs @@ -42,7 +42,7 @@ public ViewResult Index(FashionNode currentContent, FilterOptionViewModel viewMo [ChildActionOnly] public ActionResult Facet(FashionNode currentContent, FilterOptionViewModel viewModel) { - if (viewModel != null && !string.IsNullOrEmpty(viewModel.SelectedFacet)) + if (viewModel != null && !string.IsNullOrEmpty(viewModel.SelectedFacet) && viewModel.Page <= 1) { _recommendationService.SendFacetTrackingData(HttpContext, viewModel.SelectedFacet); } diff --git a/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/SearchController.cs b/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/SearchController.cs index 3efd0739..e53883b6 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/SearchController.cs +++ b/Sources/EPiServer.Reference.Commerce.Site/Features/Search/Controllers/SearchController.cs @@ -35,9 +35,12 @@ public SearchController( public ActionResult Index(SearchPage currentPage, FilterOptionViewModel filterOptions) { var viewModel = _viewModelFactory.Create(currentPage, filterOptions); - viewModel.Recommendations = _recommendationService + if (filterOptions.Page <= 1) + { + viewModel.Recommendations = _recommendationService .SendSearchTracking(HttpContext, filterOptions.Q, viewModel.ProductViewModels.Select(x => x.Code)) .GetSearchResultRecommendations(_referenceConverter); + } return View(viewModel); } diff --git a/Sources/EPiServer.Reference.Commerce.Site/Features/Shared/Extensions/LineItemExtensions.cs b/Sources/EPiServer.Reference.Commerce.Site/Features/Shared/Extensions/LineItemExtensions.cs index 17e3163c..22e87be9 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/Features/Shared/Extensions/LineItemExtensions.cs +++ b/Sources/EPiServer.Reference.Commerce.Site/Features/Shared/Extensions/LineItemExtensions.cs @@ -5,6 +5,7 @@ using System; using System.Web; using EPiServer.Commerce.Order; +using EPiServer.Core; using EPiServer.Reference.Commerce.Site.Features.Cart.ViewModels; namespace EPiServer.Reference.Commerce.Site.Features.Shared.Extensions @@ -19,9 +20,7 @@ public static class LineItemExtensions public static string GetUrl(this ILineItem lineItem) { - var entryContentLink = _referenceConverter.Service.GetContentLink(lineItem.Code); - var entry = _contentLoader.Service.Get(entryContentLink); - return entry.GetUrl(); + return GetEntryContent(lineItem.Code)?.GetUrl(); } public static string GetFullUrl(this ILineItem lineItem) @@ -43,9 +42,22 @@ public static string GetThumbnailUrl(this CartItemViewModel cartItem) private static string GetThumbnailUrl(string code) { - var content = _contentLoader.Service.Get(_referenceConverter.Service.GetContentLink(code, CatalogContentType.CatalogEntry)); - + var content = GetEntryContent(code); + if (content == null) + { + return string.Empty; + } return _thumbnailUrlResolver.Service.GetThumbnailUrl(content, "thumbnail"); - } + } + + private static EntryContentBase GetEntryContent(string code) + { + var entryContentLink = _referenceConverter.Service.GetContentLink(code); + if (ContentReference.IsNullOrEmpty(entryContentLink)) + { + return null; + } + return _contentLoader.Service.Get(entryContentLink); + } } } \ No newline at end of file diff --git a/Sources/EPiServer.Reference.Commerce.Site/Infrastructure/SiteInitialization.cs b/Sources/EPiServer.Reference.Commerce.Site/Infrastructure/SiteInitialization.cs index af2dd10c..3aa0ea3b 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/Infrastructure/SiteInitialization.cs +++ b/Sources/EPiServer.Reference.Commerce.Site/Infrastructure/SiteInitialization.cs @@ -5,6 +5,7 @@ using EPiServer.Framework.Initialization; using EPiServer.Framework.Web; using EPiServer.Globalization; +using EPiServer.Recommendations.Widgets; using EPiServer.Reference.Commerce.Site.Features.Market.Services; using EPiServer.Reference.Commerce.Site.Infrastructure.Attributes; using EPiServer.Reference.Commerce.Site.Infrastructure.Business; @@ -15,6 +16,9 @@ using Mediachase.Commerce; using Mediachase.Commerce.Core; using Newtonsoft.Json; +using System; +using System.Linq; +using System.Text; using System.Web; using System.Web.Http; using System.Web.Mvc; @@ -43,6 +47,15 @@ public void Initialize(InitializationEngine context) DisablePromotionTypes(context); SetupExcludedPromotionEntries(context); + + //This method creates and activates the default Recommendations widgets. + //It only needs to run once, not every initialization, and only if you use the Recommendations feature. + //Instructions: + //* Enter the configuration values for Recommendations in web.config + //* Make sure that the episerver:RecommendationsSilentMode flag is not set to true. + //* Uncomment the following line, compile, start site, commment the line again, compile. + + //SetupRecommendationsWidgets(context); } public void ConfigureContainer(ServiceConfigurationContext context) @@ -112,5 +125,42 @@ private void SetupExcludedPromotionEntries(InitializationEngine context) //var ExcludingCodes = new string[] { "SKU-36127195", "SKU-39850363", "SKU-39101253" }; //filterSettings.AddFilter(x => !ExcludingCodes.Contains(x.Code)); } + + private void SetupRecommendationsWidgets(InitializationEngine context) + { + var configuration = context.Locate.Advanced.GetInstance(); + + if (configuration.SilentMode) + { + return; + } + + var widgetService = context.Locate.Advanced.GetInstance(); + var response = widgetService.CreateWidgets(); + + if (response.Status != "OK") + { + var error = response.Errors.First(); + var message = new StringBuilder($"Code: {error.Code}, Message: {error.Error}"); + + if (error.Field != null) + { + message.Append($", Field: {error.Field}"); + } + + throw new Exception(message.ToString()); + } + + foreach (var widget in response.EpiPerPage.Pages.SelectMany(x => x.Widgets)) + { + widget.Active = true; + var success = widgetService.UpdateWidget(widget); + + if (!success) + { + throw new Exception($"Failed to activate widget {widget.WidgetName}"); + } + } + } } } \ No newline at end of file diff --git a/Sources/EPiServer.Reference.Commerce.Site/Views/OrderHistory/Index.cshtml b/Sources/EPiServer.Reference.Commerce.Site/Views/OrderHistory/Index.cshtml index b25e8467..92e1364b 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/Views/OrderHistory/Index.cshtml +++ b/Sources/EPiServer.Reference.Commerce.Site/Views/OrderHistory/Index.cshtml @@ -42,7 +42,7 @@ diff --git a/Sources/EPiServer.Reference.Commerce.Site/Web.config b/Sources/EPiServer.Reference.Commerce.Site/Web.config index 6b76172d..40d4f568 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/Web.config +++ b/Sources/EPiServer.Reference.Commerce.Site/Web.config @@ -240,91 +240,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/Commerce/Commerce.zip b/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/Commerce/Commerce.zip index 8a8b8060..503b1d7f 100644 Binary files a/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/Commerce/Commerce.zip and b/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/Commerce/Commerce.zip differ diff --git a/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell.ManagerIntegration/EPiServer.Commerce.Shell.ManagerIntegration.zip b/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell.ManagerIntegration/EPiServer.Commerce.Shell.ManagerIntegration.zip index b70850ee..65a76c41 100644 Binary files a/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell.ManagerIntegration/EPiServer.Commerce.Shell.ManagerIntegration.zip and b/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell.ManagerIntegration/EPiServer.Commerce.Shell.ManagerIntegration.zip differ diff --git a/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell/EPiServer.Commerce.Shell.zip b/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell/EPiServer.Commerce.Shell.zip index 42e2b508..c7f55cca 100644 Binary files a/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell/EPiServer.Commerce.Shell.zip and b/Sources/EPiServer.Reference.Commerce.Site/modules/_protected/EPiServer.Commerce.Shell/EPiServer.Commerce.Shell.zip differ diff --git a/Sources/EPiServer.Reference.Commerce.Site/packages.config b/Sources/EPiServer.Reference.Commerce.Site/packages.config index 9d43d96d..ff271fc3 100644 --- a/Sources/EPiServer.Reference.Commerce.Site/packages.config +++ b/Sources/EPiServer.Reference.Commerce.Site/packages.config @@ -50,10 +50,10 @@ - - - - - - + + + + + +