Skip to content

Commit e299f4d

Browse files
authored
Merge pull request #26 from sbmako/5.2.4-patch
added saga data change detection and removed subscription dependency on IHaveDocumentVersion
2 parents 0d8dc04 + 0c2dbbd commit e299f4d

File tree

16 files changed

+300
-225
lines changed

16 files changed

+300
-225
lines changed

packaging/nuget/NServiceBus.MongoDB.nuspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
44
<id>NServiceBus.MongoDB</id>
55
<title>NServiceBus MongoDB</title>
6-
<version>5.2.4</version>
6+
<version>5.2.5</version>
77
<authors>Carlos Sandoval</authors>
88
<owners>SharkByte Software</owners>
99
<licenseUrl>https://github.com/sbmako/NServiceBus.MongoDB/blob/master/LICENSE</licenseUrl>

src/.nuget/NuGet.exe

2.19 MB
Binary file not shown.

src/NServiceBus.MongoDB.Acceptance.Tests/App_Packages/NSB.AcceptanceTests.5.2.5/Sagas/When_a_existing_saga_instance_exists.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ public class TestSagaData : IContainSagaData, IHaveDocumentVersion
8383
public virtual Guid SomeId { get; set; }
8484

8585
public int DocumentVersion { get; set; }
86+
87+
public int ETag { get; set; }
8688
}
8789
}
8890

src/NServiceBus.MongoDB.Acceptance.Tests/App_Packages/NSB.AcceptanceTests.5.2.5/Sagas/When_receiving_that_completes_the_saga.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ public class TestSagaData : IContainSagaData, IHaveDocumentVersion
148148
public virtual Guid SomeId { get; set; }
149149

150150
public int DocumentVersion { get; set; }
151+
public int ETag { get; set; }
151152
}
152153
}
153154

src/NServiceBus.MongoDB.Acceptance.Tests/App_Packages/NSB.AcceptanceTests.5.2.5/Sagas/When_saga_has_a_non_empty_constructor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public class TestSagaData : IContainSagaData, IHaveDocumentVersion
8181
public virtual Guid SomeId { get; set; }
8282

8383
public int DocumentVersion { get; set; }
84+
public int ETag { get; set; }
8485
}
8586
}
8687

src/NServiceBus.MongoDB.Acceptance.Tests/App_Packages/NSB.AcceptanceTests.5.2.5/Sagas/When_saga_is_mapped_to_complex_expression.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public class TestSagaData : IContainSagaData, IHaveDocumentVersion
7070
public virtual string KeyValue { get; set; }
7171

7272
public int DocumentVersion { get; set; }
73+
public int ETag { get; set; }
7374
}
7475
}
7576

src/NServiceBus.MongoDB.Acceptance.Tests/App_Packages/NSB.AcceptanceTests.5.2.5/Sagas/When_using_a_received_message_for_timeout.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class TestSagaData : IContainSagaData, IHaveDocumentVersion
7171
public virtual Guid SomeId { get; set; }
7272

7373
public int DocumentVersion { get; set; }
74+
public int ETag { get; set; }
7475
}
7576
}
7677

src/NServiceBus.MongoDB.Tests/Issues/Issue_16.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,5 +75,6 @@ public sealed class DeviceCommandSagaState : IContainSagaData, IHaveDocumentVers
7575

7676
//IHaveDocumentVersion properties
7777
public int DocumentVersion { get; set; }
78+
public int ETag { get; set; }
7879
}
7980
}

src/NServiceBus.MongoDB.Tests/SagaPersister/MongoSagaPersisterTests.cs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,40 @@ public void UpdatingSagaWithoutDocumentVersion(
238238
sut.Invoking(s => s.Update(sagaData)).ShouldThrow<InvalidOperationException>();
239239
}
240240

241+
[Theory, IntegrationTest]
242+
[AutoDatabase]
243+
public void UpdatingSagaWithNoChangesShouldNotUpdateVersion(
244+
MongoSagaPersister sut,
245+
MongoDatabaseFactory factory,
246+
SagaWithoutUniqueProperties sagaData)
247+
{
248+
sut.Save(sagaData);
249+
var saga1 = factory.RetrieveSagaData(sagaData);
250+
251+
sut.Update(saga1);
252+
253+
var saga2 = factory.RetrieveSagaData(sagaData);
254+
saga2.DocumentVersion.Should().Be(saga1.DocumentVersion);
255+
}
256+
257+
[Theory, IntegrationTest]
258+
[AutoDatabase]
259+
public void UpdatingSagaWithChangesShouldUpdateVersion(
260+
MongoSagaPersister sut,
261+
MongoDatabaseFactory factory,
262+
SagaWithoutUniqueProperties sagaData)
263+
{
264+
sut.Save(sagaData);
265+
var saga1 = factory.RetrieveSagaData(sagaData);
266+
267+
saga1.UniqueProperty = "NewValue";
268+
sut.Update(saga1);
269+
270+
var saga2 = factory.RetrieveSagaData(sagaData);
271+
saga2.DocumentVersion.Should().Be(saga1.DocumentVersion + 1);
272+
saga2.UniqueProperty.Should().Be(saga1.UniqueProperty);
273+
}
274+
241275
[Theory, IntegrationTest]
242276
[AutoDatabase]
243277
public void CompletingSagaShouldRemoveDocument(

src/NServiceBus.MongoDB/ContainMongoSagaData.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,10 @@ public abstract class ContainMongoSagaData : ContainSagaData, IHaveDocumentVersi
3939
/// Gets or sets the document version.
4040
/// </summary>
4141
public int DocumentVersion { get; set; }
42+
43+
/// <summary>
44+
/// Gets or sets the e tag.
45+
/// </summary>
46+
public int ETag { get; set; }
4247
}
4348
}

0 commit comments

Comments
 (0)