Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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();
        }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }