Merge pull request #5453 from kumards/patch-1

Fix for duplicate version number on creating a new draft
This commit is contained in:
Sébastien Ros
2015-07-02 12:28:36 -07:00
2 changed files with 42 additions and 4 deletions

View File

@@ -471,6 +471,46 @@ namespace Orchard.Tests.ContentManagement {
Assert.That(gamma2.Record.Versions, Has.Count.EqualTo(2)); Assert.That(gamma2.Record.Versions, Has.Count.EqualTo(2));
} }
[Test]
public void DraftRequiredShouldAlwaysBuildNewVersionFromPublishedIfDraftNotFound()
{
Trace.WriteLine("gamma1");
var gamma1 = _manager.Create(DefaultGammaName, VersionOptions.Published);
Trace.WriteLine("flush");
_session.Flush();
_session.Clear();
Trace.WriteLine("gammaDraft1");
var gammaDraft1 = _manager.Get(gamma1.Id, VersionOptions.DraftRequired);
Assert.That(gammaDraft1.Version, Is.EqualTo(2));
Trace.WriteLine("flush");
_session.Flush();
_session.Clear();
Trace.WriteLine("Delete gammaDraft1");
var gammaDraft2 = _manager.Get(gammaDraft1.Id, VersionOptions.Draft);
gammaDraft2.VersionRecord.Latest = false;
Trace.WriteLine("Restore gamma1 as Latest");
var gamma2 = _manager.Get(gamma1.Id, VersionOptions.Published);
var publishedVersion = gamma2.Record.Versions.SingleOrDefault(x => x.Published);
if (publishedVersion != null)
{
publishedVersion.Latest = true;
}
Trace.WriteLine("flush");
_session.Flush();
_session.Clear();
Trace.WriteLine("gammaDraft3");
var gammaDraft3 = _manager.Get(gamma1.Id, VersionOptions.DraftRequired);
Assert.That(gammaDraft3.Version, Is.EqualTo(3));
Assert.That(gammaDraft3.Record, Is.Not.SameAs(gammaDraft2.Record));
Trace.WriteLine("flush");
_session.Flush();
_session.Clear();
}
[Test] [Test]
public void UsingGetManyDraftRequiredShouldBuildNewVersionIfLatestIsAlreadyPublished() { public void UsingGetManyDraftRequiredShouldBuildNewVersionIfLatestIsAlreadyPublished() {
Trace.WriteLine("gamma1"); Trace.WriteLine("gamma1");

View File

@@ -481,11 +481,9 @@ namespace Orchard.ContentManagement {
if (latestVersion != null) { if (latestVersion != null) {
latestVersion.Latest = false; latestVersion.Latest = false;
buildingItemVersionRecord.Number = latestVersion.Number + 1;
}
else {
buildingItemVersionRecord.Number = contentItemRecord.Versions.Max(x => x.Number) + 1;
} }
////The new version should always be the next highest available number.
buildingItemVersionRecord.Number = contentItemRecord.Versions.Max(x => x.Number) + 1;
contentItemRecord.Versions.Add(buildingItemVersionRecord); contentItemRecord.Versions.Add(buildingItemVersionRecord);
_contentItemVersionRepository.Create(buildingItemVersionRecord); _contentItemVersionRepository.Create(buildingItemVersionRecord);