Use last version for revert version allocation
This commit is contained in:
parent
5429008d98
commit
d9ba421737
|
|
@ -153,12 +153,17 @@ public class WorkflowDefinitionPublisher(
|
|||
|
||||
public async Task<WorkflowDefinition> RevertVersionAsync(string definitionId, int version, CancellationToken cancellationToken = default)
|
||||
{
|
||||
var filter = new WorkflowDefinitionFilter
|
||||
var latestVersionFilter = new WorkflowDefinitionFilter
|
||||
{
|
||||
DefinitionId = definitionId,
|
||||
VersionOptions = VersionOptions.Latest
|
||||
};
|
||||
var latestVersion = await workflowDefinitionStore.FindAsync(filter, cancellationToken);
|
||||
var latestVersion = await workflowDefinitionStore.FindAsync(latestVersionFilter, cancellationToken);
|
||||
var lastVersionFilter = new WorkflowDefinitionFilter
|
||||
{
|
||||
DefinitionId = definitionId
|
||||
};
|
||||
var lastVersion = await workflowDefinitionStore.FindLastVersionAsync(lastVersionFilter, cancellationToken);
|
||||
|
||||
if (latestVersion != null)
|
||||
{
|
||||
|
|
@ -168,7 +173,7 @@ public class WorkflowDefinitionPublisher(
|
|||
|
||||
var draft = await GetDraftAsync(definitionId, VersionOptions.SpecificVersion(version), cancellationToken);
|
||||
draft!.Id = identityGenerator.GenerateId();
|
||||
draft.Version = (latestVersion?.Version ?? 0) + 1;
|
||||
draft.Version = (lastVersion?.Version ?? 0) + 1;
|
||||
draft.IsLatest = true;
|
||||
|
||||
await workflowDefinitionStore.SaveAsync(draft, cancellationToken);
|
||||
|
|
@ -251,4 +256,4 @@ public class WorkflowDefinitionPublisher(
|
|||
|
||||
return definition;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
using Elsa.Testing.Shared;
|
||||
using Elsa.Workflows.Management;
|
||||
using Elsa.Workflows.Management.Entities;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Xunit.Abstractions;
|
||||
|
||||
namespace Elsa.Workflows.IntegrationTests.Scenarios.WorkflowDefinitionVersioning;
|
||||
|
||||
public class Tests
|
||||
{
|
||||
private readonly IServiceProvider _services;
|
||||
|
||||
public Tests(ITestOutputHelper testOutputHelper)
|
||||
{
|
||||
_services = new TestApplicationBuilder(testOutputHelper).Build();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task RevertVersionAsync_ShouldAllocateVersionAfterHighestStoredVersion()
|
||||
{
|
||||
const string definitionId = "test-definition";
|
||||
var store = _services.GetRequiredService<IWorkflowDefinitionStore>();
|
||||
var publisher = _services.GetRequiredService<IWorkflowDefinitionPublisher>();
|
||||
var definitions = new WorkflowDefinition[]
|
||||
{
|
||||
new()
|
||||
{
|
||||
Id = "v1",
|
||||
DefinitionId = definitionId,
|
||||
Version = 1,
|
||||
IsPublished = true,
|
||||
IsLatest = false
|
||||
},
|
||||
new()
|
||||
{
|
||||
Id = "v2",
|
||||
DefinitionId = definitionId,
|
||||
Version = 2,
|
||||
IsPublished = false,
|
||||
IsLatest = true
|
||||
},
|
||||
new()
|
||||
{
|
||||
Id = "v3",
|
||||
DefinitionId = definitionId,
|
||||
Version = 3,
|
||||
IsPublished = false,
|
||||
IsLatest = false
|
||||
}
|
||||
};
|
||||
|
||||
await store.SaveManyAsync(definitions);
|
||||
|
||||
var revertedDefinition = await publisher.RevertVersionAsync(definitionId, 1);
|
||||
|
||||
Assert.Equal(4, revertedDefinition.Version);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue