예제 #1
0
        public async Task StatusesForUserCanBeLoaded()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var user = DummyGenerator.CreateDummyUser();
                    user.UserID = 123;

                    var s1 = DummyGenerator.CreateDummyStatus(user);
                    s1.ID = 1;
                    var s2 = DummyGenerator.CreateDummyStatus(user);
                    s2.ID = 2;
                    var s3 = DummyGenerator.CreateDummyStatus(user);
                    s3.ID = 3;

                    await cache.AddStatuses(new[] { s1, s2, s3 });

                    // Act
                    var statuses = (await cache.GetStatusesForUser(123)).ToArray();

                    // Assert
                    Assert.AreEqual(3, statuses.Length);
                    Assert.IsNotNull(statuses.SingleOrDefault(s => s.ID == 1));
                    Assert.IsNotNull(statuses.SingleOrDefault(s => s.ID == 2));
                    Assert.IsNotNull(statuses.SingleOrDefault(s => s.ID == 3));
                }
        }
예제 #2
0
        public async Task NonExistingStatusIsNotFetchedForColumn()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var status = DummyGenerator.CreateDummyStatus();
                    status.ID = 123;
                    var colId = Guid.NewGuid();

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

                    await cache.MapStatusesToColumn(new[] { status }, colId);

                    // Act
                    var beforeDelete = await cache.GetStatusesForColumn(colId, 1);

                    await cache.RemoveStatus(status.ID);

                    var afterDelete = await cache.GetStatusesForColumn(colId, 1);

                    // Assert
                    Assert.AreEqual(1, beforeDelete.Count);
                    Assert.AreEqual(0, afterDelete.Count);
                }
        }
예제 #3
0
        public async Task StatusCanBeAdded()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var status = DummyGenerator.CreateDummyStatus();
                    status.Text        = "hello world";
                    status.User.UserID = status.UserID = 222;
                    status.ID          = 111;

                    // Act
                    await cache.AddStatuses(new[] { status });

                    // Assert
                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "SELECT Id, UserId, StatusData FROM Statuses";
                        using (var reader = cmd.ExecuteReader())
                        {
                            Assert.IsTrue(reader.Read());

                            Assert.AreEqual(111, reader.GetInt32(0));
                            Assert.AreEqual(222, reader.GetInt32(1));

                            var from = JsonConvert.DeserializeObject <Status>(reader.GetString(2));

                            Assert.AreEqual(status.Text, from.Text);
                        }
                    }
                }
        }
예제 #4
0
        public async Task StatusesForColumnCanBeLoaded()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var user = DummyGenerator.CreateDummyUser();
                    user.UserID = 123;

                    var s1 = DummyGenerator.CreateDummyStatus(user);
                    s1.ID = 1;
                    var s2 = DummyGenerator.CreateDummyStatus(user);
                    s2.ID = 2;
                    var s3 = DummyGenerator.CreateDummyStatus(user);
                    s3.ID = 3;

                    await cache.AddStatuses(new[] { s1, s2, s3 });

                    var c1 = Guid.NewGuid();
                    var c2 = Guid.NewGuid();
                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "INSERT INTO ColumnStatuses (ColumnId, StatusId) VALUES (@c1, 1), (@c1, 2), (@c2, 3);";
                        cmd.AddParameter("c1", c1);
                        cmd.AddParameter("c2", c2);
                        cmd.ExecuteNonQuery();
                    }

                    // Act
                    var statusesC1 = (await cache.GetStatusesForColumn(c1, 999)).ToArray();
                    var statusesC2 = (await cache.GetStatusesForColumn(c2, 999)).ToArray();

                    // Assert
                    Assert.AreEqual(2, statusesC1.Length);
                    Assert.IsNotNull(statusesC1.SingleOrDefault(s => s.ID == 1));
                    Assert.IsNotNull(statusesC1.SingleOrDefault(s => s.ID == 2));

                    Assert.AreEqual(1, statusesC2.Length);
                    Assert.IsNotNull(statusesC2.SingleOrDefault(s => s.ID == 3));
                }
        }
예제 #5
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);
                }
        }