Ejemplo n.º 1
0
        public void ProductService_DeleteValidProduct_ShouldReturnNoProducts()
        {
            // Arrange
            var product = new Data.Models.Product.Product
            {
                Name = "TestVideo_1",
                ProductMembershipValue = 0,
                ProductCategory        = RefProductCategory.Video,
                ProductForm            = RefProductForm.Physical,
                UnitCost = 10.99M
            };

            using (TransactionScope transactionScope = new TransactionScope())
            {
                var productResult = ProductService.AddProduct(product);

                //Act
                ProductService.DeleteProduct(productResult);



                //Assert
                var result = ProductService.GetAllProducts();
                result.Should().BeNullOrEmpty();
                result.Should().NotContain(product);
            }
        }
        public void PurchaseOrderRequestService_AddValidProductUserRequest_ShouldReturnTrackingMembership()
        {
            using (TransactionScope transactionScope = new TransactionScope())
            {
                // Set up and add a book and membership
                var productBook = new Data.Models.Product.Product
                {
                    Name = "TestBook1",
                    ProductMembershipValue = 0,
                    ProductCategory        = RefProductCategory.Book,
                    ProductForm            = RefProductForm.Physical,
                    UnitCost = 10.99M,
                    Weight   = 1.00M
                };

                var productInput1 = ProductService.AddProduct(productBook);

                var productMem = new Data.Models.Product.Product
                {
                    Name = "TestMembership3",
                    ProductMembershipValue = 90, // 90 days
                    ProductCategory        = RefProductCategory.Video,
                    ProductForm            = RefProductForm.Membership,
                    UnitCost = 30.00M
                };

                var productInput2 = ProductService.AddProduct(productMem);

                #region maybe use later
                //var addBill = new AddressBilling
                //{
                //    Street1 = "1000 Test Dr.",
                //    Street2 = "",
                //    City = "Test1City",
                //    State = RefState.AL,
                //    Zip = 01234
                //};

                //var addShip = new AddressShipping
                //{
                //    Street1 = "1000 Test Dr.",
                //    Street2 = "",
                //    City = "Test1City",
                //    State = RefState.AL,
                //    Zip = 01234
                //};

                #endregion

                // Set up and add a user
                var user = new Userprofile
                {
                    FirstName       = "testF",
                    LastName        = "testL",
                    Email           = "*****@*****.**",
                    UserMemberships = new List <UserMembership>(),
                    PurchaseOrders  = new List <Data.Models.PurchaseOrder.PurchaseOrder>()
                };

                var userprofileInput = UserprofileService.AddUserprofile(user);

                // Setup DTO orderRequest, 1 video membership and 2 books
                var orderReq = new OrderRequest
                {
                    UserprofileId = userprofileInput.Id,
                    ProductIds    = new Dictionary <Data.Models.Product.Product, int>
                    {
                        { productInput1, 2 },
                        { productInput2, 1 }
                    }
                };

                //Act
                var result = PurchaseOrderRequestService.AddPurchaseOrderRequest(orderReq);

                //Assert
                result.Success.Should().BeTrue();

                var testUser = UserprofileService.GetUserprofile(orderReq.UserprofileId);

                // check business reqs on shipment
                result.PurchaseOrder.PurchaseOrderShipments.Where(x => x.PurchaseOrderId == result.PurchaseOrder.Id).Should().NotBeEmpty();
                result.PurchaseOrder.PurchaseOrderShipments.FirstOrDefault(x => x.PurchaseOrderId == result.PurchaseOrder.Id)?.TrackingNumber.Should().HaveLength(32);

                // check business reqs on membership
                result.PurchaseOrder.Userprofile.UserMemberships.ToList().Should().NotBeEmpty();
                result.PurchaseOrder.Userprofile.UserMemberships.ToList().FirstOrDefault()?.MembershipRemaining.Should().Be(90);
            }
        }