public async Task SpecificationRelationshipsPageModel_GivenDatasetRelationshipsResponseReturnsBadRequest_ReturnsStatusCode500() { // Arrange string specificationId = Guid.NewGuid().ToString(); SpecificationSummary specification = new SpecificationSummary { Id = specificationId }; ApiResponse <SpecificationSummary> specificationResponse = new ApiResponse <SpecificationSummary>(HttpStatusCode.OK, specification); ISpecsApiClient specsApiClient = CreateSpecsApiClient(); specsApiClient .GetSpecificationSummary(Arg.Is(specificationId)) .Returns(specificationResponse); ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> > relationshipsResponse = new ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> >(HttpStatusCode.BadRequest); IDatasetsApiClient datasetsApiClient = CreateDatasetApiClient(); datasetsApiClient .GetDatasetSpecificationRelationshipsBySpecificationId(Arg.Is(specificationId)) .Returns(relationshipsResponse); ILogger logger = CreateLogger(); SpecificationRelationshipsPageModel pageModel = CreatePageModel(specsApiClient, datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnGetAsync(specificationId); // Assert result .Should() .BeOfType <StatusCodeResult>(); StatusCodeResult statusCodeResult = result as StatusCodeResult; statusCodeResult .StatusCode .Should() .Be(500); logger .Received(1) .Error($"Failed to fetch specification relationships for specification id: {specificationId}"); logger .Received(1) .Error($"A null view model was returned"); }
public void SpecificationRelationshipsPageModel_GivenNullOrEmptySpecificationId_ThrowsArgumentNullException() { // Arrange SpecificationRelationshipsPageModel pageModel = CreatePageModel(); string specificationId = string.Empty; // Act Func <Task> test = async() => await pageModel.OnGetAsync(specificationId); // Assert test .Should() .ThrowExactly <ArgumentNullException>(); }
public async Task SpecificationRelationshipsPageModel_GivenSpecResponseReturnsBadRequest_ReturnsStatusCode400() { // Arrange string specificationId = Guid.NewGuid().ToString(); ApiResponse <SpecificationSummary> specificationResponse = new ApiResponse <SpecificationSummary>(HttpStatusCode.BadRequest); ISpecsApiClient specsApiClient = CreateSpecsApiClient(); specsApiClient .GetSpecificationSummary(Arg.Is(specificationId)) .Returns(specificationResponse); ILogger logger = CreateLogger(); SpecificationRelationshipsPageModel pageModel = CreatePageModel(specsApiClient, logger: logger); // Act IActionResult result = await pageModel.OnGetAsync(specificationId); // Assert result .Should() .BeOfType <StatusCodeResult>(); StatusCodeResult statusCodeResult = result as StatusCodeResult; statusCodeResult .StatusCode .Should() .Be(400); logger .Received(1) .Error("Failed to fetch specification with status code BadRequest"); }
public async Task SpecificationRelationshipsPageModel_GivenUserHasNoPermissionToMapDataSetsForSpecification_ThenReturnPageResultWithAuthorizedToEditFlagSetToFalse() { // Arrange string specificationId = Guid.NewGuid().ToString(); SpecificationSummary specification = new SpecificationSummary { Id = specificationId }; ApiResponse <SpecificationSummary> specificationResponse = new ApiResponse <SpecificationSummary>(HttpStatusCode.OK, specification); ISpecsApiClient specsApiClient = CreateSpecsApiClient(); specsApiClient .GetSpecificationSummary(Arg.Is(specificationId)) .Returns(specificationResponse); IEnumerable <DatasetSpecificationRelationshipModel> relationships = new[] { new DatasetSpecificationRelationshipModel { DatasetId = "any-ds-id", DatasetName = "any ds name", RelationshipDescription = "any relationship description", Definition = new SpecificationDataDefinitionRelationshipModel { Id = "def-id", Name = "def name", Description = "def desc" }, Version = 1, Id = "rel-id", Name = "rel name", IsProviderData = true } }; ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> > relationshipsResponse = new ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> >(HttpStatusCode.OK, relationships); IDatasetsApiClient datasetsApiClient = CreateDatasetApiClient(); datasetsApiClient .GetDatasetSpecificationRelationshipsBySpecificationId(Arg.Is(specificationId)) .Returns(relationshipsResponse); ILogger logger = CreateLogger(); SpecificationRelationshipsPageModel pageModel = CreatePageModel(specsApiClient, datasetsApiClient, logger, authorizationHelper: CreateMockAuthenticationHelper(false)); // Act IActionResult result = await pageModel.OnGetAsync(specificationId); // Assert result .Should() .BeOfType <PageResult>(); pageModel .IsAuthorizedToMap .Should() .BeFalse(); }
public async Task SpecificationRelationshipsPageModel_GivenDatasetRelationshipsResponseReturnsOKWithContent_ReturnsPage() { // Arrange string specificationId = Guid.NewGuid().ToString(); SpecificationSummary specification = new SpecificationSummary { Id = specificationId }; ApiResponse <SpecificationSummary> specificationResponse = new ApiResponse <SpecificationSummary>(HttpStatusCode.OK, specification); ISpecsApiClient specsApiClient = CreateSpecsApiClient(); specsApiClient .GetSpecificationSummary(Arg.Is(specificationId)) .Returns(specificationResponse); IEnumerable <DatasetSpecificationRelationshipModel> relationships = new[] { new DatasetSpecificationRelationshipModel { DatasetId = "any-ds-id", DatasetName = "any ds name", RelationshipDescription = "any relationship description", Definition = new SpecificationDataDefinitionRelationshipModel { Id = "def-id", Name = "def name", Description = "def desc" }, Version = 1, Id = "rel-id", Name = "rel name", IsProviderData = true } }; ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> > relationshipsResponse = new ApiResponse <IEnumerable <DatasetSpecificationRelationshipModel> >(HttpStatusCode.OK, relationships); IDatasetsApiClient datasetsApiClient = CreateDatasetApiClient(); datasetsApiClient .GetDatasetSpecificationRelationshipsBySpecificationId(Arg.Is(specificationId)) .Returns(relationshipsResponse); ILogger logger = CreateLogger(); SpecificationRelationshipsPageModel pageModel = CreatePageModel(specsApiClient, datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnGetAsync(specificationId); // Assert result .Should() .BeOfType <PageResult>(); pageModel .ShowSuccessMessage .Should() .BeFalse(); pageModel .ViewModel .Items .Count() .Should() .Be(1); pageModel .ViewModel .Items .First() .DatasetId .Should() .Be("any-ds-id"); pageModel .ViewModel .Items .First() .DatasetName .Should() .Be("any ds name"); pageModel .ViewModel .Items .First() .RelationshipDescription .Should() .Be("any relationship description"); pageModel .ViewModel .Items .First() .DatasetVersion .Should() .Be(1); pageModel .ViewModel .Items .First() .RelationshipId .Should() .Be("rel-id"); pageModel .ViewModel .Items .First() .IsProviderData .Should().BeTrue(); pageModel .IsAuthorizedToMap .Should().BeTrue(); }