Beispiel #1
0
      /// <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);
      }