public void Insert_Poco() { //Just a few props as it is just to test that it runs var user = TestDataHelper.GetUserList().First(); var newUser = new InsertUser { Id = Guid.NewGuid(), Name = user.Name }; var sessionMock = new Mock<ISession>(MockBehavior.Strict); sessionMock .Setup(s => s.ExecuteAsync(It.IsAny<BoundStatement>())) .Returns(TestHelper.DelayedTask(new RowSet())) .Verifiable(); sessionMock .Setup(s => s.PrepareAsync(It.IsAny<string>())) .Returns<string>(cql => TaskHelper.ToTask(GetPrepared(cql))) .Verifiable(); var mappingClient = GetMappingClient(sessionMock); //Execute mappingClient.Insert(newUser); sessionMock.Verify(s => s.ExecuteAsync(It.Is<BoundStatement>(stmt => stmt.QueryValues.Length == TestHelper.ToDictionary(newUser).Count && stmt.PreparedStatement.Cql.StartsWith("INSERT INTO users (") )), Times.Exactly(1)); sessionMock.Verify(); }
public void Execute_Batch_Returns_WhenResponse_IsReceived() { var newUser = new InsertUser { Id = Guid.NewGuid(), Name = "Dummy" }; var rowsetReturned = false; var sessionMock = new Mock<ISession>(MockBehavior.Strict); sessionMock .Setup(s => s.ExecuteAsync(It.IsAny<BatchStatement>())) .Returns(TestHelper.DelayedTask(new RowSet(), 2000).ContinueWith(t => { rowsetReturned = true; return t.Result; })) .Verifiable(); sessionMock .Setup(s => s.PrepareAsync(It.IsAny<string>())) .Returns<string>(cql => TaskHelper.ToTask(GetPrepared(cql))) .Verifiable(); var mapper = GetMappingClient(sessionMock); var batch = mapper.CreateBatch(); batch.Insert(newUser); //Execute mapper.Execute(batch); Assert.True(rowsetReturned); sessionMock.Verify(); }
public void InsertAsync_Poco() { // Get a "new" user by using the test data from an existing user and changing the primary key var user = TestDataHelper.GetUserList().First(); var newUser = new InsertUser { Id = Guid.NewGuid(), Name = user.Name, Age = user.Age, CreatedDate = user.CreatedDate, IsActive = user.IsActive, LastLoginDate = user.LastLoginDate, LoginHistory = user.LoginHistory, LuckyNumbers = user.LuckyNumbers, ChildrenAges = new Dictionary<string, int>(user.ChildrenAges), FavoriteColor = user.FavoriteColor, TypeOfUser = user.TypeOfUser, PreferredContact = user.PreferredContactMethod, HairColor = user.HairColor }; var sessionMock = new Mock<ISession>(MockBehavior.Strict); sessionMock .Setup(s => s.ExecuteAsync(It.IsAny<BoundStatement>())) .Returns(TaskHelper.ToTask(new RowSet())) .Verifiable(); sessionMock .Setup(s => s.PrepareAsync(It.IsAny<string>())) .Returns<string>(cql => TaskHelper.ToTask(GetPrepared(cql))) .Verifiable(); var mappingClient = GetMappingClient(sessionMock); //Execute Insert and wait mappingClient.InsertAsync(newUser).Wait(3000); sessionMock.Verify(s => s.ExecuteAsync(It.Is<BoundStatement>(stmt => stmt.QueryValues.Length == TestHelper.ToDictionary(newUser).Count && stmt.PreparedStatement.Cql.StartsWith("INSERT INTO users (") )), Times.Exactly(1)); sessionMock.Verify(); }
public void InsertIfNotExists_Poco_AppliedInfo_False_Test() { //Just a few props as it is just to test that it runs var user = TestDataHelper.GetUserList().First(); var newUser = new InsertUser { Id = Guid.NewGuid(), Name = user.Name }; string query = null; var sessionMock = new Mock<ISession>(MockBehavior.Strict); sessionMock .Setup(s => s.ExecuteAsync(It.IsAny<BoundStatement>())) .Returns(TestHelper.DelayedTask(TestDataHelper.CreateMultipleValuesRowSet(new[] { "[applied]", "userid", "name" }, new object[] { false, newUser.Id, "existing-name"}))) .Callback<BoundStatement>(b => query = b.PreparedStatement.Cql) .Verifiable(); sessionMock .Setup(s => s.PrepareAsync(It.IsAny<string>())) .Returns<string>(cql => TestHelper.DelayedTask(GetPrepared(cql))) .Verifiable(); var mappingClient = GetMappingClient(sessionMock); //Execute var appliedInfo = mappingClient.InsertIfNotExists(newUser); sessionMock.Verify(); StringAssert.StartsWith("INSERT INTO users (", query); StringAssert.EndsWith(") IF NOT EXISTS", query); Assert.False(appliedInfo.Applied); Assert.AreEqual(newUser.Id, appliedInfo.Existing.Id); Assert.AreEqual("existing-name", appliedInfo.Existing.Name); }
public void Execute_MixedBatch_Test() { // Generate test user const int idx = 20; var testUser = new InsertUser { Id = Guid.NewGuid(), Name = string.Format("Name {0}", idx), Age = idx, CreatedDate = TestDataGenerator.GetDateTimeInPast(idx), IsActive = idx % 2 == 0, LastLoginDate = TestDataGenerator.GetNullableDateTimeInPast(idx), LoginHistory = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast), LuckyNumbers = TestDataGenerator.GetSet(idx, i => i), FavoriteColor = TestDataGenerator.GetEnumValue<RainbowColor>(idx), TypeOfUser = TestDataGenerator.GetEnumValue<UserType?>(idx), PreferredContact = TestDataGenerator.GetEnumValue<ContactMethod>(idx), HairColor = TestDataGenerator.GetEnumValue<HairColor>(idx) }; // Get id of existing user for deleting and updating Guid deleteId = Guid.NewGuid(); Guid updateId = Guid.NewGuid(); // Create batch of mixed statements and execute var mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet())); ICqlBatch batch = mapper.CreateBatch(); batch.Insert(testUser); batch.Delete<InsertUser>("WHERE userid = ?", deleteId); batch.Update<InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId); mapper.Execute(batch); }
public void Execute_MixedBatch_Test() { // Generate test user const int idx = 20; var testUser = new InsertUser { Id = Guid.NewGuid(), Name = string.Format("Name {0}", idx), Age = idx, CreatedDate = TestDataGenerator.GetDateTimeInPast(idx), IsActive = idx % 2 == 0, LastLoginDate = TestDataGenerator.GetNullableDateTimeInPast(idx), LoginHistory = TestDataGenerator.GetList(idx, TestDataGenerator.GetDateTimeInPast), LuckyNumbers = TestDataGenerator.GetSet(idx, i => i), FavoriteColor = TestDataGenerator.GetEnumValue<RainbowColor>(idx), TypeOfUser = TestDataGenerator.GetEnumValue<UserType?>(idx), PreferredContact = TestDataGenerator.GetEnumValue<ContactMethod>(idx), HairColor = TestDataGenerator.GetEnumValue<HairColor>(idx) }; // Get id of existing user for deleting and updating Guid deleteId = Guid.NewGuid(); Guid updateId = Guid.NewGuid(); // Create batch of mixed statements and execute var mapper = GetMapper(() => TestHelper.DelayedTask(new RowSet())); ICqlBatch batch = mapper.CreateBatch(); batch.Insert(testUser); batch.Delete<InsertUser>("WHERE userid = ?", deleteId); batch.Update<InsertUser>("SET name = ? WHERE userid = ?", "SomeNewName", updateId); var queries = batch.Statements.Select(cql => cql.Statement).ToArray(); Assert.AreEqual(3, queries.Length); Assert.AreEqual("INSERT INTO users (userid, Name, Age, CreatedDate, IsActive, " + "LastLoginDate, LoginHistory, LuckyNumbers, ChildrenAges, " + "FavoriteColor, TypeOfUser, preferredcontactmethod, HairColor) VALUES " + "(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", queries[0]); Assert.AreEqual("DELETE FROM users WHERE userid = ?", queries[1]); Assert.AreEqual("UPDATE users SET name = ? WHERE userid = ?", queries[2]); mapper.Execute(batch); }