public void GetProductByIdSuccessTest()
        {
            var repository     = new Mock <IProductRepository>();
            var errorCollector = new ErrorCollector();
            var exportService  = new Mock <IExportService>().Object;

            repository.Setup(r => r.GetProductById(It.IsAny <int>())).Returns(new Product
            {
                Id    = 1,
                Code  = "T1",
                Name  = "Test 1",
                Price = 10
            });

            var service = new ProductService(repository.Object, errorCollector, exportService);

            var inputModel = new GetProductByIdInputModel
            {
                Id = 1
            };

            var outputModel = service.GetProductById(inputModel);

            Assert.IsNotNull(outputModel);
            Assert.IsFalse(errorCollector.Errors.Any());
            Assert.IsNotNull(outputModel.Product);
        }
        public void GetProductByIdWithInvalidInputModelTest()
        {
            var repository     = new Mock <IProductRepository>().Object;
            var errorCollector = new ErrorCollector();
            var exportService  = new Mock <IExportService>().Object;
            var service        = new ProductService(repository, errorCollector, exportService);

            var inputModel = new GetProductByIdInputModel
            {
            };

            var outputModel = service.GetProductById(inputModel);

            Assert.IsNull(outputModel);
            Assert.IsTrue(errorCollector.Errors.Any());
        }
        public void GetProductByIdButProductDoesNotExistTest()
        {
            var repository     = new Mock <IProductRepository>().Object;
            var errorCollector = new ErrorCollector();
            var exportService  = new Mock <IExportService>().Object;
            var service        = new ProductService(repository, errorCollector, exportService);

            var inputModel = new GetProductByIdInputModel
            {
                Id = 1
            };

            var outputModel = service.GetProductById(inputModel);

            Assert.IsNotNull(outputModel);
            Assert.IsFalse(errorCollector.Errors.Any());
            Assert.IsNull(outputModel.Product);
        }
 public GenericResponse <GetProductByIdOutputModel> GetProductById(GetProductByIdInputModel input)
 {
     return(CallWebClient <GetProductByIdInputModel, GetProductByIdOutputModel>(CreateServiceCallParameter(input, (request) => _webClient.Get(request).Result, $"Products/{input.Id}", ServiceUrl)));
 }