Beispiel #1
0
        async public Task <IActionResult> SaveDataset([FromBody] CreateDatasetViewModel vm)
        {
            Guard.ArgumentNotNull(vm, nameof(vm));

            ValidatedApiResponse <NewDatasetVersionResponseModel> response = await _datasetApiClient.CreateDataset(new CreateNewDatasetModel
            {
                Name         = vm.Name,
                DefinitionId = vm.DataDefinitionId,
                Description  = vm.Description,
                Filename     = vm.Filename
            });

            if (response.ModelState != null && response.ModelState.Keys.Any())
            {
                _logger.Warning("Invalid model provided");

                return(new BadRequestObjectResult(response.ModelState));
            }
            else
            {
                if (!response.StatusCode.IsSuccess())
                {
                    int statusCode = (int)response.StatusCode;

                    _logger.Error($"Error when posting data set with status code: {statusCode}");

                    return(new StatusCodeResult(statusCode));
                }
            }

            return(new OkObjectResult(response.Content));
        }
        public async Task SaveDataset_GivenViewModelIsNotNullButResponseContainsModelErrors_ReturnsBadRequest()
        {
            // Arrange
            ValidatedApiResponse <NewDatasetVersionResponseModel> response = new ValidatedApiResponse <NewDatasetVersionResponseModel>(HttpStatusCode.BadRequest);

            response.ModelState = new Dictionary <string, IEnumerable <string> >
            {
                { "Name", new [] { "Invalid name" } }
            };

            CreateDatasetViewModel viewModel = new CreateDatasetViewModel();

            IDatasetsApiClient apiClient = CreateApiClient();

            apiClient
            .CreateDataset(Arg.Any <CreateNewDatasetModel>())
            .Returns(response);

            ILogger logger = CreateLogger();

            DatasetController controller = CreateController(apiClient, logger);

            // Act
            IActionResult result = await controller.SaveDataset(viewModel);

            // Assert
            logger
            .Received(1)
            .Warning(Arg.Is("Invalid model provided"));

            result
            .Should()
            .BeOfType <BadRequestObjectResult>();
        }
        public void SaveDataset_GivenViewModelIsNull_ThowsArgumentNullException()
        {
            // Arrange
            CreateDatasetViewModel viewModel = null;

            DatasetController controller = CreateController();

            // Act
            Func <Task> test = async() => await controller.SaveDataset(viewModel);

            // Assert
            test
            .Should()
            .ThrowExactly <ArgumentNullException>();
        }
Beispiel #4
0
        public async Task SaveDataset_GivenViewModelIsNotNullButResponseContainsModelErrors_ReturnsBadRequest()
        {
            // Arrange
            ValidatedApiResponse <NewDatasetVersionResponseModel> response = new ValidatedApiResponse <NewDatasetVersionResponseModel>(HttpStatusCode.BadRequest)
            {
                ModelState = new Dictionary <string, IEnumerable <string> >
                {
                    {
                        "Name", new[]
                        {
                            "Invalid name"
                        }
                    }
                }
            };

            CreateDatasetViewModel viewModel = new CreateDatasetViewModel
            {
                Description      = "Description",
                Filename         = "Filename.xlsx",
                Name             = "Name",
                DataDefinitionId = "0123456789",
                FundingStreamId  = "DSG"
            };

            _apiClient
            .CreateNewDataset(Arg.Any <CreateNewDatasetModel>())
            .Returns(response);

            // Act
            IActionResult result = await _controller.SaveDataset(viewModel);

            // Assert
            _logger
            .Received(1)
            .Warning(Arg.Is("Invalid model provided"));

            result
            .Should()
            .BeOfType <BadRequestObjectResult>();
        }
Beispiel #5
0
        public async Task SaveDataset_GivenResponseIsSuccess_ReturnsSuccess()
        {
            // Arrange
            NewDatasetVersionResponseModel responseModel = new NewDatasetVersionResponseModel
            {
                DatasetId = "dataset-id"
            };

            ValidatedApiResponse <NewDatasetVersionResponseModel> response = new ValidatedApiResponse <NewDatasetVersionResponseModel>(HttpStatusCode.OK, responseModel);

            CreateDatasetViewModel viewModel = new CreateDatasetViewModel
            {
                Description      = "Description",
                Filename         = "Filename.xlsx",
                Name             = "Name",
                DataDefinitionId = "0123456789",
                FundingStreamId  = "DSG"
            };

            _apiClient
            .CreateNewDataset(Arg.Any <CreateNewDatasetModel>())
            .Returns(response);

            // Act
            IActionResult result = await _controller.SaveDataset(viewModel);

            // Assert
            result
            .Should()
            .BeOfType <OkObjectResult>();

            OkObjectResult objectResult = result as OkObjectResult;

            NewDatasetVersionResponseModel content = objectResult.Value as NewDatasetVersionResponseModel;

            content
            .DatasetId
            .Should()
            .Be("dataset-id");
        }
        public async Task SaveDataset_GivenResponseIsSuccess_ReturnsSuccess()
        {
            // Arrange
            NewDatasetVersionResponseModel responseModel = new NewDatasetVersionResponseModel
            {
                DatasetId = "dataset-id"
            };

            ValidatedApiResponse <NewDatasetVersionResponseModel> response = new ValidatedApiResponse <NewDatasetVersionResponseModel>(HttpStatusCode.OK, responseModel);

            CreateDatasetViewModel viewModel = new CreateDatasetViewModel();

            IDatasetsApiClient apiClient = CreateApiClient();

            apiClient
            .CreateDataset(Arg.Any <CreateNewDatasetModel>())
            .Returns(response);

            ILogger logger = CreateLogger();

            DatasetController controller = CreateController(apiClient, logger);

            // Act
            IActionResult result = await controller.SaveDataset(viewModel);

            // Assert
            result
            .Should()
            .BeOfType <OkObjectResult>();

            OkObjectResult objectResult = result as OkObjectResult;

            NewDatasetVersionResponseModel content = objectResult.Value as NewDatasetVersionResponseModel;

            content
            .DatasetId
            .Should()
            .Be("dataset-id");
        }
Beispiel #7
0
        public async Task SaveDataset_GivenResponseIsInternalServerError_ReturnsStatusCode500()
        {
            // Arrange
            ValidatedApiResponse <NewDatasetVersionResponseModel> response = new ValidatedApiResponse <NewDatasetVersionResponseModel>(HttpStatusCode.InternalServerError);

            CreateDatasetViewModel viewModel = new CreateDatasetViewModel
            {
                Description      = "Description",
                Filename         = "Filename.xlsx",
                Name             = "Name",
                DataDefinitionId = "0123456789",
                FundingStreamId  = "DSG"
            };

            _apiClient
            .CreateNewDataset(Arg.Any <CreateNewDatasetModel>())
            .Returns(response);

            // Act
            IActionResult result = await _controller.SaveDataset(viewModel);

            // Assert
            _logger
            .Received(1)
            .Error(Arg.Is("Error when posting data set with status code: 500"));

            result
            .Should()
            .BeOfType <StatusCodeResult>();

            StatusCodeResult statusCodeResult = result as StatusCodeResult;

            statusCodeResult
            .StatusCode
            .Should()
            .Be(500);
        }
        public async Task SaveDataset_GivenResponseIsInternalServerError_ReturnsStatusCode500()
        {
            // Arrange
            ValidatedApiResponse <NewDatasetVersionResponseModel> response = new ValidatedApiResponse <NewDatasetVersionResponseModel>(HttpStatusCode.InternalServerError);

            CreateDatasetViewModel viewModel = new CreateDatasetViewModel();

            IDatasetsApiClient apiClient = CreateApiClient();

            apiClient
            .CreateDataset(Arg.Any <CreateNewDatasetModel>())
            .Returns(response);

            ILogger logger = CreateLogger();

            DatasetController controller = CreateController(apiClient, logger);

            // Act
            IActionResult result = await controller.SaveDataset(viewModel);

            // Assert
            logger
            .Received(1)
            .Error(Arg.Is($"Error when posting data set with status code: 500"));

            result
            .Should()
            .BeOfType <StatusCodeResult>();

            StatusCodeResult statusCodeResult = result as StatusCodeResult;

            statusCodeResult
            .StatusCode
            .Should()
            .Be(500);
        }