public void ValidateSku_When_not_uniqe_Then_fails()
        {
            var validator = new ProductRequestCustomValidator();
            var request   = ProductCreateRequestBuilder.Create()
                            .WithProduct(ProductDtoBuilder.Create()
                                         .WithVariant(ProductVariantDtoBuilder.Create()
                                                      .WithSku("001")
                                                      .Build())
                                         .WithVariant(ProductVariantDtoBuilder.Create()
                                                      .WithSku("000")
                                                      .Build())
                                         .Build())
                            .Build();

            var errors = new ArgumentErrorsCollection();

            var dbContextMock = GetDbContextMock();

            validator.ValidateSkus(dbContextMock.Object, request, errors);

            dbContextMock.VerifyGet(c => c.Products, Times.AtLeast(request.Product.Variants.Count));

            Assert.IsNotEmpty(errors);
            Assert.IsTrue(errors.HasArgument("Product.Variants.Sku"), errors[0].ArgumentName);
        }
        public void ValidateSku_When_not_uniqe_Then_fails()
        {
            var validator = new ProductRequestCustomValidator();
            var request = ProductCreateRequestBuilder.Create()
                            .WithProduct(ProductDtoBuilder.Create()
                                .WithVariant(ProductVariantDtoBuilder.Create()
                                    .WithSku("001")
                                .Build())
                                .WithVariant(ProductVariantDtoBuilder.Create()
                                    .WithSku("000")
                                .Build())
                            .Build())
                        .Build();

            var errors = new ArgumentErrorsCollection();

            var dbContextMock = GetDbContextMock();

            validator.ValidateSkus(dbContextMock.Object, request, errors);

            dbContextMock.VerifyGet(c => c.Products, Times.AtLeast(request.Product.Variants.Count));

            Assert.IsNotEmpty(errors);
            Assert.IsTrue(errors.HasArgument("Product.Variants.Sku"), errors[0].ArgumentName);
        }
        public void ValidateStoreId_When_existing_store_Then_passes()
        {
            var validator = new ProductRequestCustomValidator();
            var errors    = new ArgumentErrorsCollection();

            var requestMock   = new Mock <ProductGetByIdRequest>();
            var dbContextMock = GetDbContextMock();

            requestMock.SetupGet(r => r.StoreId).Returns(10);

            validator.ValidateStoreId(dbContextMock.Object, requestMock.Object, errors);

            dbContextMock.VerifyGet(c => c.Stores, Times.Once);

            Assert.IsEmpty(errors);
        }
        public void ValidateStoreId_When_existing_store_Then_passes()
        {
            var validator = new ProductRequestCustomValidator();
            var errors = new ArgumentErrorsCollection();

            var requestMock = new Mock<ProductGetByIdRequest>();
            var dbContextMock = GetDbContextMock();

            requestMock.SetupGet(r => r.StoreId).Returns(10);

            validator.ValidateStoreId(dbContextMock.Object, requestMock.Object, errors);

            dbContextMock.VerifyGet(c => c.Stores, Times.Once);

            Assert.IsEmpty(errors);
        }
        public void ValidateSku_When_unique_Then_passes()
        {
            var validator = new ProductRequestCustomValidator();

            var request = ProductCreateRequestBuilder.Create().WithProduct(
                ProductDtoBuilder.Create().WithVariant(
                    ProductVariantDtoBuilder.Create().WithSku("001")
                    .Build())
                .Build())
                          .Build();

            var errors = new ArgumentErrorsCollection();

            var dbContextMock = GetDbContextMock();

            validator.ValidateSkus(dbContextMock.Object, request, errors);

            dbContextMock.VerifyGet(c => c.Products, Times.Once);

            Assert.IsEmpty(errors);
        }
        public void ValidateSku_When_unique_Then_passes()
        {
            var validator = new ProductRequestCustomValidator();

            var request = ProductCreateRequestBuilder.Create().WithProduct(
                            ProductDtoBuilder.Create().WithVariant(
                                ProductVariantDtoBuilder.Create().WithSku("001")
                                .Build())
                            .Build())
                        .Build();

            var errors = new ArgumentErrorsCollection();

            var dbContextMock = GetDbContextMock();

            validator.ValidateSkus(dbContextMock.Object, request, errors);

            dbContextMock.VerifyGet(c => c.Products, Times.Once);

            Assert.IsEmpty(errors);
        }