public async Task SetAsync_Poco_SkipsUpdate_IfSame() { // Arrange var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict); TodoItem original = new TodoItem { Id = "abc123", Text = "hello" }; TodoItem updated = new TodoItem { Id = "abc123", Text = "hello" }; var context = new EasyTableContext { Client = mockClient.Object, }; JObject clonedOrig = EasyTableItemValueBinder <object> .CloneItem(original); // Act await EasyTableItemValueBinder <TodoItem> .SetValueInternalAsync(clonedOrig, updated, context); // Assert // nothing on the client should be called mockClient.VerifyAll(); }
public void GetId_CaseInsensitive(string idKey) { // Arrange var token = JObject.Parse(string.Format("{{{0}:'abc123'}}", idKey)); // Act var id = EasyTableItemValueBinder <object> .GetId(token); // Assert Assert.Equal("abc123", id); }
public void CloneItem_JObject_CorrectlySerializes() { // Arrange var jObject = new JObject(); jObject["id"] = "abc123"; jObject["text"] = "hello"; jObject["complete"] = false; jObject["completedDate"] = DateTimeOffset.Now; // Act JObject cloned = EasyTableItemValueBinder <object> .CloneItem(jObject); // Assert Assert.NotSame(jObject, cloned); Assert.True(JToken.DeepEquals(jObject, cloned)); }
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 async Task SetValue_Poco_UpdatesCorrectTable() { // Arrange var handler = new TestHandler("{}"); var context = new EasyTableContext { Client = new MobileServiceClient("https://someuri", handler) }; var original = JObject.Parse("{'Id':'abc123'}"); var updated = new TodoItem { Id = "abc123", Text = "updated" }; // Act await EasyTableItemValueBinder <TodoItem> .SetValueInternalAsync(original, updated, context); // Assert Assert.Equal("https://someuri/tables/TodoItem/abc123", handler.IssuedRequest.RequestUri.ToString()); }
public async Task SetAsync_Poco_Updates_IfPropertyChanges() { // Arrange var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict); var mockTable = new Mock <IMobileServiceTable <TodoItem> >(MockBehavior.Strict); TodoItem original = new TodoItem { Id = "abc123", Text = "hello" }; TodoItem updated = new TodoItem { Id = "abc123", Text = "goodbye" }; mockTable .Setup(m => m.UpdateAsync(updated)) .Returns(Task.FromResult <TodoItem>(null)); mockClient .Setup(m => m.GetTable <TodoItem>()) .Returns(mockTable.Object); var context = new EasyTableContext { Client = mockClient.Object, }; JObject clonedOrig = EasyTableItemValueBinder <object> .CloneItem(original); // Act await EasyTableItemValueBinder <TodoItem> .SetValueInternalAsync(clonedOrig, updated, context); // Assert mockClient.VerifyAll(); mockTable.VerifyAll(); }
public void CloneItem_Poco_CorrectlySerializes() { // Arrange TodoItem todoItem = new TodoItem { Id = "abc123", Text = "hello", Complete = false, CompletedDate = DateTimeOffset.Now }; // Act JObject cloned = EasyTableItemValueBinder <object> .CloneItem(todoItem); TodoItem deserialized = cloned.ToObject <TodoItem>(); // Assert Assert.Equal(todoItem.Id, deserialized.Id); Assert.Equal(todoItem.Text, deserialized.Text); Assert.Equal(todoItem.Complete, deserialized.Complete); Assert.Equal(todoItem.CompletedDate, deserialized.CompletedDate); }
public async Task SetAsync_JObject_SkipsUpdate_IfSame() { // Arrange var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict); JObject original = new JObject(); original["id"] = "abc123"; original["data"] = "hello"; JObject updated = original.DeepClone() as JObject; var context = new EasyTableContext { Client = mockClient.Object, ResolvedTableName = "TodoItem" }; // Act await EasyTableItemValueBinder <JObject> .SetValueInternalAsync(original, updated, context); // Assert mockClient.VerifyAll(); }
public async Task SetAsync_JObject_Updates_IfPropertyChanges() { // Arrange var mockClient = new Mock <IMobileServiceClient>(MockBehavior.Strict); var mockTable = new Mock <IMobileServiceTable>(MockBehavior.Strict); JObject original = new JObject(); original["id"] = "abc123"; original["data"] = "hello"; JObject updated = original.DeepClone() as JObject; original["data"] = "goodbye"; mockTable .Setup(m => m.UpdateAsync(updated)) .Returns(Task.FromResult <JToken>(null)); mockClient .Setup(m => m.GetTable("TodoItem")) .Returns(mockTable.Object); var context = new EasyTableContext { Client = mockClient.Object, ResolvedTableName = "TodoItem" }; // Act await EasyTableItemValueBinder <JObject> .SetValueInternalAsync(original, updated, context); // Assert mockClient.VerifyAll(); mockTable.VerifyAll(); }