void cacheing_for_select_many() { before = () => { GameSchema.CreateSchema(seed); player1Id = new { Name = "Jane" }.InsertInto("Players"); game1Id = new { Title = "Mirror's Edge" }.InsertInto("Games"); game2Id = new { Title = "Gears of War" }.InsertInto("Games"); new { PlayerId = player1Id, GameId = game2Id }.InsertInto("Library"); }; it["maintains cache of select many"] = () => { var playerCollection = players.All() as dynamic; selectMany = playerCollection.Games(); selectMany.Count().should_be(1); new { PlayerId = player1Id, GameId = game1Id }.InsertInto("Library"); selectMany = playerCollection.Games(); selectMany.Count().should_be(1); }; it["cache is also applied for parent entries"] = () => { var playerCollection = players.All() as dynamic; var firstPlayer = playerCollection.First(); playerCollection.Games(); new { PlayerId = player1Id, GameId = game1Id }.InsertInto("Library"); ((int)firstPlayer.Games().Count()).should_be(1); }; it["allows the discarding of cache"] = () => { var playerCollection = players.All() as dynamic; selectMany = playerCollection.Games(); selectMany.Count().should_be(1); new { PlayerId = player1Id, GameId = game1Id }.InsertInto("Library"); selectMany = playerCollection.Games(new { discardCache = true }); selectMany.Count().should_be(2); }; }
void belongs_where_entity_belongs_more_than_one_relation() { before = () => { seed = new Seed(); GameSchema.CreateSchema(seed); players = new Players(); player1Id = new { Name = "Jane" }.InsertInto("Players"); player2Id = new { Name = "John" }.InsertInto("Players"); game1Id = new { Title = "Mirror's Edge" }.InsertInto("Games"); game2Id = new { Title = "Gears of War" }.InsertInto("Games"); new { PlayerId = player1Id, GameId = game2Id }.InsertInto("Library"); new { PlayerId = player2Id, GameId = game1Id }.InsertInto("Library"); new { PlayerId = player2Id, GameId = game2Id }.InsertInto("Library"); sqlQueries = new List <string>(); DynamicRepository.WriteDevLog = true; DynamicRepository.LogSql = new Action <object, string, object[]>( (sender, sql, @params) => { sqlQueries.Add(sql); }); allPlayers = players.All(); allPlayers.Include("Library"); allPlayers.Library().Include("Game"); }; it["updates all references that map to the belongs to entity"] = () => { (allPlayers.First().Library().First().Game().Title as object).should_be("Gears of War"); (allPlayers.Last().Library().First().Game().Title as object).should_be("Mirror's Edge"); (allPlayers.Last().Library().Last().Game().Title as object).should_be("Gears of War"); sqlQueries.Count.should_be(3); }; }
void cache_access_in_specific_order() { before = () => { GameSchema.CreateSchema(seed); players = new Players(); player1Id = new { Name = "Jane" }.InsertInto("Players"); player2Id = new { Name = "John" }.InsertInto("Players"); game1Id = new { Title = "Mirror's Edge" }.InsertInto("Games"); game2Id = new { Title = "Gears of War" }.InsertInto("Games"); new { PlayerId = player1Id, GameId = game2Id }.InsertInto("Library"); new { PlayerId = player2Id, GameId = game1Id }.InsertInto("Library"); sqlQueries = new List <string>(); DynamicRepository.WriteDevLog = true; DynamicRepository.LogSql = new Action <object, string, object[]>( (sender, sql, @params) => { sqlQueries.Add(sql); }); }; it["in query isn't run if entries are access independently"] = () => { var allPlayers = players.All() as dynamic; (allPlayers as IEnumerable <dynamic>).Count().should_be(2); foreach (var p in allPlayers) { (p.Games() as IEnumerable <dynamic>).Count().should_be(1); } (allPlayers.Games() as IEnumerable <dynamic>).Count().should_be(2); sqlQueries.Count().should_be(3); }; after = () => DynamicRepository.WriteDevLog = false; }
void before_each() { GameSchema.CreateSchema(seed); players = new Players(); new { Name = "Fluff To Ensure Different Id's" }.InsertInto("Players"); player1Id = new { Name = "Jane" }.InsertInto("Players"); player2Id = new { Name = "John" }.InsertInto("Players"); game1Id = new { Title = "Mirror's Edge" }.InsertInto("Games"); game2Id = new { Title = "Gears of War" }.InsertInto("Games"); new { PlayerId = player1Id, GameId = game2Id }.InsertInto("Library"); new { PlayerId = player2Id, GameId = game1Id }.InsertInto("Library"); }