public void ShouldThrowWhenUpdatingTwoInstancesOfSameDataAtTheSameTime() { // Arrange var correlationId = Guid.NewGuid(); IProcessManagerData data = new TestSqlServerData { CorrelationId = correlationId, Name = "TestDataUpdated" }; var xmlSerializer = new XmlSerializer(data.GetType()); var sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(sww); xmlSerializer.Serialize(writer, data); var dataXml = sww.ToString(); SetupTestDbData(new List <TestDbRow> { new TestDbRow { Id = correlationId.ToString(), DataXml = dataXml, Version = 1 } }); IProcessManagerFinder processManagerFinder = new SqlServerProcessManagerFinder(_connectionString, string.Empty, 1); var foundData1 = processManagerFinder.FindData <TestSqlServerData>(_mapper, new Message(correlationId)); var foundData2 = processManagerFinder.FindData <TestSqlServerData>(_mapper, new Message(correlationId)); processManagerFinder.UpdateData(foundData1); // first update should be fine // Act / Assert Assert.Throws <ArgumentException>(() => processManagerFinder.UpdateData(foundData2)); // second update should fail }
public void ShouldFindData() { // Arrange var correlationId = Guid.NewGuid(); var data = new TestSqlServerData { CorrelationId = correlationId, Name = "TestData" }; var xmlSerializer = new XmlSerializer(data.GetType()); var sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(sww); xmlSerializer.Serialize(writer, data); var dataXml = sww.ToString(); SetupTestDbData(new List <TestDbRow> { new TestDbRow { Id = correlationId.ToString(), DataXml = dataXml, Version = 1 } }); IProcessManagerFinder processManagerFinder = new SqlServerProcessManagerFinder(_connectionString, string.Empty); // Act var result = processManagerFinder.FindData <TestSqlServerData>(_mapper, new Message(correlationId)); // Assert Assert.Equal("TestData", result.Data.Name); // Teardown - complete transaction processManagerFinder.UpdateData(result); }
public void ShouldUpdateData() { // Arrange var correlationId = Guid.NewGuid(); var testDataJson = "{\"CorrelationId\":\"e845f0a0-4af0-4d1e-a324-790d49d540ae\",\"Name\":\"TestDataOriginal\"}"; IProcessManagerData data = new TestSqlServerData { CorrelationId = correlationId, Name = "TestDataOriginal" }; var xmlSerializer = new XmlSerializer(data.GetType()); var sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(sww); xmlSerializer.Serialize(writer, data); var dataXml = sww.ToString(); SetupTestDbData(new List <TestDbRow> { new TestDbRow { Id = correlationId.ToString(), DataXml = dataXml } }); IProcessManagerData updatedData = new TestSqlServerData { CorrelationId = correlationId, Name = "TestDataUpdated" }; var sqlServerData = new SqlServerData <IProcessManagerData> { Data = updatedData, Id = correlationId }; IProcessManagerFinder processManagerFinder = new SqlServerProcessManagerFinder(_connectionString, string.Empty); // Act //processManagerFinder.FindData<TestSqlServerData>(correlationId); processManagerFinder.FindData <TestSqlServerData>(_mapper, new Message(correlationId)); processManagerFinder.UpdateData(sqlServerData); // Assert var results = GetTestDbData(correlationId); Assert.Equal(1, results.Count); Assert.Equal(correlationId.ToString(), results[0].Id); Assert.False(results[0].DataXml.Contains("TestDataOriginal")); Assert.True(results[0].DataXml.Contains("TestDataUpdated")); }
public void ShouldThrowWhenUpdatingTwoInstancesOfSameDataAtTheSameTime() { // Arrange var correlationId = Guid.NewGuid(); IProcessManagerData data = new TestSqlServerData { CorrelationId = correlationId, Name = "TestDataUpdated" }; var xmlSerializer = new XmlSerializer(data.GetType()); var sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(sww); xmlSerializer.Serialize(writer, data); var dataXml = sww.ToString(); SetupTestDbData(new List<TestDbRow> { new TestDbRow { Id = correlationId.ToString(), DataXml = dataXml, Version = 1 } }); IProcessManagerFinder processManagerFinder = new SqlServerProcessManagerFinder(_connectionString, string.Empty, 1); var foundData1 = processManagerFinder.FindData<TestSqlServerData>(_mapper, new Message(correlationId)); var foundData2 = processManagerFinder.FindData<TestSqlServerData>(_mapper, new Message(correlationId)); processManagerFinder.UpdateData(foundData1); // first update should be fine // Act / Assert Assert.Throws<ArgumentException>(() => processManagerFinder.UpdateData(foundData2)); // second update should fail }
public void ShouldUpdateData() { // Arrange var correlationId = Guid.NewGuid(); var testDataJson = "{\"CorrelationId\":\"e845f0a0-4af0-4d1e-a324-790d49d540ae\",\"Name\":\"TestDataOriginal\"}"; IProcessManagerData data = new TestSqlServerData { CorrelationId = correlationId, Name = "TestDataOriginal" }; var xmlSerializer = new XmlSerializer(data.GetType()); var sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(sww); xmlSerializer.Serialize(writer, data); var dataXml = sww.ToString(); SetupTestDbData(new List<TestDbRow> { new TestDbRow { Id = correlationId.ToString(), DataXml = dataXml } }); IProcessManagerData updatedData = new TestSqlServerData { CorrelationId = correlationId, Name = "TestDataUpdated" }; var sqlServerData = new SqlServerData<IProcessManagerData> { Data = updatedData, Id = correlationId }; IProcessManagerFinder processManagerFinder = new SqlServerProcessManagerFinder(_connectionString, string.Empty); // Act //processManagerFinder.FindData<TestSqlServerData>(correlationId); processManagerFinder.FindData<TestSqlServerData>(_mapper, new Message(correlationId)); processManagerFinder.UpdateData(sqlServerData); // Assert var results = GetTestDbData(correlationId); Assert.Equal(1, results.Count); Assert.Equal(correlationId.ToString(), results[0].Id); Assert.False(results[0].DataXml.Contains("TestDataOriginal")); Assert.True(results[0].DataXml.Contains("TestDataUpdated")); }
public void ShouldFindData() { // Arrange var correlationId = Guid.NewGuid(); var data = new TestSqlServerData {CorrelationId = correlationId, Name = "TestData"}; var xmlSerializer = new XmlSerializer(data.GetType()); var sww = new StringWriter(); XmlWriter writer = XmlWriter.Create(sww); xmlSerializer.Serialize(writer, data); var dataXml = sww.ToString(); SetupTestDbData(new List<TestDbRow> { new TestDbRow { Id = correlationId.ToString(), DataXml = dataXml, Version = 1} }); IProcessManagerFinder processManagerFinder = new SqlServerProcessManagerFinder(_connectionString, string.Empty); // Act var result = processManagerFinder.FindData<TestSqlServerData>(_mapper, new Message(correlationId)); // Assert Assert.Equal("TestData", result.Data.Name); // Teardown - complete transaction processManagerFinder.UpdateData(result); }