public void GettingASingleDisputeByItsId_WhenThereIsAProblemFormattingTheResponseAsHal_BubblesUpTheException()
        {
            // Arrange
            const int disputeId = 1234567;

            mockDisputeFormatter
            .Setup(disputeFormatter => disputeFormatter.FormatForHal(It.IsAny <DisputeModel>()))
            .Throws <Exception>();

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            void Result() => controller.GetDisputesByDisputeId(disputeId).GetAwaiter().GetResult();

            // Assert
            Assert.ThrowsException <Exception>((Action)Result);
        }
        public void GettingASingleDisputeByItsId_WhenitDoesntExist_BubblesUpTheException()
        {
            // Arrange
            const int disputeId          = 1234567;
            const int expectedStatusCode = 200;

            mockDisputeRepository
            .Setup(
                disputeRepository =>
                disputeRepository.GetResultsByAsync(
                    It.IsAny <int>(),
                    It.IsAny <Expression <Func <DisputeEntity, int> > >(),
                    It.IsAny <PageInformation>()))
            .Throws <Exception>();

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            var result = controller.GetDisputesByDisputeId(disputeId).GetAwaiter().GetResult();

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }
        public void GettingASingleDisputeByItsId_WhenItExists_ReturnsOkStatusCode200()
        {
            // Arrange
            const int disputeId          = 1234567;
            const int expectedStatusCode = 200;

            var dispute = TestFixture.Create <DisputeModel>();

            mockDataAccessCradle
            .Setup(dataAccessCradle => dataAccessCradle.GetItemAsync(It.IsAny <Func <Task <DisputeModel> > >()))
            .Returns(Task.FromResult(dispute));

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            var result = controller.GetDisputesByDisputeId(disputeId).GetAwaiter().GetResult();

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }
        public void GettingDisputesByInsolvencyId_WhenThereIsAProblemGettingThePageInformation_BubblesUpTheException()
        {
            // Arrange
            const int insolvencyOrderId = 1234567;

            mockPageInformationProvider
            .Setup(pageInformationReader => pageInformationReader.GetPageInformation())
            .Throws <Exception>();

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            void Result() => controller.GetDisputesByInsolvencyIdAsync(insolvencyOrderId).GetAwaiter().GetResult();

            // Assert
            Assert.ThrowsException <Exception>((Action)Result);
        }
        public void GettingDisputesByInsolvencyId_WhenTheCradleThrowsAnException_BubblesUpTheException()
        {
            // Arrange
            const int insolvencyOrderId = 1234567;

            mockDataAccessCradle
            .Setup(
                dataAccessCradle =>
                dataAccessCradle.GetPagedDataSetAsync(
                    It.IsAny <Func <Task <IEnumerable <DisputeModel> > > >(),
                    It.IsAny <Func <Task <int> > >()))
            .Throws <Exception>();

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            void Result() => controller.GetDisputesByInsolvencyIdAsync(insolvencyOrderId).GetAwaiter().GetResult();

            // Assert
            Assert.ThrowsException <Exception>((Action)Result);
        }
        public void GettingDisputesByInsolvencyId_WhenThereAreNoneToReturn_ReturnsOkStatusCode200()
        {
            // Arrange
            const int insolvencyOrderId  = 1234567;
            const int expectedStatusCode = 200;

            var collectionResourceInfo = new CollectionResourceInfo(0, 10, 1);
            var collectionResource     =
                new CollectionResource <DisputeModel>(collectionResourceInfo, new List <DisputeModel>());

            mockDataAccessCradle
            .Setup(dataAccessCradle =>
                   dataAccessCradle.GetPagedDataSetAsync(
                       It.IsAny <Func <Task <IEnumerable <DisputeModel> > > >(),
                       It.IsAny <Func <Task <int> > >()))
            .Returns(Task.FromResult(collectionResource));

            var controller =
                new DisputesController(
                    mockDataAccessCradle.Object,
                    mockDisputeRepository.Object,
                    mockIncludeReader.Object,
                    mockPageInformationProvider.Object,
                    mockDisputeFormatter.Object,
                    mockDisputeCollectionFormatter.Object,
                    mockTelemetryClient.Object);

            // Act
            var result = controller.GetDisputesByInsolvencyIdAsync(insolvencyOrderId).GetAwaiter().GetResult();

            // Assert
            Assert.IsInstanceOfType(result, typeof(OkObjectResult));
            Assert.AreEqual(expectedStatusCode, ((OkObjectResult)result).StatusCode);
        }