-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #5275 from dfe-analytical-services/EES-5492-preven…
…t-exceptions-locking-importmetadata-stage EES-5492 - broke orchestrations into their own simplified files and m…
- Loading branch information
Showing
22 changed files
with
546 additions
and
505 deletions.
There are no files selected for viewing
86 changes: 86 additions & 0 deletions
86
...ic.Data.Processor.Tests/Functions/CompleteInitialDataSetVersionProcessingFunctionTests.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
using GovUk.Education.ExploreEducationStatistics.Common.Tests.Extensions; | ||
using GovUk.Education.ExploreEducationStatistics.Public.Data.Model; | ||
using GovUk.Education.ExploreEducationStatistics.Public.Data.Model.Database; | ||
using GovUk.Education.ExploreEducationStatistics.Public.Data.Model.Parquet.Tables; | ||
using GovUk.Education.ExploreEducationStatistics.Public.Data.Processor.Functions; | ||
using GovUk.Education.ExploreEducationStatistics.Public.Data.Services.Interfaces; | ||
using Microsoft.EntityFrameworkCore; | ||
|
||
namespace GovUk.Education.ExploreEducationStatistics.Public.Data.Processor.Tests.Functions; | ||
|
||
public abstract class CompleteInitialDataSetVersionProcessingFunctionTests( | ||
ProcessorFunctionsIntegrationTestFixture fixture) | ||
: ProcessorFunctionsIntegrationTest(fixture) | ||
{ | ||
private static readonly string[] AllDataSetVersionFiles = | ||
[ | ||
DataSetFilenames.CsvDataFile, | ||
DataSetFilenames.CsvMetadataFile, | ||
DataSetFilenames.DuckDbDatabaseFile, | ||
DataSetFilenames.DuckDbLoadSqlFile, | ||
DataSetFilenames.DuckDbSchemaSqlFile, | ||
DataTable.ParquetFile, | ||
FilterOptionsTable.ParquetFile, | ||
IndicatorsTable.ParquetFile, | ||
LocationOptionsTable.ParquetFile, | ||
TimePeriodsTable.ParquetFile | ||
]; | ||
|
||
public class CompleteInitialDataSetVersionProcessingProcessingTests( | ||
ProcessorFunctionsIntegrationTestFixture fixture) | ||
: CompleteInitialDataSetVersionProcessingFunctionTests(fixture) | ||
{ | ||
private const DataSetVersionImportStage Stage = DataSetVersionImportStage.Completing; | ||
|
||
[Fact] | ||
public async Task Success() | ||
{ | ||
var (dataSetVersion, instanceId) = await CreateDataSetInitialVersion(Stage.PreviousStage()); | ||
|
||
var dataSetVersionPathResolver = GetRequiredService<IDataSetVersionPathResolver>(); | ||
Directory.CreateDirectory(dataSetVersionPathResolver.DirectoryPath(dataSetVersion)); | ||
|
||
await CompleteInitialDataSetVersionProcessing(instanceId); | ||
|
||
await using var publicDataDbContext = GetDbContext<PublicDataDbContext>(); | ||
|
||
var savedImport = await publicDataDbContext.DataSetVersionImports | ||
.Include(i => i.DataSetVersion) | ||
.SingleAsync(i => i.InstanceId == instanceId); | ||
|
||
Assert.Equal(Stage, savedImport.Stage); | ||
savedImport.Completed.AssertUtcNow(); | ||
|
||
Assert.Equal(DataSetVersionStatus.Draft, savedImport.DataSetVersion.Status); | ||
} | ||
|
||
[Fact] | ||
public async Task DuckDbFileIsDeleted() | ||
{ | ||
var (dataSetVersion, instanceId) = await CreateDataSetInitialVersion(Stage.PreviousStage()); | ||
|
||
// Create empty data set version files for all file paths | ||
var dataSetVersionPathResolver = GetRequiredService<IDataSetVersionPathResolver>(); | ||
var directoryPath = dataSetVersionPathResolver.DirectoryPath(dataSetVersion); | ||
Directory.CreateDirectory(directoryPath); | ||
foreach (var filename in AllDataSetVersionFiles) | ||
{ | ||
await File.Create(Path.Combine(directoryPath, filename)).DisposeAsync(); | ||
} | ||
|
||
await CompleteInitialDataSetVersionProcessing(instanceId); | ||
|
||
// Ensure the duck db database file is the only file that was deleted | ||
AssertDataSetVersionDirectoryContainsOnlyFiles(dataSetVersion, | ||
AllDataSetVersionFiles | ||
.Where(file => file != DataSetFilenames.DuckDbDatabaseFile) | ||
.ToArray()); | ||
} | ||
|
||
private async Task CompleteInitialDataSetVersionProcessing(Guid instanceId) | ||
{ | ||
var function = GetRequiredService<CompleteInitialDataSetVersionProcessingFunction>(); | ||
await function.CompleteInitialDataSetVersionProcessing(instanceId, CancellationToken.None); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.