예제 #1
0
        public async Task UserCanBeAdded()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var user = DummyGenerator.CreateDummyUserEx();
                    user.UserID     = 123;
                    user.ScreenName = "testi";
                    user.UrlDisplay = "display_url";

                    var entry = new UserCacheEntry(user);

                    // Act
                    await cache.AddUsers(new[] { entry });

                    // Assert
                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "SELECT Id, UserName, UserData FROM Users";
                        using (var reader = cmd.ExecuteReader())
                        {
                            Assert.IsTrue(reader.Read());

                            Assert.AreEqual(123L, reader.GetInt64(0));
                            Assert.AreEqual("testi", reader.GetString(1));

                            var jsonUser = JsonConvert.DeserializeObject <UserEx>(reader.GetString(2));
                            Assert.AreEqual(user.UserID, jsonUser.UserID);
                            Assert.AreEqual(user.ScreenName, jsonUser.ScreenName);
                            Assert.AreEqual(user.UrlDisplay, jsonUser.UrlDisplay);
                        }
                    }
                }
        }
예제 #2
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);
                }
        }
예제 #3
0
        public async Task ClearRemovesAllDataFromCache()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    await cache.AddHashtags(new[] { "one", "two", "three" });

                    await cache.AddMessages(new[] { new MessageCacheEntry(DummyGenerator.CreateDummyMessage()) });

                    await cache.AddStatuses(new[] { DummyGenerator.CreateDummyStatus() });

                    var userToCache = DummyGenerator.CreateDummyUserEx(1);
                    userToCache.Name = userToCache.ScreenName = "test";
                    await cache.AddUsers(new[] { new UserCacheEntry(userToCache) });

                    // Act
                    await cache.Clear();

                    // Assert
                    var tags = await cache.GetKnownHashtags();

                    Assert.AreEqual(0, tags.Count());

                    var msg = await cache.GetMessages();

                    Assert.AreEqual(0, msg.Count);

                    var user = await cache.GetUser(1);

                    Assert.IsNull(user);

                    var status = await cache.GetStatus(0);

                    Assert.IsNull(status);
                }
        }