public void Should_Return_Bad_Request_Create_Data()
        {
            ProjectDbContext    projectDbContext = MemoryDbHelper.GetDB(Helper.GetCurrentMethod(ENTITY));
            Mock <IBuyerFacade> mockBuyerFacade  = new Mock <IBuyerFacade>();

            mockBuyerFacade.Setup(p => p.Create(It.IsAny <Buyer>()))
            .Returns(0);

            Mock <IServiceProvider> mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider.Setup(p => p.GetService(typeof(IBuyerFacade))).Returns(mockBuyerFacade.Object);
            mockServiceProvider.Setup(p => p.GetService(typeof(ProjectDbContext))).Returns(projectDbContext);

            Mock <IMapper> mockMapper = new Mock <IMapper>();

            mockMapper.Setup(p => p.Map <Buyer>(It.IsAny <BuyerViewModel>()))
            .Returns(buyerDataUtil.GetModelData());

            BuyersController buyersController = new BuyersController(mockServiceProvider.Object, mockMapper.Object)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            buyersController.ControllerContext.HttpContext.Request.Path = new PathString("/v1/unit-test");

            //Add data for make it double
            projectDbContext.Add(buyerDataUtil.GetModelData());
            projectDbContext.SaveChanges();

            BuyerViewModel viewModel = buyerDataUtil.GetViewModelData();
            IActionResult  result    = buyersController.Post(viewModel);

            Assert.Equal(HttpStatusCode.BadRequest, (HttpStatusCode)((BadRequestObjectResult)result).StatusCode);
        }
        public void Should_Success_Create_Data()
        {
            Mock <IBuyerFacade> mockBuyerFacade = new Mock <IBuyerFacade>();

            mockBuyerFacade.Setup(p => p.Create(It.IsAny <Buyer>()))
            .Returns(1);

            Mock <IServiceProvider> mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider.Setup(p => p.GetService(typeof(IBuyerFacade))).Returns(mockBuyerFacade.Object);
            mockServiceProvider.Setup(p => p.GetService(typeof(ProjectDbContext))).Returns(MemoryDbHelper.GetDB(Helper.GetCurrentMethod(ENTITY)));

            Mock <IMapper> mockMapper = new Mock <IMapper>();

            mockMapper.Setup(p => p.Map <Buyer>(It.IsAny <BuyerViewModel>()))
            .Returns(buyerDataUtil.GetModelData());

            BuyersController buyersController = new BuyersController(mockServiceProvider.Object, mockMapper.Object)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            buyersController.ControllerContext.HttpContext.Request.Path = new PathString("/v1/unit-test");

            IActionResult result = buyersController.Post(buyerDataUtil.GetViewModelData());

            Assert.Equal(HttpStatusCode.Created, (HttpStatusCode)((CreatedResult)result).StatusCode);
        }
        public void Should_Error_Delete_Data()
        {
            Mock <IBuyerFacade> mockBuyerFacade = new Mock <IBuyerFacade>();

            mockBuyerFacade.Setup(p => p.DeleteById(1)).Throws(new Exception("Error"));

            Mock <IServiceProvider> mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider.Setup(p => p.GetService(typeof(IBuyerFacade))).Returns(mockBuyerFacade.Object);
            mockServiceProvider.Setup(p => p.GetService(typeof(ProjectDbContext))).Returns(MemoryDbHelper.GetDB(Helper.GetCurrentMethod(ENTITY)));

            BuyersController buyersController = new BuyersController(mockServiceProvider.Object, null)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            buyersController.ControllerContext.HttpContext.Request.Path = new PathString("/v1/unit-test");

            IActionResult result = buyersController.Delete(1);

            Assert.Equal(HttpStatusCode.InternalServerError, (HttpStatusCode)((ObjectResult)result).StatusCode);
        }
        public void Should_Return_Error_2_Update_Data()
        {
            Mock <IBuyerFacade> mockBuyerFacade = new Mock <IBuyerFacade>();

            mockBuyerFacade.Setup(p => p.UpdateById(It.IsAny <Buyer>())).Returns(0);
            mockBuyerFacade.Setup(p => p.ReadById(It.IsAny <int>())).Returns(buyerDataUtil.GetModelData());

            Mock <IServiceProvider> mockServiceProvider = new Mock <IServiceProvider>();

            mockServiceProvider.Setup(p => p.GetService(typeof(IBuyerFacade))).Returns(mockBuyerFacade.Object);
            mockServiceProvider.Setup(p => p.GetService(typeof(ProjectDbContext))).Returns(MemoryDbHelper.GetDB(Helper.GetCurrentMethod(ENTITY)));

            Mock <IMapper> mockMapper = new Mock <IMapper>();

            mockMapper.Setup(p => p.Map <Buyer>(It.IsAny <BuyerViewModel>()))
            .Returns(buyerDataUtil.GetModelData());

            BuyersController buyersController = new BuyersController(mockServiceProvider.Object, mockMapper.Object)
            {
                ControllerContext = new ControllerContext()
                {
                    HttpContext = new DefaultHttpContext()
                }
            };

            buyersController.ControllerContext.HttpContext.Request.Path = new PathString("/v1/unit-test");

            BuyerViewModel viewModel = buyerDataUtil.GetViewModelData();
            IActionResult  result    = buyersController.Put(1, viewModel);

            Assert.Equal(HttpStatusCode.InternalServerError, (HttpStatusCode)((ObjectResult)result).StatusCode);
        }