Beispiel #1
0
        public void Insert_update_and_delete_entity_with_enum_property()
        {
            using (var context = new GearsOfWarContext())
            {
                var taisTag = new CogTag
                {
                    Note = "Tai's tag",
                };

                var tai = new Gear
                {
                    FullName = "Tai Kaliso",
                    Nickname = "Tai",
                    Squad    = context.Squads.First(),
                    Rank     = MilitaryRank.Corporal,
                    Tag      = taisTag,
                };

                context.Gears.Add(tai);
                context.SaveChanges();
                Assert.True(context.Gears.Where(g => g.Nickname == "Tai" && g.Rank == MilitaryRank.Corporal).Any());

                tai.Rank = MilitaryRank.Sergeant;
                context.SaveChanges();
                var taisNewRank = context.Gears.Where(g => g.Nickname == "Tai").Select(g => g.Rank).Single();
                Assert.Equal(MilitaryRank.Sergeant, taisNewRank);

                context.Gears.Remove(tai);
                context.SaveChanges();
                Assert.False(context.Gears.Where(g => g.Nickname == "Tai").Any());
            }
        }
Beispiel #2
0
        public void Modifying_identity_generated_key_throws()
        {
            ExtendedSqlAzureExecutionStrategy.ExecuteNew(
                () =>
            {
                using (new TransactionScope())
                {
                    using (var context = new GearsOfWarContext())
                    {
                        var tag = new CogTag
                        {
                            Id   = Guid.NewGuid(),
                            Note = "Some Note",
                        };

                        context.Tags.Add(tag);
                        context.SaveChanges();
                        tag.Id = Guid.NewGuid();

                        Assert.Throws <InvalidOperationException>(() => context.SaveChanges())
                        .ValidateMessage(typeof(DbContext).Assembly(), "ObjectStateEntry_CannotModifyKeyProperty", null, "Id");
                    }
                }
            });
        }
Beispiel #3
0
        public void Update_resulting_in_data_truncation_throws_exception()
        {
            ExtendedSqlAzureExecutionStrategy.ExecuteNew(
                () =>
            {
                using (new TransactionScope())
                {
                    using (var context = new GearsOfWarContext())
                    {
                        var cogTagNoteMaxLength = 40;
                        var cogTag = new CogTag
                        {
                            Id   = Guid.NewGuid(),
                            Note = new string('A', cogTagNoteMaxLength),
                        };

                        context.Tags.Add(cogTag);
                        context.SaveChanges();

                        cogTag.Note = new string('A', cogTagNoteMaxLength + 1);
                        Assert.Throws <DbUpdateException>(() => context.SaveChanges());
                    }
                }
            });
        }
Beispiel #4
0
        public void Same_entity_with_one_to_one_relationship_attached_to_two_different_entities_throw_on_insert()
        {
            using (var context = new GearsOfWarContext())
            {
                var tag = new CogTag
                {
                    Note = "Who's tag is it?",
                };

                var gear1 = new Gear
                {
                    Nickname = "Gear1",
                    FullName = "Gear1",
                    Rank     = MilitaryRank.Private,
                    Squad    = context.Squads.First(),
                    Tag      = tag,
                };

                var gear2 = new Gear
                {
                    Nickname = "Gear2",
                    FullName = "Gear2",
                    Rank     = MilitaryRank.Private,
                    Squad    = context.Squads.First(),
                    Tag      = tag,
                };

                context.Gears.AddRange(new[] { gear1, gear2 });
                Assert.Throws <DbUpdateException>(() => context.SaveChanges());
            }
        }
Beispiel #5
0
        public void Inserting_entity_that_references_itself_in_one_to_many_relationship_works()
        {
            using (var context = new GearsOfWarContext())
            {
                var squad = new Squad
                {
                    Name = "One Man Squad",
                };

                var tag = new CogTag
                {
                    Note = "Tag",
                };

                var oneManArmy = new Gear
                {
                    FullName = "One Man Army",
                    Nickname = "OMA",
                    Rank     = MilitaryRank.Private,
                    Squad    = squad,
                    Tag      = tag,
                };

                oneManArmy.Reports = new List <Gear> {
                    oneManArmy
                };

                context.Gears.Add(oneManArmy);
                context.SaveChanges();

                var oma = context.Gears.Where(g => g.Nickname == "OMA").Include(g => g.Reports).Single();
                Assert.Same(oma, oma.Reports.Single());
            }
        }
Beispiel #6
0
        public void Insert_principal_entity_without_required_dependant_does_not_throw()
        {
            using (var context = new GearsOfWarContext())
            {
                var nobodysTag = new CogTag
                {
                    Note = "Owner Unknown",
                };

                context.Tags.Add(nobodysTag);
                context.SaveChanges();

                Assert.True(context.Tags.Any(t => t.Note == "Owner Unknown"));
            }
        }
Beispiel #7
0
        public void Insert_resulting_in_data_truncation_throws_exception()
        {
            using (var context = new GearsOfWarContext())
            {
                var cogTagNoteMaxLength = 40;
                var cogTag = new CogTag
                {
                    Note = new string('A', cogTagNoteMaxLength + 1),
                };

                context.Tags.Add(cogTag);

                var exception = Assert.Throws <DbUpdateException>(
                    () => context.SaveChanges());
            }
        }
Beispiel #8
0
        public void Insert_principal_entity_without_required_dependant_does_not_throw()
        {
            ExtendedSqlAzureExecutionStrategy.ExecuteNew(
                () =>
            {
                using (new TransactionScope())
                {
                    using (var context = new GearsOfWarContext())
                    {
                        var nobodysTag = new CogTag
                        {
                            Id   = Guid.NewGuid(),
                            Note = "Owner Unknown",
                        };

                        context.Tags.Add(nobodysTag);
                        context.SaveChanges();

                        Assert.True(context.Tags.Any(t => t.Note == "Owner Unknown"));
                    }
                }
            });
        }
        public static void Seed(GearsOfWarContext context)
        {
            var deltaSquad = new Squad
            {
                Name = "Delta",
                Members = new List<Gear>()
            };

            context.Squads.Add(deltaSquad);
            context.SaveChanges();

            var kiloSquad = new Squad
            {
                Name = "Kilo",
                Members = new List<Gear>()
            };

            context.Squads.Add(kiloSquad);
            context.SaveChanges();

            var jacinto = new City
            {
                Location = "Jacinto's location",
                Name = "Jacinto"
            };

            var ephyra = new City
            {
                Location = "Ephyra's location",
                Name = "Ephyra"
            };

            var hanover = new City
            {
                Location = "Hanover's location",
                Name = "Hanover"
            };

            var unknown = new City
            {
                Location = "Unknown",
                Name = "Unknown"
            };

            context.Cities.Add(jacinto);
            context.Cities.Add(ephyra);
            context.Cities.Add(hanover);
            context.Cities.Add(unknown);

            context.SaveChanges();

            var marcusLancer = new Weapon
            {
                Name = "Marcus' Lancer",
                AmmunitionType = AmmunitionType.Cartridge,
                IsAutomatic = true
            };

            var marcusGnasher = new Weapon
            {
                Name = "Marcus' Gnasher",
                AmmunitionType = AmmunitionType.Shell,
                IsAutomatic = false,
                SynergyWith = marcusLancer
            };

            var domsHammerburst = new Weapon
            {
                Name = "Dom's Hammerburst",
                AmmunitionType = AmmunitionType.Cartridge,
                IsAutomatic = false
            };

            var domsGnasher = new Weapon
            {
                Name = "Dom's Gnasher",
                AmmunitionType = AmmunitionType.Shell,
                IsAutomatic = false
            };

            var colesGnasher = new Weapon
            {
                Name = "Cole's Gnasher",
                AmmunitionType = AmmunitionType.Shell,
                IsAutomatic = false
            };

            var colesMulcher = new Weapon
            {
                Name = "Cole's Mulcher",
                AmmunitionType = AmmunitionType.Cartridge,
                IsAutomatic = true
            };

            var bairdsLancer = new Weapon
            {
                Name = "Baird's Lancer",
                AmmunitionType = AmmunitionType.Cartridge,
                IsAutomatic = true
            };

            var bairdsGnasher = new Weapon
            {
                Name = "Baird's Gnasher",
                AmmunitionType = AmmunitionType.Shell,
                IsAutomatic = false
            };

            var paduksMarkza = new Weapon
            {
                Name = "Paduk's Markza",
                AmmunitionType = AmmunitionType.Cartridge,
                IsAutomatic = false
            };

            var maulersFlail = new Weapon
            {
                Name = "Mauler's Flail",
                IsAutomatic = false
            };

            context.Weapons.Add(marcusLancer);
            context.Weapons.Add(marcusGnasher);
            context.Weapons.Add(domsHammerburst);
            context.Weapons.Add(domsGnasher);
            context.Weapons.Add(colesGnasher);
            context.Weapons.Add(colesMulcher);
            context.Weapons.Add(bairdsLancer);
            context.Weapons.Add(bairdsGnasher);
            context.Weapons.Add(paduksMarkza);
            context.Weapons.Add(maulersFlail);
            context.SaveChanges();

            var marcusTag = new CogTag
            {
                Id = Guid.NewGuid(),
                Note = "Marcus's Tag"
            };

            var domsTag = new CogTag
            {
                Id = Guid.NewGuid(),
                Note = "Dom's Tag"
            };

            var colesTag = new CogTag
            {
                Id = Guid.NewGuid(),
                Note = "Cole's Tag"
            };

            var bairdsTag = new CogTag
            {
                Id = Guid.NewGuid(),
                Note = "Bairds's Tag"
            };

            var paduksTag = new CogTag
            {
                Id = Guid.NewGuid(),
                Note = "Paduk's Tag"
            };

            var kiaTag = new CogTag
            {
                Id = Guid.NewGuid(),
                Note = "K.I.A."
            };

            context.Tags.Add(marcusTag);
            context.Tags.Add(domsTag);
            context.Tags.Add(colesTag);
            context.Tags.Add(bairdsTag);
            context.Tags.Add(paduksTag);
            context.Tags.Add(kiaTag);
            context.SaveChanges();

            var dom = new Gear
            {
                Nickname = "Dom",
                FullName = "Dominic Santiago",
                SquadId = deltaSquad.Id,
                Rank = MilitaryRank.Corporal,
                AssignedCity = ephyra,
                CityOrBirthName = ephyra.Name,
                Tag = domsTag,
                Weapons = new List<Weapon> { domsHammerburst, domsGnasher }
            };

            var cole = new Gear
            {
                Nickname = "Cole Train",
                FullName = "Augustus Cole",
                SquadId = deltaSquad.Id,
                Rank = MilitaryRank.Private,
                CityOrBirthName = hanover.Name,
                AssignedCity = jacinto,
                Tag = colesTag,
                Weapons = new List<Weapon> { colesGnasher, colesMulcher }
            };

            var paduk = new Gear
            {
                Nickname = "Paduk",
                FullName = "Garron Paduk",
                SquadId = kiloSquad.Id,
                Rank = MilitaryRank.Private,
                CityOrBirthName = unknown.Name,
                Tag = paduksTag,
                Weapons = new List<Weapon> { paduksMarkza }
            };

            var baird = new Officer
            {
                Nickname = "Baird",
                FullName = "Damon Baird",
                SquadId = deltaSquad.Id,
                Rank = MilitaryRank.Corporal,
                CityOrBirthName = unknown.Name,
                AssignedCity = jacinto,
                Tag = bairdsTag,
                Reports = new List<Gear> { paduk },
                Weapons = new List<Weapon> { bairdsLancer, bairdsGnasher }
            };

            var marcus = new Officer
            {
                Nickname = "Marcus",
                FullName = "Marcus Fenix",
                SquadId = deltaSquad.Id,
                Rank = MilitaryRank.Sergeant,
                CityOrBirthName = jacinto.Name,
                Tag = marcusTag,
                Reports = new List<Gear> { dom, cole, baird },
                Weapons = new List<Weapon> { marcusLancer, marcusGnasher }
            };

            context.Gears.Add(marcus);
            context.Gears.Add(dom);
            context.Gears.Add(cole);
            context.Gears.Add(baird);
            context.Gears.Add(paduk);

            context.SaveChanges();
        }