public void GetSeats_IsSucceeded_ReturnSeatList()
        {
            var Host = "test";
            var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK);

            httpResponseMessage.Content = new StringContent(@"[{""name"":""杉田 圭輔"",""status"":""Exists""},{""name"":""Keisuke Sugita"",""status"":""Failure""}]");
            var myHttpClientMock = new Mock <IMyHttpClient>();

            myHttpClientMock.Setup(x => x.GetAsync($@"http://{Host}/api/seats")).Returns(httpResponseMessage);

            var seatMonitoringApiClient = new SeatMonitoringApiClient(Host, myHttpClientMock.Object);
            var seatsResult             = seatMonitoringApiClient.GetSeats();

            Assert.AreEqual("杉田 圭輔", seatsResult[0].name);
            Assert.AreEqual(Seat.SeatStatus.Exists, seatsResult[0].status);
            Assert.AreEqual("Keisuke Sugita", seatsResult[1].name);
            Assert.AreEqual(Seat.SeatStatus.Failure, seatsResult[1].status);
        }
        public void GetSeats_IsFailed_ThrowSeatsApiException()
        {
            var Host = "test";
            var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.NotFound);
            var myHttpClientMock    = new Mock <IMyHttpClient>();

            myHttpClientMock.Setup(x => x.GetAsync($@"http://{Host}/api/seats")).Returns(httpResponseMessage);

            var seatMonitoringApiClient = new SeatMonitoringApiClient(Host, myHttpClientMock.Object);

            try
            {
                var seatsResult = seatMonitoringApiClient.GetSeats();
            }
            catch (SeatsApiException e)
            {
                Assert.AreEqual($@"ステータスコード""{(int)httpResponseMessage.StatusCode}""で失敗しました。", e.Message);
                return;
            }

            Assert.Fail();
        }
        public void GetSeats_CatchAggregateException_ThrowSeatsApiException()
        {
            var aggregateException = new AggregateException();
            var Host             = "test";
            var myHttpClientMock = new Mock <IMyHttpClient>();

            myHttpClientMock.Setup(x => x.GetAsync($@"http://{Host}/api/seats")).Throws(aggregateException);

            var seatMonitoringApiClient = new SeatMonitoringApiClient(Host, myHttpClientMock.Object);

            try
            {
                var seatsResult = seatMonitoringApiClient.GetSeats();
            }
            catch (SeatsApiException e)
            {
                Assert.AreEqual("サーバへの接続に失敗しました。", e.Message);
                Assert.AreEqual(aggregateException, e.InnerException);
                return;
            }

            Assert.Fail();
        }