Пример #1
0
        public async Task CachedUsersCanBeRetrieved()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "INSERT INTO Users (Id, UserName, UserData) VALUES (@id1, @name1, @data1), "
                                          + "(@id2, @name2, @data2);";

                        cmd.AddParameter("id1", 111);
                        cmd.AddParameter("id2", 222);
                        cmd.AddParameter("name1", "testi");
                        cmd.AddParameter("name2", "testUser");

                        var u = DummyGenerator.CreateDummyUser();
                        u.UserID     = 111;
                        u.ScreenName = "testi";
                        u.CreatedAt  = new DateTime(1, 2, 3, 4, 5, 6);
                        cmd.AddParameter("data1", JsonConvert.SerializeObject(u));

                        u            = DummyGenerator.CreateDummyUser();
                        u.UserID     = 222;
                        u.ScreenName = "testUser";
                        u.CreatedAt  = new DateTime(6, 5, 4, 3, 2, 1);
                        cmd.AddParameter("data2", JsonConvert.SerializeObject(u));

                        cmd.ExecuteNonQuery();
                    }

                    // Act
                    var users = (await cache.GetKnownUsers()).ToArray();

                    // Assert
                    Assert.AreEqual(2, users.Length);
                    Assert.IsNotNull(users.SingleOrDefault(u => u.UserId == 111));
                    Assert.IsNotNull(users.SingleOrDefault(u => u.UserId == 222));
                    Assert.IsNotNull(users.SingleOrDefault(u => u.UserName == "testi"));
                    Assert.IsNotNull(users.SingleOrDefault(u => u.UserName == "testUser"));

                    var data = JsonConvert.DeserializeObject <User>(users.First(u => u.UserId == 111).Data);
                    Assert.AreEqual(new DateTime(1, 2, 3, 4, 5, 6), data.CreatedAt);

                    data = JsonConvert.DeserializeObject <User>(users.First(u => u.UserId == 222).Data);
                    Assert.AreEqual(new DateTime(6, 5, 4, 3, 2, 1), data.CreatedAt);
                }
        }
Пример #2
0
        public async Task ExpiredUserIsNotRetrieved()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "INSERT INTO Users (Id, UserName, UserData, Expires) VALUES (123, 'test', 'test', 100);";
                        cmd.ExecuteNonQuery();
                    }

                    // Act
                    var users = (await cache.GetKnownUsers()).ToArray();

                    // Assert
                    Assert.AreEqual(0, users.Length);
                }
        }
Пример #3
0
        public async Task AddingUserTwiceUpdatesData()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var user = DummyGenerator.CreateDummyUserEx();
                    user.UserID     = 123;
                    user.ScreenName = "test";

                    await cache.AddUsers(new[] { new UserCacheEntry(user) });

                    // Act
                    user.ScreenName = "testi";
                    await cache.AddUsers(new[] { new UserCacheEntry(user) });

                    // Assert
                    var fromDb = (await cache.GetKnownUsers()).First();

                    Assert.AreEqual("testi", fromDb.UserName);
                }
        }