/// <summary> /// <see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/> /// </summary> /// <param name="product"><see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/></param> public void AddProduct(Product product) { try { //Resolve root dependencies and perform query ISalesManagementService salesManagement = IoCFactory.Instance.CurrentContainer.Resolve <ISalesManagementService>(); salesManagement.AddProduct(product); } catch (ArgumentNullException ex) { //trace data for internal health system and return specific FaultException here! //Log and throw is a knowed anti-pattern but in this point ( entry point for clients this is admited!) //log exception for manage health system ITraceManager traceManager = IoCFactory.Instance.CurrentContainer.Resolve <ITraceManager>(); traceManager.TraceError(ex.Message); //propagate exception to client ServiceError detailedError = new ServiceError() { ErrorMessage = Resources.Messages.exception_InvalidArguments }; throw new FaultException <ServiceError>(detailedError); } }
public void AddProduct_Invoke_NullItemThrowNewArgumentNullException_Test() { //Arrange ISalesManagementService productService = IoCFactory.Instance.CurrentContainer.Resolve <ISalesManagementService>(); //Act productService.AddProduct(null); }
public void AddProduct_Invoke_Test() { //Arrange ISalesManagementService productService = IoCFactory.Instance.CurrentContainer.Resolve <ISalesManagementService>(); Product product = new Product() { AmountInStock = 10, ProductDescription = "product description", Publisher = "Microsoft Samples", UnitAmount = "€", UnitPrice = 100M }; //Act productService.AddProduct(product); List <Product> products = productService.FindProductBySpecification("Microsoft Samples", null); //Assert Assert.IsNotNull(products); Assert.IsTrue(products.Count == 1); }