public async void PetAbility_Is_Parsed_Correctly(int id, string name, string petAbilityType, int petAbilityId, int rounds, int cooldown)
        {
            // arrange
            var testBootstrapper      = new TestBootstrapper();
            var mockBlizzardApiHelper = new MockBlizzardApiHelper();

            mockBlizzardApiHelper.SetupPetAbilityMock(testBootstrapper);
            mockBlizzardApiHelper.SetupBlizzardIMSMock(testBootstrapper);

            var mediator = testBootstrapper.ServiceProvider.GetRequiredService <IMediator>();

            // act
            var result = await mediator.Send(new GetPetAbilityRequest { Id = id });

            // assert
            using (new AssertionScope())
            {
                result.Should().NotBeNull();
                result.Name.Should().Be(name);
                result.PetAbilityType.Should().Be(petAbilityType);
                result.PetAbilityTypeId.Should().Be(petAbilityId);
                result.Rounds.Should().Be(rounds);
                result.Cooldown.Should().Be(cooldown);
            }
        }
        public async void PetIndex_Is_Parsed_Correctly()
        {
            // arrange
            var testBootstrapper      = new TestBootstrapper();
            var mockBlizzardApiHelper = new MockBlizzardApiHelper();

            mockBlizzardApiHelper.SetupPetIndexMock(testBootstrapper);
            mockBlizzardApiHelper.SetupBlizzardIMSMock(testBootstrapper);

            var mediator = testBootstrapper.ServiceProvider.GetRequiredService <IMediator>();

            // act
            var result = await mediator.Send(new GetPetIndexRequest());

            // assert
            using (new AssertionScope())
            {
                result.Should().NotBeNull();
                result.Should().NotBeEmpty();
                result.Count().Should().Be(3);
            }
        }
        public async void When_PetDataUpdate_Is_Requested()
        {
            // arrange
            var testBootstrapper      = new TestBootstrapper();
            var mockBlizzardApiHelper = new MockBlizzardApiHelper();

            mockBlizzardApiHelper.SetupPetMock(testBootstrapper);
            mockBlizzardApiHelper.SetupPetIndexMock(testBootstrapper);
            mockBlizzardApiHelper.SetupPetAbilityMock(testBootstrapper);
            mockBlizzardApiHelper.SetupPetAbilitiesIndexMock(testBootstrapper);

            mockBlizzardApiHelper.SetupBlizzardIMSMock(testBootstrapper);

            var mediator = testBootstrapper.ServiceProvider.GetRequiredService <IMediator>();
            var database = testBootstrapper.ServiceProvider.GetRequiredService <IDataContext>();

            // act
            var result = await mediator.Send(new PetDataUpdateRequest());

            var storedEntries = database.BattlePets;

            var mechanicalSquirrel = storedEntries.Where(p => p.Id == 39).SingleOrDefault();

            // assert
            using (new AssertionScope())
            {
                result.Should().NotBeNull();
                result.Should().StartWith("3 pets and 4 pet abilities downloaded");

                storedEntries.Should().NotBeNull();
                storedEntries.Count().Should().Be(3);

                mechanicalSquirrel.Should().NotBeNull();
                mechanicalSquirrel.Name.Should().Be("Mechanical Squirrel");
                mechanicalSquirrel.Family.Should().Be(BattlePetFamily.Mechanical);
                mechanicalSquirrel.Description.Should().NotBeNull();
                mechanicalSquirrel.SourceName.Should().Be("Profession");
            }
        }
        public async void Pet_Is_Parsed_Correctly(int id, string name, string sourceName, string sourceType)
        {
            // arrange
            var testBootstrapper      = new TestBootstrapper();
            var mockBlizzardApiHelper = new MockBlizzardApiHelper();

            mockBlizzardApiHelper.SetupPetMock(testBootstrapper);
            mockBlizzardApiHelper.SetupBlizzardIMSMock(testBootstrapper);

            var mediator = testBootstrapper.ServiceProvider.GetRequiredService <IMediator>();

            // act
            var result = await mediator.Send(new GetPetRequest { Id = id });

            // assert
            using (new AssertionScope())
            {
                result.Should().NotBeNull();
                result.Name.Should().Be(name);
                result.Source.Name.Should().Be(sourceName);
                result.Source.Type.Should().Be(sourceType);
            }
        }