public new void SetUp()
 {
     base.SetUp();
     MockPackScheduleService
     .Setup(m => m.RemovePackSchedule(It.IsAny <PackSchedulesController.DeletePackScheduleParameters>()))
     .Returns(new SuccessResult <string>());
 }
            public void AttemptsToGetPackScheduleByPSNumOnInvalid()
            {
                // arrange
                const string PSNum        = "123456";
                var          serviceQuery = Fixture.CreateMany <PackScheduleSummaryReturn>().ToList();

                serviceQuery.First().PSNum  = int.Parse(PSNum);
                var expectedPackScheduleKey = serviceQuery.First().PackScheduleKey;
                var expectedResult          = Fixture.Create <IPackScheduleDetailReturn>();

                MockPackScheduleService
                .Setup(m => m.GetPackSchedule(PSNum))
                .Returns(new InvalidResult <IPackScheduleDetailReturn>());

                MockPackScheduleService
                .Setup(m => m.GetPackSchedule(expectedPackScheduleKey))
                .Returns(new SuccessResult <IPackScheduleDetailReturn>(expectedResult));

                MockPackScheduleService.Setup(m => m.GetPackSchedules())
                .Returns(new SuccessResult <IQueryable <IPackScheduleSummaryReturn> >(serviceQuery.AsQueryable()));

                // act
                SystemUnderTest.Get(PSNum);

                // assert
                MockPackScheduleService.Verify(m => m.GetPackSchedule(expectedPackScheduleKey), Times.Once());
            }
 public new void SetUp()
 {
     MockPackScheduleService.Setup(m => m.UpdatePackSchedule(It.IsAny <IUpdatePackScheduleParameters>()))
     .Callback((IUpdatePackScheduleParameters valuesParam) =>
     {
         _actualValues = valuesParam;
     })
     .Returns(new SuccessResult <string>("newkey"));
 }
            public void CallsServiceAsExpected()
            {
                // arrange
                var inputParams = Fixture.Create <CreatePackSchedule>();

                // act
                SystemUnderTest.Post(inputParams);

                // assert
                MockPackScheduleService.Verify(m => m.CreatePackSchedule(It.IsAny <ICreatePackScheduleParameters>()), Times.Once());
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                const string key   = "1234-5";
                var          input = Fixture.Create <UpdatePackScheduleParameters>();

                // act
                SystemUnderTest.Put(key, input);

                // assert
                MockPackScheduleService.Verify(m => m.UpdatePackSchedule(It.IsAny <IUpdatePackScheduleParameters>()), Times.Once());
                Assert.AreEqual(key, input.PackScheduleKey);
            }
            public void Returns400OnInvalid()
            {
                // arrange
                var inputParams = Fixture.Create <CreatePackSchedule>();

                MockPackScheduleService.Setup(m => m.CreatePackSchedule(It.IsAny <ICreatePackScheduleParameters>()))
                .Returns(new InvalidResult <string>());

                // act
                var response = SystemUnderTest.Post(inputParams);

                // assert
                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            }
            public void Returns500OnFailure()
            {
                // arrange
                var inputParams = Fixture.Create <CreatePackSchedule>();

                MockPackScheduleService.Setup(m => m.CreatePackSchedule(It.IsAny <ICreatePackScheduleParameters>()))
                .Returns(new FailureResult <string>());

                // act
                var response = SystemUnderTest.Post(inputParams);

                // assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
            }
            public void ReturnsInternalServerErrorOnFailure()
            {
                // arrange
                const string key = "key";

                MockPackScheduleService.Setup(m => m.RemoveProductionBatch(key))
                .Returns(new FailureResult <string>());

                // act
                var response = ControllerUnderTest.Delete(key);

                // assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
            }
            public void ReturnsNotFoundOnInvalid()
            {
                // arrange
                const string key = "key";

                MockPackScheduleService.Setup(m => m.RemoveProductionBatch(key))
                .Returns(new InvalidResult <string>());

                // act
                var response = ControllerUnderTest.Delete(key);

                // assert
                Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                const string key = "key";

                MockPackScheduleService.Setup(m => m.RemoveProductionBatch(key))
                .Returns(new SuccessResult <string>());

                // act
                ControllerUnderTest.Delete(key);

                // assert
                MockPackScheduleService.Verify(m => m.RemoveProductionBatch(key));
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                var exptectedServiceResponse = Fixture.CreateMany <IPackScheduleSummaryReturn>().AsQueryable();

                MockPackScheduleService.Setup(m => m.GetPackSchedules())
                .Returns(new SuccessResult <IQueryable <IPackScheduleSummaryReturn> >(exptectedServiceResponse));

                // act
                SystemUnderTest.Get();

                // assert
                MockPackScheduleService.Verify(m => m.GetPackSchedules());
            }
            public void ReturnsInternalServerErrorOnFailure()
            {
                // arrange
                const string id    = "12345";
                var          input = Fixture.Create <UpdateProductionBatchParameters>();

                MockPackScheduleService.Setup(m => m.UpdateProductionBatch(input))
                .Returns(new FailureResult <string>());

                // act
                var response = ControllerUnderTest.Put(id, input);

                // assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                const string expectedPackScheduleKey = "123456-789";

                MockPackScheduleService
                .Setup(m => m.GetPackSchedule(expectedPackScheduleKey))
                .Returns(new SuccessResult <IPackScheduleDetailReturn>(Fixture.Create <IPackScheduleDetailReturn>()));

                // act
                SystemUnderTest.Get(expectedPackScheduleKey);

                // assert
                MockPackScheduleService.Verify(m => m.GetPackSchedule(expectedPackScheduleKey), Times.Once());
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                var input   = Fixture.Create <CreateProductionBatchDto>();
                var @return = Fixture.Create <CreateProductonBatchReturn>();

                MockPackScheduleService.Setup(m => m.CreateProductionBatch(It.IsAny <CreateProductionBatchParameters>()))
                .Returns(new SuccessResult <ICreateProductionBatchReturn>(@return));

                // act
                ControllerUnderTest.Post(input);

                // assert
                MockPackScheduleService.Verify(m => m.CreateProductionBatch(It.IsAny <CreateProductionBatchParameters>()), Times.Once());
            }
            public void Returns500OnFailure()
            {
                // arrange
                const string key = "key";

                MockPackScheduleService
                .Setup(m => m.RemovePackSchedule(It.IsAny <PackSchedulesController.DeletePackScheduleParameters>()))
                .Returns(new FailureResult <string>());

                // act
                var result = SystemUnderTest.Delete(key);

                // assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, result.StatusCode);
            }
            public void Returns500OnFailure()
            {
                // arrange
                const string key   = "1234-5";
                var          input = Fixture.Create <UpdatePackScheduleParameters>();

                MockPackScheduleService.Setup(m => m.UpdatePackSchedule(It.IsAny <IUpdatePackScheduleParameters>()))
                .Returns(new FailureResult <string>());

                // act
                var response = SystemUnderTest.Put(key, input);

                // assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
            }
            public void Returns401OnInvalid()
            {
                // arrange
                const string key = "key";

                MockPackScheduleService
                .Setup(m => m.RemovePackSchedule(It.IsAny <PackSchedulesController.DeletePackScheduleParameters>()))
                .Returns(new InvalidResult <string>());

                // act
                var result = SystemUnderTest.Delete(key);

                // assert
                Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
            }
            public void Returns201OnSuccess()
            {
                // arrange
                var input   = Fixture.Create <CreateProductionBatchDto>();
                var @return = Fixture.Create <CreateProductonBatchReturn>();

                MockPackScheduleService.Setup(m => m.CreateProductionBatch(It.IsAny <CreateProductionBatchParameters>()))
                .Returns(new SuccessResult <ICreateProductionBatchReturn>(@return));

                // act
                var result = ControllerUnderTest.Post(input);

                // assert
                Assert.AreEqual(HttpStatusCode.Created, result.StatusCode);
            }
            public void ThrowsInternalServerErrorOnFailure()
            {
                // arrange
                var input = Fixture.Create <CreateProductionBatchDto>();

                MockPackScheduleService
                .Setup(m => m.CreateProductionBatch(It.IsAny <CreateProductionBatchParameters>()))
                .Returns(new FailureResult <ICreateProductionBatchReturn>());

                // act
                var response = ControllerUnderTest.Post(input);

                // assert
                Assert.AreEqual(HttpStatusCode.InternalServerError, response.StatusCode);
                MockPackScheduleService.Verify(m => m.CreateProductionBatch(It.IsAny <CreateProductionBatchParameters>()), Times.Once());
            }
            public void Returns400WithoutCallingServiceIfModelStateIsInvalid()
            {
                // arrange
                const string key   = "1234-5";
                var          input = Fixture.Create <UpdatePackScheduleParameters>();

                SystemUnderTest.ModelState.AddModelError("", "error");

                // act
                var response = SystemUnderTest.Put(key, input);

                // assert
                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
                MockPackScheduleService.Verify(m => m.UpdatePackSchedule(It.IsAny <IUpdatePackScheduleParameters>()),
                                               Times.Never());
            }
            public void ReturnsServiceResultObjectOnSuccess()
            {
                // arrange
                var          expectedPackSchedule = Fixture.Create <IProductionBatchDetailReturn>();
                const string key = "03 14 010 01";

                MockPackScheduleService.Setup(m => m.GetProductionBatch(key))
                .Returns(new SuccessResult <IProductionBatchDetailReturn>(expectedPackSchedule));

                // act
                var result = ControllerUnderTest.Get(key);

                // assert
                MockPackScheduleService.Verify(m => m.GetProductionBatch(key));
                Assert.AreEqual(expectedPackSchedule, result);
            }
            public void ReturnsServiceResultOnSuccess()
            {
                // arrange
                const string expectedPackScheduleKey = "123456-789";
                var          expectedServiceResponse = Fixture.Create <IPackScheduleDetailReturn>();

                MockPackScheduleService
                .Setup(m => m.GetPackSchedule(expectedPackScheduleKey))
                .Returns(new SuccessResult <IPackScheduleDetailReturn>(expectedServiceResponse));

                // act
                var response = SystemUnderTest.Get(expectedPackScheduleKey);

                // assert
                Assert.AreEqual(expectedServiceResponse, response);
            }
            public void UtilizesUserTokenProvider()
            {
                // arrange
                const string key = "1234";
                IRemovePackScheduleParameters actualParameters = null;

                MockPackScheduleService.Setup(m => m.RemovePackSchedule(It.IsAny <IRemovePackScheduleParameters>()))
                .Callback((IRemovePackScheduleParameters p) => actualParameters = p)
                .Returns(new SuccessResult <string>());

                // act
                SystemUnderTest.Delete(key);

                // assert
                Assert.IsNotNull(actualParameters);
                MockIdentityProvider.Verify(m => m.SetUserIdentity(actualParameters), Times.Once());
            }
            public void ReturnsPageResultsAsExpected()
            {
                // arrange
                const int expectedStartIndexParam = 10;
                const int expectedCountParam      = 20;
                var       expectedServiceResponse = Fixture.CreateMany <IPackScheduleSummaryReturn>(10).AsQueryable();

                MockPackScheduleService.Setup(m => m.GetPackSchedules())
                .Returns(new SuccessResult <IQueryable <IPackScheduleSummaryReturn> >(expectedServiceResponse));

                IEnumerable <IPackScheduleSummaryReturn> expectedPagedResults = null;

                // act
                var response = SystemUnderTest.Get(expectedStartIndexParam, expectedCountParam);

                // assert
                Assert.AreEqual(expectedPagedResults, response);
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                const string key = "1234";
                IRemovePackScheduleParameters actualParameters = null;

                MockPackScheduleService.Setup(m => m.RemovePackSchedule(It.IsAny <IRemovePackScheduleParameters>()))
                .Callback((IRemovePackScheduleParameters p) => actualParameters = p)
                .Returns(new SuccessResult <string>());

                // act
                SystemUnderTest.Delete(key);

                // assert
                Assert.IsNotNull(actualParameters);
                MockPackScheduleService.Verify(m => m.RemovePackSchedule(It.IsAny <IRemovePackScheduleParameters>()), Times.Once());
                Assert.AreEqual(actualParameters.PackScheduleKey, key);
            }
            public void CallsServiceAsExpected()
            {
                // arrange
                const string id    = "12345";
                var          input = Fixture.Create <UpdateProductionBatchParameters>();
                IUpdateProductionBatchParameters actualParams = null;

                MockPackScheduleService.Setup(m => m.UpdateProductionBatch(input))
                .Callback((IUpdateProductionBatchParameters i) => actualParams = i)
                .Returns(new SuccessResult <string>("key"));

                // act
                ControllerUnderTest.Put(id, input);

                // assert
                MockPackScheduleService.Verify(m => m.UpdateProductionBatch(input), Times.Once());
                Assert.AreEqual(id, actualParams.ProductionBatchKey);
            }
            public void UtilizedUserIdentityProvider()
            {
                // arrange
                const string id    = "12345";
                var          input = Fixture.Create <UpdateProductionBatchParameters>();
                IUpdateProductionBatchParameters actualParams = null;

                MockUserIdentityProvider.Setup(m => m.SetUserIdentity(input))
                .Callback((IUserIdentifiable i) => i.UserToken = "user token");
                MockPackScheduleService.Setup(m => m.UpdateProductionBatch(input))
                .Callback((IUpdateProductionBatchParameters i) => actualParams = i)
                .Returns(new SuccessResult <string>("key", null));

                // act
                ControllerUnderTest.Put(id, input);

                // assert
                MockUserIdentityProvider.Verify(m => m.SetUserIdentity(input), Times.Once());
                Assert.AreEqual("user token", actualParams.UserToken);
            }
            public void Throws404HttpResponseOnInvalid()
            {
                // arrange
                const string key = "03 14 010 01";

                MockPackScheduleService.Setup(m => m.GetProductionBatch(key))
                .Returns(new InvalidResult <IProductionBatchDetailReturn>());

                // act
                try
                {
                    ControllerUnderTest.Get(key);
                }
                catch (HttpResponseException ex)
                {
                    // assert
                    Assert.AreEqual(HttpStatusCode.NotFound, ex.Response.StatusCode);
                    throw;
                }
            }
            public void Throws500HttpResponseOnFailure()
            {
                // arrange
                const string key = "03 14 010 01";

                MockPackScheduleService.Setup(m => m.GetProductionBatch(key))
                .Returns(new FailureResult <IProductionBatchDetailReturn>());

                // act
                try
                {
                    ControllerUnderTest.Get(key);
                }
                catch (HttpResponseException ex)
                {
                    // assert
                    Assert.AreEqual(HttpStatusCode.InternalServerError, ex.Response.StatusCode);
                    throw;
                }
            }
            public void ThrowsHttpResponseExcpetionWhenServiceReturnsFailure()
            {
                // arrange
                MockPackScheduleService.Setup(m => m.GetPackSchedules())
                .Returns(new FailureResult <IQueryable <IPackScheduleSummaryReturn> >());

                // act
                try
                {
                    SystemUnderTest.Get();
                }
                catch (HttpResponseException ex)
                {
                    Assert.AreEqual(HttpStatusCode.InternalServerError, ex.Response.StatusCode);
                    throw;
                }

                // assert
                Assert.Fail();
            }