public async Task GetMonsterFromDungeonById_HttpThrowsException_ThrowsException()
        {
            httpMessageHandlerMocked.Protected()
            .Setup <Task <HttpResponseMessage> >("SendAsync", ItExpr.IsAny <HttpRequestMessage>(), ItExpr.IsAny <CancellationToken>())
            .ThrowsAsync(new Exception("Mock exception"));

            var client = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://test")
            };
            var service = new DungeonsApiService(client);

            await Assert.ThrowsAsync <Exception>(() => service.GetMonsterFromDungeonById("dungeon id", "monster id"));
        }
        public async void Get_ReturnsListOfDungeons()
        {
            List <Dungeon> dungeons = new List <Dungeon> {
                new Dungeon {
                    Number = -2, Name = "First dungeon"
                },
                new Dungeon {
                    Number = -1, Name = "Darkest dungeon"
                },
                new Dungeon {
                    Number = 0, Name = "THE DUNGEON"
                },
            };


            var dungeonJson  = JsonSerializer.Serialize(dungeons);
            var httpContent  = new StringContent(dungeonJson);
            var httpResponse = new HttpResponseMessage {
                Content = httpContent
            };

            mockHttpMessageHandler(httpResponse);

            var httpClient = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://localhost/sfservice/")
            };
            var service = new DungeonsApiService(httpClient);

            var result = await service.Get();

            bool dungeonListsEqual = false;

            if (dungeons.Count == result.Count)
            {
                dungeonListsEqual = true;
                for (int i = 0; i < result.Count; i++)
                {
                    if (!result[i].Equals(dungeons[i]))
                    {
                        dungeonListsEqual = false;
                        break;
                    }
                }
            }

            Assert.True(dungeonListsEqual);
        }
        public async void Get_ReceivesApiError_ThrowsUnsuccessfulApiStatusCodeException()
        {
            var httpResponse = new HttpResponseMessage()
            {
                StatusCode = System.Net.HttpStatusCode.BadRequest
            };

            mockHttpMessageHandler(httpResponse);

            var httpClient = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://test")
            };
            var service = new DungeonsApiService(httpClient);

            await Assert.ThrowsAsync <UnsuccessfullApiStatusCodeException>(() => service.Get());
        }
        public async Task GetMonsterFromDungeonById_ThrowsUnsuccessfulApiStatusCodeException()
        {
            var httpResponse = new HttpResponseMessage()
            {
                StatusCode = System.Net.HttpStatusCode.BadRequest
            };

            mockHttpMessageHandler(httpResponse);

            var httpClient = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://test")
            };
            var service = new DungeonsApiService(httpClient);

            await Assert.ThrowsAsync <UnsuccessfullApiStatusCodeException>(() => service.GetMonsterFromDungeonById("dungeon id", "monster id"));
        }
        public async Task GetDungeonWithMonstersById_GetsDungeonId_ReturnsDungeonWithMonsters()
        {
            var resultList = new List <DungeonMonster> {
                new DungeonMonster {
                    Class = "some class", Constitution = "123", Dexterity = "444", DungeonNumber = 1, Experience = "12"
                },
                new DungeonMonster {
                    Class = "some class", Constitution = "123", Dexterity = "444", DungeonNumber = 1, Experience = "12", Level = 91, Luck = "1233323"
                },
            };
            var resultListJson = JsonSerializer.Serialize(resultList);
            var httpContent    = new StringContent(resultListJson);
            var httpResponse   = new HttpResponseMessage()
            {
                Content = httpContent
            };

            mockHttpMessageHandler(httpResponse);
            var client = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://test")
            };

            var service = new DungeonsApiService(client);

            var result = await service.GetDungeonWithMonstersById("id");

            bool resultListsEqual = false;

            if (result.Count == resultList.Count)
            {
                resultListsEqual = true;
                for (int i = 0; i < resultList.Count; i++)
                {
                    if (!result[i].Equals(resultList[i]))
                    {
                        resultListsEqual = false;
                        break;
                    }
                }
            }

            Assert.True(resultListsEqual);
        }
        public async Task GetMonsterFromDungeonById_ReturnsWrongHttpContent_ThrowsJsonException()
        {
            string content = "different content than list<dungeonmonster>";

            var httpContent  = new StringContent(content);
            var httpResponse = new HttpResponseMessage
            {
                Content = httpContent
            };

            mockHttpMessageHandler(httpResponse);
            var client = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://test")
            };
            var service = new DungeonsApiService(client);

            await Assert.ThrowsAsync <JsonException>(() => service.GetMonsterFromDungeonById("dungeon id", "monster id"));
        }
        public async Task GetMonsterFromDungeonById_GetIds_ReturnsDungeonMonster()
        {
            var resultDungeonMonster = new DungeonMonster {
                Class = "some class", Constitution = "123", Dexterity = "444", DungeonNumber = 1, Experience = "12"
            };
            var resultListJson = JsonSerializer.Serialize(resultDungeonMonster);
            var httpContent    = new StringContent(resultListJson);
            var httpResponse   = new HttpResponseMessage()
            {
                Content = httpContent
            };

            mockHttpMessageHandler(httpResponse);
            var client = new HttpClient(httpMessageHandlerMocked.Object)
            {
                BaseAddress = new Uri("http://test")
            };

            var service = new DungeonsApiService(client);

            var result = await service.GetMonsterFromDungeonById("dungeon id", "monster id");

            Assert.True(result.Equals(resultDungeonMonster));
        }
 protected override async Task OnParametersSetAsync()
 {
     DungeonMonster = await DungeonsApiService.GetMonsterFromDungeonById(DungeonNumber, DungeonMonsterNumber);
 }
示例#9
0
        protected override async Task OnParametersSetAsync()
        {
            var dungeonMonsters = await DungeonsApiService.GetDungeonWithMonstersById(DungeonNumber);

            DungeonMonsters = dungeonMonsters;
        }