/// <summary> /// <see cref="Microsoft.Samples.NLayerApp.Application.MainBoundedContext.ERPModule.Services.ISalesAppService" /> /// </summary> /// <param name="softwareDto"> /// <see cref="Microsoft.Samples.NLayerApp.Application.MainBoundedContext.ERPModule.Services.ISalesAppService" /> /// </param> public SoftwareDto AddNewSoftware(SoftwareDto softwareDto) { if (softwareDto == null) { throw new ArgumentException(Messages.warning_CannotAddSoftwareWithNullInformation); } //Create the softare entity var newSoftware = new Software(softwareDto.Title, softwareDto.Description, softwareDto.LicenseCode); //set unit price and stock newSoftware.ChangeUnitPrice(softwareDto.UnitPrice); newSoftware.IncrementStock(softwareDto.AmountInStock); //Assign the poid newSoftware.GenerateNewIdentity(); //save software SaveProduct(newSoftware); //return software dto return newSoftware.ProjectedAs<SoftwareDto>(); }
public void AddNewSoftwareReturnAddedSoftware() { //Arrange var customerRepository = new StubICustomerRepository(); var orderRepository = new StubIOrderRepository(); var productRepository = new StubIProductRepository(); productRepository.UnitOfWorkGet = () => { var uow = new StubIUnitOfWork(); uow.Commit = () => { }; return uow; }; productRepository.AddProduct = (product) => { }; var salesManagement = new SalesAppService(productRepository, orderRepository, customerRepository); var dto = new SoftwareDto() { Title = "The title", Description = "description", LicenseCode = "license code", AmountInStock = 10, UnitPrice = 10 }; //Act var result = salesManagement.AddNewSoftware(dto); //Assert Assert.IsNotNull(result); Assert.IsTrue(result.Id != Guid.Empty); Assert.AreEqual(result.Title, dto.Title); Assert.AreEqual(result.Description, dto.Description); Assert.AreEqual(result.LicenseCode, dto.LicenseCode); Assert.AreEqual(result.AmountInStock, dto.AmountInStock); Assert.AreEqual(result.UnitPrice, dto.UnitPrice); }
/// <summary> /// <see /// cref="Microsoft.Samples.NLayerApp.Application.MainBoundedContext.BankingModule.Services.IMainBoundedContextService" /> /// </summary> /// <param name="software"> /// <see /// cref="Microsoft.Samples.NLayerApp.Application.MainBoundedContext.BankingModule.Services.IMainBoundedContextService" /> /// </param> /// <returns> /// <see /// cref="Microsoft.Samples.NLayerApp.Application.MainBoundedContext.BankingModule.Services.IMainBoundedContextService" /> /// </returns> public SoftwareDto AddNewSoftware(SoftwareDto software) { return _salesAppService.AddNewSoftware(software); }
public void AddNewSoftwareThrowExceptionWhenDataIsInvalid() { //Arrange var customerRepository = new StubICustomerRepository(); var productRepository = new StubIProductRepository(); var orderRepository = new StubIOrderRepository(); var salesManagement = new SalesAppService(productRepository, orderRepository, customerRepository); var dto = new SoftwareDto() { Title = "The title", Description = "the description", LicenseCode = "license", AmountInStock = 10, UnitPrice = -1 //this is a not valid value }; //Act var result = salesManagement.AddNewSoftware(dto); }