public void FailsWithMessageAboutError_WhenWarningsAndErrors() { var providerRepository = A.Fake <ProviderRepository>(); var productValidator = A.Fake <ProductValidator>(); var processor = A.Fake <ProviderProcessor>( opt => opt.WithArgumentsForConstructor( new object[] { providerRepository, productValidator })); //Пусть existingData не задана. A.CallTo(() => providerRepository.FindByProviderId(A.Dummy <Guid>())) .WithAnyArguments().Returns(null); //Если в данных содержится 2 продукта, var data = new ProviderData { ProviderId = Guid.NewGuid(), Products = new[] { new ProductData { Id = Guid.NewGuid() }, new ProductData { Id = Guid.NewGuid() } } }; var message = JsonConvert.SerializeObject(data); //причем у одного из них неверная цена, var product0 = data.Products[0]; var validationResult0 = new ProductValidationResult( product0, "Bad price", ProductValidationSeverity.Warning); A.CallTo(() => productValidator.ValidateProduct(product0)) .Returns(new[] { validationResult0 }); //а у другого продукта неизвестное имя, var product1 = data.Products[1]; var validationResult1 = new ProductValidationResult( product1, "Unknown product name", ProductValidationSeverity.Error); A.CallTo(() => productValidator.ValidateProduct(product1)) .Returns(new[] { validationResult1 }); //то протокол операции должен содержать сообщение о неизвестном имени продукта. processor.ProcessProviderData(message).ToString() .Should().Contain("Unknown product name"); }
public void ProcessProviderData_ReportFail_WhenIncorrectProduct() { var providerData1 = new ProviderData { Products = new[] { new ProductData() } }; var validationResult = new ProductValidationResult(); var message = JsonConvert.SerializeObject(providerData1); A.CallTo(() => productValidator.ValidateProductData(new [] { A <ProductData> ._ })).Returns(validationResult); var result = processor.ProcessProviderData(message); Approvals.Verify(result); }