public async Task AddAsync_Object_InsertsItem()
        {
            // Arrange
            var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict);
            var mockTable  = new Mock <IMobileServiceTable>(MockBehavior.Strict);
            var item       = new { id = "abc123", text = "123abc" };

            mockTable
            .Setup(m => m.InsertAsync(It.Is <JObject>(j => j["id"].ToString() == "abc123" && j["text"].ToString() == "123abc")))
            .Returns(Task.FromResult(JToken.Parse("{}")));

            mockClient
            .Setup(m => m.GetTable("Item"))
            .Returns(mockTable.Object);

            var attribute = new MobileTableAttribute
            {
                TableName = "Item"
            };

            var context = new MobileTableContext
            {
                ResolvedAttribute = attribute,
                Client            = mockClient.Object,
            };

            IAsyncCollector <object> collector = new MobileTableAsyncCollector <object>(context);

            // Act
            await collector.AddAsync(item);

            // Assert
            mockClient.VerifyAll();
            mockTable.VerifyAll();
        }
        public async Task AddAsync_JObject_InsertsItem()
        {
            // Arrange
            var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict);
            var mockTable  = new Mock <IMobileServiceTable>(MockBehavior.Strict);
            var item       = new JObject();

            mockTable
            .Setup(m => m.InsertAsync(item))
            .Returns(Task.FromResult(item as JToken));

            mockClient
            .Setup(m => m.GetTable("TodoItem"))
            .Returns(mockTable.Object);

            var attribute = new MobileTableAttribute
            {
                TableName = "TodoItem"
            };

            var context = new MobileTableContext
            {
                Client            = mockClient.Object,
                ResolvedAttribute = attribute
            };

            IAsyncCollector <JObject> collector = new MobileTableAsyncCollector <JObject>(context);

            // Act
            await collector.AddAsync(item);

            // Assert
            mockClient.VerifyAll();
            mockTable.VerifyAll();
        }
        public async Task AddAsync_Poco_InsertsItem()
        {
            // Arrange
            var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict);
            var mockTable  = new Mock <IMobileServiceTable <TodoItem> >(MockBehavior.Strict);
            var item       = new TodoItem();

            mockTable
            .Setup(m => m.InsertAsync(item))
            .Returns(Task.FromResult(item));

            mockClient
            .Setup(m => m.GetTable <TodoItem>())
            .Returns(mockTable.Object);

            var context = new MobileTableContext
            {
                Client = mockClient.Object,
            };

            IAsyncCollector <TodoItem> collector = new MobileTableAsyncCollector <TodoItem>(context);

            // Act
            await collector.AddAsync(item);

            // Assert
            mockClient.VerifyAll();
            mockTable.VerifyAll();
        }