public async Task Post_Return_BadRequest()
        {
            // Arrange
            var id            = Guid.NewGuid();
            var unitUnderTest = CreateGarmentDeliveryReturnController();

            _mockGarmentDeliveryReturnRepository
            .Setup(s => s.Find(It.IsAny <Expression <Func <GarmentDeliveryReturnReadModel, bool> > >()))
            .Returns(new List <GarmentDeliveryReturn>()
            {
                new GarmentDeliveryReturn(id, "drNo", "roNo", "article", 1, "unitDONo", 1, "preparingId", DateTimeOffset.Now, "returnType", new UnitDepartmentId(1), "unitCode", "unitName", new StorageId(1), "storageName", "storageCode", true)
            });



            PlaceGarmentDeliveryReturnCommand command = new PlaceGarmentDeliveryReturnCommand();

            command.Items = new List <GarmentDeliveryReturnItemValueObject>()
            {
                new GarmentDeliveryReturnItemValueObject()
                {
                    Product = new Product()
                    {
                        Name = "FABRIC"
                    }
                }
            };

            // Act
            var result = await unitUnderTest.Post(command);

            // Assert
            Assert.Equal((int)HttpStatusCode.BadRequest, GetStatusCode(result));
        }
        public async Task Post_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            var id            = Guid.NewGuid();
            var unitUnderTest = CreateGarmentDeliveryReturnController();

            _mockGarmentDeliveryReturnRepository
            .Setup(s => s.Find(It.IsAny <Expression <Func <GarmentDeliveryReturnReadModel, bool> > >()))
            .Returns(new List <GarmentDeliveryReturn>()
            {
            });

            _MockMediator
            .Setup(s => s.Send(It.IsAny <PlaceGarmentDeliveryReturnCommand>(), It.IsAny <CancellationToken>()))
            .ReturnsAsync(new GarmentDeliveryReturn(Guid.NewGuid(), null, "RONo", null, 0, null, 0, null, DateTimeOffset.Now, null, new UnitDepartmentId(1), null, null, new StorageId(1), null, null, false));

            PlaceGarmentDeliveryReturnCommand command = new PlaceGarmentDeliveryReturnCommand();

            command.Items = new List <GarmentDeliveryReturnItemValueObject>()
            {
                new GarmentDeliveryReturnItemValueObject()
                {
                    Product = new Product()
                    {
                        Name = "NO FABRIC"
                    }
                }
            };

            // Act
            var result = await unitUnderTest.Post(command);

            // Assert
            Assert.Equal((int)HttpStatusCode.OK, GetStatusCode(result));
        }
        public void Place_HaveError()
        {
            // Arrange
            var unitUnderTest = new PlaceGarmentDeliveryReturnCommand()
            {
                Items = new List <GarmentDeliveryReturnItemValueObject>()
                {
                    new GarmentDeliveryReturnItemValueObject()
                    {
                        Product = new Product()
                    }
                }
            };

            // Action
            var validator = GetValidationRules();
            var result    = validator.TestValidate(unitUnderTest);

            // Assert
            result.ShouldHaveError();
        }
        public async Task <IActionResult> Post([FromBody] PlaceGarmentDeliveryReturnCommand command)
        {
            try
            {
                VerifyUser();

                var garmentDeliveryReturnValidation = _garmentDeliveryReturnRepository.Find(o => o.DRNo == command.DRNo && o.RONo == command.RONo && o.Article == command.Article && o.UnitDOId == command.UnitDOId &&
                                                                                            o.UnitDONo == command.UnitDONo && o.UENId == command.UENId && o.PreparingId == command.PreparingId && o.ReturnDate == command.ReturnDate && o.ReturnType == command.ReturnType &&
                                                                                            o.UnitId == command.Unit.Id && o.UnitCode == command.Unit.Code && o.UnitName == command.Unit.Name && o.StorageId == command.Storage.Id && o.StorageCode == command.Storage.Code &&
                                                                                            o.StorageName == command.Storage.Name && o.IsUsed == command.IsUsed).Select(o => new GarmentDeliveryReturnDto(o)).FirstOrDefault();
                if (garmentDeliveryReturnValidation != null)
                {
                    return(BadRequest(new
                    {
                        code = HttpStatusCode.BadRequest,
                        error = "Data sudah ada"
                    }));
                }

                var order = await Mediator.Send(command);

                foreach (var item in command.Items)
                {
                    if (item.Product.Name != "FABRIC")
                    {
                        await PutGarmentUnitExpenditureNoteCreateForDeliveryReturn(item.UENItemId, item.Quantity, 0);
                    }
                }
                ;


                return(Ok(order.Identity));
            }
            catch (Exception ex)
            {
                return(StatusCode((int)HttpStatusCode.InternalServerError, ex.Message));
            }
        }
        public async Task Post_Return_InternalServerError()
        {
            // Arrange
            var unitUnderTest = CreateGarmentDeliveryReturnController();

            _mockGarmentDeliveryReturnRepository
            .Setup(s => s.Find(It.IsAny <Expression <Func <GarmentDeliveryReturnReadModel, bool> > >()))
            .Returns(new List <GarmentDeliveryReturn>());

            _MockMediator
            .Setup(s => s.Send(It.IsAny <PlaceGarmentDeliveryReturnCommand>(), It.IsAny <CancellationToken>()))
            .Throws(new Exception());

            PlaceGarmentDeliveryReturnCommand command = new PlaceGarmentDeliveryReturnCommand();

            command.Items = new List <GarmentDeliveryReturnItemValueObject>();

            // Act
            var result = await unitUnderTest.Post(command);

            // Assert
            Assert.Equal((int)HttpStatusCode.InternalServerError, GetStatusCode(result));
        }
        public void Place_NotHaveError()
        {
            // Arrange
            Guid id            = Guid.NewGuid();
            var  unitUnderTest = new PlaceGarmentDeliveryReturnCommand()
            {
                Article     = "Article",
                DRNo        = "DRNo",
                IsUsed      = true,
                PreparingId = id.ToString(),
                ReturnDate  = DateTimeOffset.Now,
                ReturnType  = "ReturnType",
                RONo        = "RONo",
                Storage     = new Storage()
                {
                    Id   = 1,
                    Code = "Code",
                    Name = "Name"
                },
                UENId    = 1,
                UnitDOId = 1,
                UnitDONo = "UnitDONo",
                Unit     = new UnitDepartment()
                {
                    Id   = 1,
                    Code = "Code",
                    Name = "Name"
                },
                Items = new List <GarmentDeliveryReturnItemValueObject>()
                {
                    new GarmentDeliveryReturnItemValueObject()
                    {
                        IsSave          = true,
                        DesignColor     = "DesignColor",
                        DRId            = id,
                        PreparingItemId = id.ToString(),
                        Product         = new Product()
                        {
                            Id   = 1,
                            Code = "Code",
                            Name = "FABRIC"
                        },
                        Quantity        = 1,
                        QuantityUENItem = 1,
                        RemainingQuantityPreparingItem = 2,
                        RONo         = "RONo",
                        UENItemId    = 1,
                        UnitDOItemId = 1,
                        Uom          = new Uom()
                        {
                            Id   = 1,
                            Unit = "Unit"
                        }
                    }
                }
            };

            // Action
            var validator = GetValidationRules();
            var result    = validator.TestValidate(unitUnderTest);

            // Assert
            result.ShouldNotHaveError();
        }
Example #7
0
        public async Task Handle_StateUnderTest_ExpectedBehavior()
        {
            // Arrange
            Guid id = Guid.NewGuid();
            PlaceGarmentDeliveryReturnCommandHandler unitUnderTest = CreatePlaceGarmentDeliveryReturnCommandHandler();
            CancellationToken cancellationToken = CancellationToken.None;


            _mockGarmentDeliveryReturnRepository
            .Setup(s => s.Find(It.IsAny <Expression <Func <GarmentDeliveryReturnReadModel, bool> > >()))
            .Returns(new List <GarmentDeliveryReturn>()
            {
            });

            _mockGarmentDeliveryReturnItemRepository
            .Setup(s => s.Update(It.IsAny <GarmentDeliveryReturnItem>()))
            .Returns(Task.FromResult(It.IsAny <GarmentDeliveryReturnItem>()));


            GarmentPreparingItem garmentPreparingItem = new GarmentPreparingItem(id, 1, new Domain.GarmentPreparings.ValueObjects.ProductId(1), "productCode", "productName", "designColor", 1, new Domain.GarmentPreparings.ValueObjects.UomId(1), "uomUnit", "FABRIC", 1, 1, id, null);

            _mockGarmentPreparingItemRepository
            .Setup(s => s.Find(It.IsAny <Expression <Func <GarmentPreparingItemReadModel, bool> > >()))
            .Returns(new List <GarmentPreparingItem>()
            {
                garmentPreparingItem
            });

            _mockGarmentPreparingItemRepository
            .Setup(s => s.Update(It.IsAny <GarmentPreparingItem>()))
            .Returns(Task.FromResult(It.IsAny <GarmentPreparingItem>()));

            _mockGarmentDeliveryReturnRepository
            .Setup(s => s.Update(It.IsAny <GarmentDeliveryReturn>()))
            .Returns(Task.FromResult(It.IsAny <GarmentDeliveryReturn>()));

            GarmentDeliveryReturn garmentDeliveryReturn = new GarmentDeliveryReturn(id, "drNo", "roNo", "article", 1, "unitDONo", 1, "preparingId", DateTimeOffset.Now, "returnType", new UnitDepartmentId(1), "unitCode", "unitName", new StorageId(1), "storageName", "storageCode", true);

            _mockGarmentDeliveryReturnRepository
            .Setup(s => s.Query)
            .Returns(new List <GarmentDeliveryReturnReadModel>()
            {
                garmentDeliveryReturn.GetReadModel()
            }.AsQueryable());


            _MockStorage
            .Setup(x => x.Save())
            .Verifiable();

            PlaceGarmentDeliveryReturnCommand request = new PlaceGarmentDeliveryReturnCommand()
            {
                Article     = "Article",
                DRNo        = "DRNo",
                IsUsed      = true,
                PreparingId = id.ToString(),
                ReturnDate  = DateTimeOffset.Now,
                ReturnType  = "ReturnType",
                RONo        = "RONo",
                Storage     = new Domain.GarmentDeliveryReturns.ValueObjects.Storage()
                {
                    Id   = 1,
                    Code = "Code",
                    Name = "Name"
                },
                UENId = 1,
                Unit  = new Domain.GarmentDeliveryReturns.ValueObjects.UnitDepartment()
                {
                    Id   = 1,
                    Code = "Code",
                    Name = "Name"
                },
                UnitDOId = 1,
                UnitDONo = "UnitDONo",
                Items    = new List <GarmentDeliveryReturnItemValueObject>()
                {
                    new GarmentDeliveryReturnItemValueObject()
                    {
                        Id              = id,
                        DesignColor     = "DesignColor",
                        DRId            = id,
                        IsSave          = true,
                        PreparingItemId = id.ToString(),
                        Product         = new Product()
                        {
                            Id   = 1,
                            Code = "Code",
                            Name = "FABRIC"
                        },
                        RONo            = "RONo",
                        Quantity        = 1,
                        QuantityUENItem = 1,
                        RemainingQuantityPreparingItem = 1,
                        UENItemId    = 1,
                        UnitDOItemId = 1,
                        Uom          = new Uom()
                        {
                            Id   = 1,
                            Unit = "Unit"
                        }
                    }
                }
            };
            // Act
            var result = await unitUnderTest.Handle(request, cancellationToken);

            // Assert
            result.Should().NotBeNull();
        }