Skip to content

Commit

Permalink
Merge pull request #5182 from dfe-analytical-services/dev
Browse files Browse the repository at this point in the history
Merge dev into Master
  • Loading branch information
N-moh authored Aug 28, 2024
2 parents 4957c3a + d774391 commit 9e88f4f
Show file tree
Hide file tree
Showing 239 changed files with 12,345 additions and 3,452 deletions.
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
#nullable enable
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using GovUk.Education.ExploreEducationStatistics.Admin.Controllers.Api.Bau;
using GovUk.Education.ExploreEducationStatistics.Common.Model;
using GovUk.Education.ExploreEducationStatistics.Common.Services.Interfaces;
using GovUk.Education.ExploreEducationStatistics.Common.Tests.Extensions;
using GovUk.Education.ExploreEducationStatistics.Common.ViewModels;
using GovUk.Education.ExploreEducationStatistics.Content.Services.Interfaces.Cache;
using GovUk.Education.ExploreEducationStatistics.Content.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Moq;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using static GovUk.Education.ExploreEducationStatistics.Admin.Controllers.Api.Bau.BauCacheController;
using static GovUk.Education.ExploreEducationStatistics.Common.BlobContainers;
using static GovUk.Education.ExploreEducationStatistics.Common.Services.CollectionUtils;
Expand Down Expand Up @@ -79,11 +79,11 @@ public async Task ClearPrivateCacheReleases_AllValidPaths()
var result = await controller.ClearPrivateCache(
new ClearPrivateCachePathsViewModel
{
Paths = new HashSet<string>
{
Paths =
[
"data-blocks",
"subject-meta"
}
]
}
);

Expand Down Expand Up @@ -120,7 +120,7 @@ public async Task UpdatePublicCacheGlossary()
var glossaryCacheService = new Mock<IGlossaryCacheService>(Strict);

glossaryCacheService.Setup(s => s.UpdateGlossary())
.ReturnsAsync(new List<GlossaryCategoryViewModel>());
.ReturnsAsync([]);

var controller = BuildController(glossaryCacheService: glossaryCacheService.Object);

Expand Down Expand Up @@ -274,6 +274,76 @@ public async Task ClearPublicCacheReleaseJson()
Assert.DoesNotMatch(regex, "publications/publication-1/releases/1234-56-q1.json.bak");
}

[Fact]
public async Task ClearPrivateGeoJsonCacheJson()
{
var privateBlobStorageService = new Mock<IPrivateBlobStorageService>(Strict);

DeleteBlobsOptions options = null!;
var match = new CaptureMatch<DeleteBlobsOptions>(param => options = param);

privateBlobStorageService
.Setup(
s =>
s.DeleteBlobs(PrivateContent, null, Capture.With(match)))
.Returns(Task.CompletedTask);

var controller = BuildController(privateBlobStorageService: privateBlobStorageService.Object);

var result = await controller.ClearPrivateGeoJsonCacheJson();

VerifyAllMocks(privateBlobStorageService);

result.AssertNoContent();

var guid = Guid.NewGuid();
var regex = Assert.IsType<Regex>(options.IncludeRegex);
Assert.Matches(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/{guid}-1.json");
Assert.Matches(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/{guid}-12.json");
Assert.Matches(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/{guid}-123.json");
Assert.DoesNotMatch(regex, $"releases/{guid}/data-blocks/{guid}");
Assert.DoesNotMatch(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/");
Assert.DoesNotMatch(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/{guid}-.json");
Assert.DoesNotMatch(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/{guid}-a.json");
Assert.DoesNotMatch(regex, $"releases/{guid}/data-blocks/{guid}-boundary-levels/{guid}-1234.json");
}

[Fact]
public async Task ClearPublicGeoJsonCacheJson()
{
var publicBlobStorageService = new Mock<IPublicBlobStorageService>(Strict);

DeleteBlobsOptions options = null!;
var match = new CaptureMatch<DeleteBlobsOptions>(param => options = param);

publicBlobStorageService
.Setup(
s =>
s.DeleteBlobs(PublicContent, null, Capture.With(match)))
.Returns(Task.CompletedTask);

var controller = BuildController(publicBlobStorageService: publicBlobStorageService.Object);

var result = await controller.ClearPublicGeoJsonCacheJson();

VerifyAllMocks(publicBlobStorageService);

result.AssertNoContent();

var guid = Guid.NewGuid();
var regex = Assert.IsType<Regex>(options.IncludeRegex);
Assert.Matches(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/{guid}-1.json");
Assert.Matches(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/{guid}-12.json");
Assert.Matches(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/{guid}-123.json");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/abcd-ef/data-blocks/{guid}-boundary-levels/{guid}-1.json");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/2020-1/data-blocks/{guid}-boundary-levels/{guid}-.json");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/{guid}-.json");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/{guid}-a.json");
Assert.DoesNotMatch(regex, $"publications/publication-1/releases/2020-01/data-blocks/{guid}-boundary-levels/{guid}-1234.json");
}

[Fact]
public async Task ClearPublicCacheReleases_SingleValidPath()
{
Expand Down Expand Up @@ -331,11 +401,11 @@ public async Task ClearPublicCacheReleases_AllValidPaths()
var result = await controller.ClearPublicCacheReleases(
new ClearPublicCacheReleasePathsViewModel
{
Paths = new HashSet<string>
{
Paths =
[
"data-blocks",
"subject-meta"
}
]
}
);

Expand Down Expand Up @@ -374,7 +444,7 @@ public async Task UpdatePublicCacheTrees_SingleValidCacheEntry()

publicationCacheService
.Setup(s => s.UpdatePublicationTree())
.ReturnsAsync(new List<PublicationTreeThemeViewModel>());
.ReturnsAsync([]);

var controller = BuildController(publicationCacheService: publicationCacheService.Object);

Expand All @@ -400,12 +470,12 @@ public async Task UpdatePublicCacheTrees_AllValidCacheEntries()

publicationCacheService
.Setup(s => s.UpdatePublicationTree())
.ReturnsAsync(new List<PublicationTreeThemeViewModel>());
.ReturnsAsync([]);

methodologyCacheService
.Setup(s => s.UpdateSummariesTree())
.ReturnsAsync(new Either<ActionResult, List<AllMethodologiesThemeViewModel>>(
new List<AllMethodologiesThemeViewModel>()));
[]));

var controller = BuildController(
methodologyCacheService: methodologyCacheService.Object,
Expand All @@ -417,11 +487,11 @@ public async Task UpdatePublicCacheTrees_AllValidCacheEntries()
var result = await controller.UpdatePublicCacheTrees(
new UpdatePublicCacheTreePathsViewModel
{
CacheEntries = new HashSet<string>
{
CacheEntries =
[
publicationTreeOption,
methodologyTreeOption
}
]
}
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -480,7 +480,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile())
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -605,7 +605,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -724,7 +724,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -1259,7 +1259,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -1479,7 +1479,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -1598,7 +1598,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down Expand Up @@ -1713,7 +1713,7 @@ await TestApp.AddTestData<PublicDataDbContext>(context =>
});

ReleaseFile releaseFile = DataFixture.DefaultReleaseFile()
.WithId(nextDataSetVersion.ReleaseFileId)
.WithId(nextDataSetVersion.Release.ReleaseFileId)
.WithReleaseVersion(DataFixture.DefaultReleaseVersion())
.WithFile(DataFixture.DefaultFile(FileType.Data))
.WithPublicApiDataSetId(nextDataSetVersion.DataSetId)
Expand Down
Loading

0 comments on commit 9e88f4f

Please sign in to comment.