public void GetValue_Poco_QueriesCorrectTable()
        {
            // Arrange
            var handler = new TestHandler("{}");
            var context = new EasyTableContext
            {
                Client = new MobileServiceClient("https://someuri", handler)
            };
            var parameter = EasyTableTestHelper.GetInputParameter <TodoItem>();
            var binder    = new EasyTableItemValueBinder <TodoItem>(parameter, context, "abc123");

            // Act
            var value = binder.GetValue();

            // Assert
            Assert.NotNull(value);
            Assert.Equal("https://someuri/tables/TodoItem/abc123", handler.IssuedRequest.RequestUri.ToString());
        }
        public void GetValue_JObject_Throws_WhenErrorResponse()
        {
            // Arrange
            var parameter = EasyTableTestHelper.GetInputParameter <JObject>();
            Mock <IMobileServiceTable>  mockTable;
            Mock <IMobileServiceClient> mockClient;
            IValueBinder binder = CreateJObjectBinder(parameter, out mockClient, out mockTable);

            mockTable
            .Setup(m => m.LookupAsync("abc123"))
            .Throws(new MobileServiceInvalidOperationException(string.Empty, null, new HttpResponseMessage(HttpStatusCode.ServiceUnavailable)));

            // Act
            var ex = Assert.Throws <MobileServiceInvalidOperationException>(() => binder.GetValue());

            // Assert
            Assert.Equal(HttpStatusCode.ServiceUnavailable, ex.Response.StatusCode);
        }
        public void GetValue_Poco_DoesNotThrow_WhenResponseIsNotFound()
        {
            // Arrange
            var parameter = EasyTableTestHelper.GetInputParameter <TodoItem>();
            Mock <IMobileServiceTable <TodoItem> > mockTable;
            Mock <IMobileServiceClient>            mockClient;
            IValueBinder binder = CreatePocoBinder(parameter, out mockClient, out mockTable);

            mockTable
            .Setup(m => m.LookupAsync("abc123"))
            .ThrowsAsync(new MobileServiceInvalidOperationException(string.Empty, null, new HttpResponseMessage(HttpStatusCode.NotFound)));

            // Act
            var value = binder.GetValue();

            // Assert
            Assert.Null(value);
            mockTable.VerifyAll();
            mockClient.VerifyAll();
        }
        public void GetValue_Poco_QueriesItem()
        {
            // Arrange
            var parameter = EasyTableTestHelper.GetInputParameter <TodoItem>();
            Mock <IMobileServiceTable <TodoItem> > mockTable;
            Mock <IMobileServiceClient>            mockClient;
            IValueBinder binder   = CreatePocoBinder(parameter, out mockClient, out mockTable);
            var          response = new TodoItem();

            mockTable
            .Setup(m => m.LookupAsync("abc123"))
            .Returns(Task.FromResult(response));

            // Act
            var value = binder.GetValue();

            // Assert
            Assert.Same(response, value);
            mockTable.VerifyAll();
            mockClient.VerifyAll();
        }