Exemple #1
0
        public void ResolveId_CreatesExpectedString(string token, string expected)
        {
            // Arrange
            ParameterInfo parameter = EasyTableTestHelper.GetValidInputItemParameters().First();

            var easyTableContext = new EasyTableContext()
            {
                ResolvedId = token
            };

            var bindingContract = new Dictionary <string, Type>();

            bindingContract.Add("MyItemId", typeof(string));

            var bindingProviderContext = new BindingProviderContext(parameter, bindingContract, CancellationToken.None);

            var binding = new EasyTableItemBinding(parameter, easyTableContext, bindingProviderContext);

            var bindingData = new Dictionary <string, object>();

            bindingData.Add("MyItemId", "abc123");

            // Act
            var resolved = binding.ResolveId(bindingData);

            // Assert
            Assert.Equal(expected, resolved);
        }
        public void GetValue_ReturnsCorrectType()
        {
            var parameter = EasyTableTestHelper.GetValidInputQueryParameters().Single();
            var context = new EasyTableContext()
            {
                Client = new MobileServiceClient("http://someuri")
            };
            var provider = new EasyTableQueryValueProvider<TodoItem>(parameter, context);

            var value = provider.GetValue();

            Assert.True(typeof(IMobileServiceTableQuery<TodoItem>).IsAssignableFrom(value.GetType()));
        }
        public void GetValue_PocoWithTableName_ReturnsCorrectTable()
        {
            // Arrange
            var parameter = EasyTableTestHelper.GetValidInputTableParameters()
                            .Where(p => p.ParameterType == typeof(IMobileServiceTable <TodoItem>)).Single();
            var provider = new EasyTableTableValueProvider <TodoItem>(parameter, GetContext("SomeOtherTable"));

            // Act
            IMobileServiceTable <TodoItem> value = provider.GetValue() as IMobileServiceTable <TodoItem>;

            // Assert
            Assert.NotNull(value);
            Assert.Equal("SomeOtherTable", value.TableName);
        }
Exemple #4
0
        public async Task BindAsync_Returns_CorrectValueProvider()
        {
            // Arrange
            var parameter        = EasyTableTestHelper.GetValidInputQueryParameters().Single();
            var expectedType     = typeof(EasyTableQueryValueProvider <TodoItem>);
            var easyTableContext = new EasyTableContext();
            var binding          = new EasyTableQueryBinding(parameter, easyTableContext);

            // Act
            var valueProvider = await binding.BindAsync(null, null);

            // Assert
            Assert.Equal(expectedType, valueProvider.GetType());
        }
        public void GetValue_WithTableName_ReturnsCorrectType()
        {
            var parameter = EasyTableTestHelper.GetValidInputQueryParameters().Single();
            var context = new EasyTableContext()
            {
                Client = new MobileServiceClient("http://someuri"),
                ResolvedTableName = "SomeOtherTable"
            };
            var provider = new EasyTableQueryValueProvider<TodoItem>(parameter, context);

            var value = provider.GetValue() as IMobileServiceTableQuery<TodoItem>;

            Assert.NotNull(value);
            Assert.Equal("SomeOtherTable", value.Table.TableName);
        }
        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();
        }