public void ShouldUpdatePayload() { using (var testHarness = new RestTestHarness { { MockRequest.Get("/relationship/456/properties"), MockResponse.Json(HttpStatusCode.OK, "{ 'Foo': 'foo', 'Bar': 'bar', 'Baz': 'baz' }") }, { MockRequest.PutObjectAsJson( "/relationship/456/properties", new TestPayload { Foo = "fooUpdated", Bar = "bar", Baz = "bazUpdated" }), MockResponse.Http((int)HttpStatusCode.NoContent) } }) { var graphClient = testHarness.CreateAndConnectGraphClient(); graphClient.Update( new RelationshipReference <TestPayload>(456), payloadFromDb => { payloadFromDb.Foo = "fooUpdated"; payloadFromDb.Baz = "bazUpdated"; } ); } }
public void ShouldRunDelegateForChanges() { var nodeToUpdate = new TestNode { Id = 1, Foo = "foo", Bar = "bar", Baz = "baz" }; using (var testHarness = new RestTestHarness { { MockRequest.Get("/node/456"), MockResponse.Json(HttpStatusCode.OK, @"{ 'self': 'http://foo/db/data/node/456', 'data': { 'Foo': 'foo', 'Bar': 'bar', 'Baz': 'baz' }, 'create_relationship': 'http://foo/db/data/node/456/relationships', 'all_relationships': 'http://foo/db/data/node/456/relationships/all', 'all_typed relationships': 'http://foo/db/data/node/456/relationships/all/{-list|&|types}', 'incoming_relationships': 'http://foo/db/data/node/456/relationships/in', 'incoming_typed relationships': 'http://foo/db/data/node/456/relationships/in/{-list|&|types}', 'outgoing_relationships': 'http://foo/db/data/node/456/relationships/out', 'outgoing_typed relationships': 'http://foo/db/data/node/456/relationships/out/{-list|&|types}', 'properties': 'http://foo/db/data/node/456/properties', 'property': 'http://foo/db/data/node/456/property/{key}', 'traverse': 'http://foo/db/data/node/456/traverse/{returnType}' }") }, { MockRequest.PutObjectAsJson("/node/456/properties", nodeToUpdate), MockResponse.Http((int)HttpStatusCode.NoContent) } }) { var graphClient = testHarness.CreateAndConnectGraphClient(); //Act var hasChanged = false; var pocoReference = new NodeReference <TestNode>(456); graphClient.Update( pocoReference, nodeFromDb => { nodeFromDb.Foo = "fooUpdated"; nodeFromDb.Baz = "bazUpdated"; nodeToUpdate = nodeFromDb; }, null, diff => { hasChanged = diff.Any(); } ); Assert.IsTrue(hasChanged); } }
public void ShouldReturnNodeAfterUpdating() { var nodeToUpdate = new TestNode { Foo = "foo", Bar = "bar", Baz = "baz" }; using (var testHarness = new RestTestHarness { { MockRequest.Get("/node/456"), MockResponse.Json(HttpStatusCode.OK, @"{ 'self': 'http://foo/db/data/node/456', 'data': { 'Foo': 'foo', 'Bar': 'bar', 'Baz': 'baz' }, 'create_relationship': 'http://foo/db/data/node/456/relationships', 'all_relationships': 'http://foo/db/data/node/456/relationships/all', 'all_typed relationships': 'http://foo/db/data/node/456/relationships/all/{-list|&|types}', 'incoming_relationships': 'http://foo/db/data/node/456/relationships/in', 'incoming_typed relationships': 'http://foo/db/data/node/456/relationships/in/{-list|&|types}', 'outgoing_relationships': 'http://foo/db/data/node/456/relationships/out', 'outgoing_typed relationships': 'http://foo/db/data/node/456/relationships/out/{-list|&|types}', 'properties': 'http://foo/db/data/node/456/properties', 'property': 'http://foo/db/data/node/456/property/{key}', 'traverse': 'http://foo/db/data/node/456/traverse/{returnType}' }") }, { MockRequest.PutObjectAsJson("/node/456/properties", nodeToUpdate), MockResponse.Http((int)HttpStatusCode.NoContent) } }) { var graphClient = testHarness.CreateAndConnectGraphClient(); //Act var pocoReference = new NodeReference <TestNode>(456); var updatedNode = graphClient.Update( pocoReference, nodeFromDb => { nodeFromDb.Foo = "fooUpdated"; nodeFromDb.Baz = "bazUpdated"; }); Assert.AreEqual(pocoReference, updatedNode.Reference); Assert.AreEqual("fooUpdated", updatedNode.Data.Foo); Assert.AreEqual("bazUpdated", updatedNode.Data.Baz); Assert.AreEqual("bar", updatedNode.Data.Bar); } }
public void ShouldReplaceNodeWithIndexEntries() { var newData = new TestNode { Foo = "foo", Bar = "bar", Baz = "baz" }; using (var testHarness = new RestTestHarness { { MockRequest.PutObjectAsJson("/node/456/properties", newData), MockResponse.Http((int)HttpStatusCode.NoContent) }, { MockRequest.Delete("/index/node/foo/456"), MockResponse.Http((int)HttpStatusCode.NoContent) }, { MockRequest.PostObjectAsJson("/index/node/foo", new { key = "foo", value = "bar", uri = "http://foo/db/data/node/456" }), MockResponse.Json(HttpStatusCode.Created, "Location: http://foo/db/data/index/node/foo/bar/456") } }) { var graphClient = testHarness.CreateAndConnectGraphClient(); // Act var pocoReference = new NodeReference <TestNode>(456); graphClient.Update( pocoReference, newData, new [] { new IndexEntry { Name = "foo", KeyValues = new Dictionary <string, object> { { "foo", "bar" } }, } }); } }
public void ShouldReplaceNode() { var newData = new TestNode { Foo = "foo", Bar = "bar", Baz = "baz" }; using (var testHarness = new RestTestHarness { { MockRequest.PutObjectAsJson("/node/456/properties", newData), MockResponse.Http((int)HttpStatusCode.NoContent) } }) { var graphClient = testHarness.CreateAndConnectGraphClient(); //Act var pocoReference = new NodeReference <TestNode>(456); graphClient.Update(pocoReference, newData); } }
public void ShouldUpdateNodeWithIndexEntries() { var nodeToUpdate = new TestNode { Foo = "foo", Bar = "bar", Baz = "baz" }; using (var testHarness = new RestTestHarness { { MockRequest.Get("/node/456"), MockResponse.Json(HttpStatusCode.OK, @"{ 'self': 'http://foo/db/data/node/456', 'data': { 'Foo': 'foo', 'Bar': 'bar', 'Baz': 'baz' }, 'create_relationship': 'http://foo/db/data/node/456/relationships', 'all_relationships': 'http://foo/db/data/node/456/relationships/all', 'all_typed relationships': 'http://foo/db/data/node/456/relationships/all/{-list|&|types}', 'incoming_relationships': 'http://foo/db/data/node/456/relationships/in', 'incoming_typed relationships': 'http://foo/db/data/node/456/relationships/in/{-list|&|types}', 'outgoing_relationships': 'http://foo/db/data/node/456/relationships/out', 'outgoing_typed relationships': 'http://foo/db/data/node/456/relationships/out/{-list|&|types}', 'properties': 'http://foo/db/data/node/456/properties', 'property': 'http://foo/db/data/node/456/property/{key}', 'traverse': 'http://foo/db/data/node/456/traverse/{returnType}' }") }, { MockRequest.PutObjectAsJson("/node/456/properties", nodeToUpdate), MockResponse.Http((int)HttpStatusCode.NoContent) }, { MockRequest.Delete("/index/node/foo/456"), MockResponse.Http((int)HttpStatusCode.NoContent) }, { MockRequest.PostObjectAsJson("/index/node/foo", new { key = "foo", value = "bar", uri = "http://foo/db/data/node/456" }), MockResponse.Json(HttpStatusCode.Created, "Location: http://foo/db/data/index/node/foo/bar/456") } }) { var graphClient = testHarness.CreateAndConnectGraphClient(); // Act var pocoReference = new NodeReference <TestNode>(456); graphClient.Update( pocoReference, nodeFromDb => { nodeFromDb.Foo = "fooUpdated"; nodeFromDb.Baz = "bazUpdated"; nodeToUpdate = nodeFromDb; }, nodeFromDb => new List <IndexEntry> { new IndexEntry { Name = "foo", KeyValues = new Dictionary <string, object> { { "foo", "bar" } }, } }); Assert.AreEqual("fooUpdated", nodeToUpdate.Foo); Assert.AreEqual("bazUpdated", nodeToUpdate.Baz); Assert.AreEqual("bar", nodeToUpdate.Bar); } }