public void OnActionExecuting_ReturnsOK(CalculationTestModel data)
        {
            // Arrange
            IActionResult expectedResult = null;

            var httpContext = new DefaultHttpContext();
            var context     = new ActionExecutingContext(
                new ActionContext(
                    httpContext: httpContext,
                    routeData: new RouteData(),
                    actionDescriptor: new ActionDescriptor()
                    ),
                new List <IFilterMetadata>(),
                new Dictionary <string, object>()
            {
                { "numbers", data.Input }
            },
                new Mock <Controller>().Object);

            var sut = new ValidateModelAttribute();

            //Act
            sut.OnActionExecuting(context);

            //Assert
            Assert.True(expectedResult.IsEqual(context.Result));
        }
        public void OnActionExecuting_NullOrEmptyArray_ReturnsBadRequestEmptyArray(CalculationTestModel data)
        {
            // Arrange
            var expectedResult = Helper.GetBadRequestResult(Constant.Exception_EmptyArray);

            var httpContext = new DefaultHttpContext();
            var context     = new ActionExecutingContext(
                new ActionContext(
                    httpContext: httpContext,
                    routeData: new RouteData(),
                    actionDescriptor: new ActionDescriptor()
                    ),
                new List <IFilterMetadata>(),
                new Dictionary <string, object>()
            {
                { "numbers", data.Input }
            },
                new Mock <Controller>().Object);

            var sut = new ValidateModelAttribute();

            //Act
            sut.OnActionExecuting(context);

            //Assert
            Assert.True(expectedResult.IsEqual(context.Result));
        }
        public void Add_ReturnsOK(CalculationTestModel data)
        {
            // Arrange
            var expectedResult = new OkObjectResult(data.AddOutput);

            //Act
            var acrualResult = this._controller.Add(data.Input);

            // Assert
            Assert.True(expectedResult.IsEqual(acrualResult));
        }
        public void Divide_WithZeroData_ReturnsBadRequestDividedByZero(CalculationTestModel data)
        {
            // Arrange
            var expectedResult = Helper.GetBadRequestResult(Constant.Exception_DividedByZero);

            //Act
            var actualResult = this._controller.Divide(data.Input);

            // Assert
            Assert.True(expectedResult.IsEqual(actualResult));
        }
        public void Subtract_LargeNumbers_ReturnsOK_ReturnsBadRequestOverflow(CalculationTestModel data)
        {
            // Arrange
            IActionResult expectedResult;

            if (data.SubtractOutput != null)
            {
                expectedResult = new OkObjectResult(data.SubtractOutput);
            }
            else
            {
                expectedResult = Helper.GetBadRequestResult(Constant.Exception_OverFlow);
            }

            //Act
            var actualResult = this._controller.Subtract(data.Input);

            // Assert
            Assert.True(expectedResult.IsEqual(actualResult));
        }