public async Task StatusesCanBeMappedToColumns()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var id1 = Guid.NewGuid();
                    var id2 = Guid.NewGuid();

                    var s1 = new List <Status>
                    {
                        DummyGenerator.CreateDummyStatus(),
                        DummyGenerator.CreateDummyStatus()
                    };

                    s1[0].StatusID = 1;
                    s1[1].StatusID = 2;

                    var s2 = new List <Status>
                    {
                        DummyGenerator.CreateDummyStatus()
                    };

                    s2[0].StatusID = 3;

                    // Act
                    await cache.MapStatusesToColumn(s1, id1);

                    await cache.MapStatusesToColumn(s2, id2);

                    // Assert
                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "SELECT StatusId FROM ColumnStatuses WHERE ColumnId=@col ORDER BY StatusId ASC;";
                        cmd.AddParameter("col", id1);

                        using (var reader = cmd.ExecuteReader())
                        {
                            Assert.IsTrue(reader.Read());
                            Assert.AreEqual(1, reader.GetInt32(0));

                            Assert.IsTrue(reader.Read());
                            Assert.AreEqual(2, reader.GetInt32(0));
                        }
                    }

                    using (var cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "SELECT StatusId FROM ColumnStatuses WHERE ColumnId=@col ORDER BY StatusId ASC;";
                        cmd.AddParameter("col", id2);

                        using (var reader = cmd.ExecuteReader())
                        {
                            Assert.IsTrue(reader.Read());
                            Assert.AreEqual(3, reader.GetInt32(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);
                }
        }
        public async Task CleanupRemovesColumnMappings()
        {
            // Arrange
            using (var con = OpenConnection())
                using (var cache = new SqliteCache(con))
                {
                    var status = DummyGenerator.CreateDummyStatus();
                    status.ID = 123;

                    var colId = Guid.NewGuid();

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

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

                    // Assert
                    Assert.AreEqual(0, statuses.Count);
                }
        }