PageRenderTime 59ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Arango/Arango.Tests/ArangoEdgeTests/ArangoEdgeTests.cs

https://github.com/jjchiw/ArangoDB-NET
C# | 757 lines | 554 code | 151 blank | 52 comment | 4 complexity | fe74fa6b398a00ad2f8a23cbd371c159 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using NUnit.Framework;
  5. using Arango.Client;
  6. namespace Arango.Tests.ArangoEdgeTests
  7. {
  8. [TestFixture()]
  9. public class ArangoEdgeTests : IDisposable
  10. {
  11. public ArangoEdgeTests()
  12. {
  13. Database.CreateTestDatabase(Database.TestDatabaseGeneral);
  14. }
  15. [Test()]
  16. public void Should_create_and_delete_edge()
  17. {
  18. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  19. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  20. var db = Database.GetTestDatabase();
  21. // create test documents
  22. var doc1 = new Document()
  23. .String("foo", "foo string value 1")
  24. .Int("bar", 12345);
  25. var doc2 = new Document()
  26. .String("foo", "foo string value 2")
  27. .Int("bar", 54321);
  28. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  29. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  30. // create test edge
  31. var edge = new Document()
  32. .String("edgeFoo", "foo string value")
  33. .Int("edgeBar", 12345);
  34. edge.String("_from", doc1.String("_id"));
  35. edge.String("_to", doc2.String("_id"));
  36. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  37. // check if it contains data after creation
  38. Assert.AreEqual(false, edge.IsNull("_id"));
  39. Assert.AreEqual(false, edge.IsNull("_key"));
  40. Assert.AreEqual(false, edge.IsNull("_rev"));
  41. Assert.AreEqual(true, edge.Has("edgeFoo"));
  42. Assert.AreEqual(true, edge.Has("edgeBar"));
  43. // delete that document
  44. var isDeleted = db.Edge.Delete(edge.String("_id"));
  45. Assert.AreEqual(true, isDeleted);
  46. }
  47. [Test()]
  48. public void Should_create_and_get_edge()
  49. {
  50. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  51. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  52. var db = Database.GetTestDatabase();
  53. // create test documents
  54. var doc1 = new Document()
  55. .String("foo", "foo string value 1")
  56. .Int("bar", 12345);
  57. var doc2 = new Document()
  58. .String("foo", "foo string value 2")
  59. .Int("bar", 54321);
  60. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  61. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  62. // create test edge
  63. var edge = new Document()
  64. .String("edgeFoo", "foo string value")
  65. .Int("edgeBar", 12345);
  66. edge.String("_from", doc1.String("_id"));
  67. edge.String("_to", doc2.String("_id"));
  68. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  69. // get the very same edge from database
  70. var returnedEdge = db.Edge.Get(edge.String("_id"));
  71. // check if created and returned edge data are equal
  72. Assert.AreEqual(false, edge.IsNull("_id"));
  73. Assert.AreEqual(false, edge.IsNull("_key"));
  74. Assert.AreEqual(false, edge.IsNull("_rev"));
  75. Assert.AreEqual(false, edge.IsNull("_from"));
  76. Assert.AreEqual(false, edge.IsNull("_to"));
  77. Assert.AreEqual(false, edge.IsNull("edgeFoo"));
  78. Assert.AreEqual(false, edge.IsNull("edgeBar"));
  79. Assert.AreEqual(false, returnedEdge.IsNull("_id"));
  80. Assert.AreEqual(false, returnedEdge.IsNull("_key"));
  81. Assert.AreEqual(false, returnedEdge.IsNull("_rev"));
  82. Assert.AreEqual(false, returnedEdge.IsNull("_from"));
  83. Assert.AreEqual(false, returnedEdge.IsNull("_to"));
  84. Assert.AreEqual(false, returnedEdge.IsNull("edgeFoo"));
  85. Assert.AreEqual(false, returnedEdge.IsNull("edgeBar"));
  86. Assert.AreEqual(edge.String("_id"), returnedEdge.String("_id"));
  87. Assert.AreEqual(edge.String("_key"), returnedEdge.String("_key"));
  88. Assert.AreEqual(edge.String("_rev"), returnedEdge.String("_rev"));
  89. Assert.AreEqual(edge.String("_from"), returnedEdge.String("_from"));
  90. Assert.AreEqual(edge.String("_to"), returnedEdge.String("_to"));
  91. Assert.AreEqual(edge.Has("edgeFoo"), returnedEdge.Has("edgeFoo"));
  92. Assert.AreEqual(edge.String("edgeFoo"), returnedEdge.String("edgeFoo"));
  93. Assert.AreEqual(edge.Has("edgeBar"), returnedEdge.Has("edgeBar"));
  94. Assert.AreEqual(edge.Int("edgeBar"), returnedEdge.Int("edgeBar"));
  95. }
  96. [Test()]
  97. public void Should_create_edge_without_fields_and_get_it_back()
  98. {
  99. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  100. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  101. var db = Database.GetTestDatabase();
  102. // create test documents
  103. var doc1 = new Document()
  104. .String("foo", "foo string value 1")
  105. .Int("bar", 12345);
  106. var doc2 = new Document()
  107. .String("foo", "foo string value 2")
  108. .Int("bar", 54321);
  109. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  110. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  111. // create test edge
  112. var edge = db.Edge.Create(Database.TestEdgeCollectionName, doc1.String("_id"), doc2.String("_id"));
  113. // get the very same edge from database
  114. var returnedEdge = db.Edge.Get(edge.String("_id"));
  115. // check if created and returned edge data are equal
  116. Assert.AreEqual(false, edge.IsNull("_id"));
  117. Assert.AreEqual(false, edge.IsNull("_key"));
  118. Assert.AreEqual(false, edge.IsNull("_rev"));
  119. Assert.AreEqual(false, edge.IsNull("_from"));
  120. Assert.AreEqual(false, edge.IsNull("_to"));
  121. Assert.AreEqual(false, returnedEdge.IsNull("_id"));
  122. Assert.AreEqual(false, returnedEdge.IsNull("_key"));
  123. Assert.AreEqual(false, returnedEdge.IsNull("_rev"));
  124. Assert.AreEqual(false, returnedEdge.IsNull("_from"));
  125. Assert.AreEqual(false, returnedEdge.IsNull("_to"));
  126. Assert.AreEqual(edge.String("_id"), returnedEdge.String("_id"));
  127. Assert.AreEqual(edge.String("_key"), returnedEdge.String("_key"));
  128. Assert.AreEqual(edge.String("_rev"), returnedEdge.String("_rev"));
  129. Assert.AreEqual(edge.String("_from"), returnedEdge.String("_from"));
  130. Assert.AreEqual(edge.String("_to"), returnedEdge.String("_to"));
  131. }
  132. [Test()]
  133. public void Should_create_and_replace_and_get_edge()
  134. {
  135. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  136. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  137. var db = Database.GetTestDatabase();
  138. // create test documents
  139. var doc1 = new Document()
  140. .String("foo", "foo string value 1")
  141. .Int("bar", 12345);
  142. var doc2 = new Document()
  143. .String("foo", "foo string value 2")
  144. .Int("bar", 54321);
  145. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  146. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  147. // create test edge
  148. var edge = new Document()
  149. .String("edgeFoo", "foo string value")
  150. .Int("edgeBar", 12345);
  151. edge.String("_from", doc1.String("_id"));
  152. edge.String("_to", doc2.String("_id"));
  153. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  154. // change data in that edge and replaced it in database
  155. var newEdge = new Document();
  156. newEdge.String("_id", edge.String("_id"));
  157. newEdge.String("baz.foo", "bar string value");
  158. var isReplaced = db.Edge.Replace(newEdge);
  159. Assert.AreEqual(true, isReplaced);
  160. // get the very same edge from database
  161. var returnedEdge = db.Edge.Get(edge.String("_id"));
  162. // check if the data of replaced and returned edge are equal
  163. Assert.AreEqual(false, newEdge.IsNull("_id"));
  164. Assert.AreEqual(false, newEdge.IsNull("_key"));
  165. Assert.AreEqual(false, newEdge.IsNull("_rev"));
  166. Assert.AreEqual(true, newEdge.IsNull("_from"));
  167. Assert.AreEqual(true, newEdge.IsNull("_to"));
  168. Assert.AreEqual(false, newEdge.IsNull("baz.foo"));
  169. Assert.AreEqual(false, returnedEdge.IsNull("_id"));
  170. Assert.AreEqual(false, returnedEdge.IsNull("_key"));
  171. Assert.AreEqual(false, returnedEdge.IsNull("_rev"));
  172. Assert.AreEqual(false, returnedEdge.IsNull("_from"));
  173. Assert.AreEqual(false, returnedEdge.IsNull("_to"));
  174. Assert.AreEqual(false, returnedEdge.IsNull("baz.foo"));
  175. Assert.AreEqual(newEdge.String("_id"), returnedEdge.String("_id"));
  176. Assert.AreEqual(newEdge.String("_key"), returnedEdge.String("_key"));
  177. Assert.AreEqual(newEdge.String("_rev"), returnedEdge.String("_rev"));
  178. Assert.AreEqual(newEdge.Has("baz.foo"), returnedEdge.Has("baz.foo"));
  179. Assert.AreEqual(newEdge.String("baz.foo"), returnedEdge.String("baz.foo"));
  180. // check if the original data doesn't exist anymore
  181. Assert.AreEqual(false, newEdge.Has("foo"));
  182. Assert.AreEqual(false, newEdge.Has("bar"));
  183. Assert.AreEqual(false, returnedEdge.Has("foo"));
  184. Assert.AreEqual(false, returnedEdge.Has("bar"));
  185. }
  186. [Test()]
  187. public void Should_create_and_update_and_get_edge()
  188. {
  189. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  190. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  191. var db = Database.GetTestDatabase();
  192. // create test documents
  193. var doc1 = new Document()
  194. .String("foo", "foo string value 1")
  195. .Int("bar", 12345);
  196. var doc2 = new Document()
  197. .String("foo", "foo string value 2")
  198. .Int("bar", 54321);
  199. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  200. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  201. // create test edge
  202. var edge = new Document()
  203. .String("edgeFoo", "foo string value")
  204. .Int("edgeBar", 12345);
  205. edge.String("_from", doc1.String("_id"));
  206. edge.String("_to", doc2.String("_id"));
  207. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  208. // update data in that document and update it in database
  209. edge.String("baz.foo", "bar string value");
  210. var isUpdated = db.Edge.Update(edge);
  211. Assert.AreEqual(true, isUpdated);
  212. // get the very same document from database
  213. var returnedEdge = db.Edge.Get(edge.String("_id"));
  214. // check if the data of updated and returned document are equal
  215. Assert.AreEqual(false, edge.IsNull("_id"));
  216. Assert.AreEqual(false, edge.IsNull("_key"));
  217. Assert.AreEqual(false, edge.IsNull("_rev"));
  218. Assert.AreEqual(false, edge.IsNull("_from"));
  219. Assert.AreEqual(false, edge.IsNull("_to"));
  220. Assert.AreEqual(false, edge.IsNull("edgeFoo"));
  221. Assert.AreEqual(false, edge.IsNull("edgeBar"));
  222. Assert.AreEqual(false, edge.IsNull("baz.foo"));
  223. Assert.AreEqual(false, returnedEdge.IsNull("_id"));
  224. Assert.AreEqual(false, returnedEdge.IsNull("_key"));
  225. Assert.AreEqual(false, returnedEdge.IsNull("_rev"));
  226. Assert.AreEqual(false, returnedEdge.IsNull("_from"));
  227. Assert.AreEqual(false, returnedEdge.IsNull("_to"));
  228. Assert.AreEqual(false, returnedEdge.IsNull("edgeFoo"));
  229. Assert.AreEqual(false, returnedEdge.IsNull("edgeBar"));
  230. Assert.AreEqual(false, returnedEdge.IsNull("baz.foo"));
  231. Assert.AreEqual(edge.String("_id"), returnedEdge.String("_id"));
  232. Assert.AreEqual(edge.String("_key"), returnedEdge.String("_key"));
  233. Assert.AreEqual(edge.String("_rev"), returnedEdge.String("_rev"));
  234. Assert.AreEqual(edge.Has("edgeFoo"), returnedEdge.Has("edgeFoo"));
  235. Assert.AreEqual(edge.String("edgeFoo"), returnedEdge.String("edgeFoo"));
  236. Assert.AreEqual(edge.Has("edgeBar"), returnedEdge.Has("edgeBar"));
  237. Assert.AreEqual(edge.Int("edgeBar"), returnedEdge.Int("edgeBar"));
  238. Assert.AreEqual(edge.Has("baz.foo"), returnedEdge.Has("baz.foo"));
  239. Assert.AreEqual(edge.String("baz.foo"), returnedEdge.String("baz.foo"));
  240. }
  241. [Test()]
  242. public void Should_create_and_check_for_edge_existence()
  243. {
  244. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  245. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  246. var db = Database.GetTestDatabase();
  247. // create test documents
  248. var doc1 = new Document()
  249. .String("foo", "foo string value 1")
  250. .Int("bar", 12345);
  251. var doc2 = new Document()
  252. .String("foo", "foo string value 2")
  253. .Int("bar", 54321);
  254. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  255. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  256. // create test edge
  257. var edge = new Document()
  258. .String("edgeFoo", "foo string value")
  259. .Int("edgeBar", 12345);
  260. edge.String("_from", doc1.String("_id"));
  261. edge.String("_to", doc2.String("_id"));
  262. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  263. // check if the created edge exists in database
  264. var exists = db.Edge.Exists(edge.String("_id"));
  265. Assert.AreEqual(true, exists);
  266. // delete edge
  267. db.Edge.Delete(edge.String("_id"));
  268. // check if the edge was deleted
  269. exists = db.Edge.Exists(edge.String("_id"));
  270. Assert.AreEqual(false, exists);
  271. }
  272. [Test()]
  273. public void Should_create_and_get_any_direction_edges()
  274. {
  275. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  276. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  277. var db = Database.GetTestDatabase();
  278. // create test documents
  279. var doc1 = new Document()
  280. .String("foo", "foo string value 1")
  281. .Int("bar", 12345);
  282. var doc2 = new Document()
  283. .String("foo", "foo string value 2")
  284. .Int("bar", 54321);
  285. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  286. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  287. // create test edge
  288. var edge1 = new Document()
  289. .String("edgeFoo", "foo string value 1")
  290. .Int("edgeBar", 12345);
  291. edge1.String("_from", doc1.String("_id"));
  292. edge1.String("_to", doc2.String("_id"));
  293. db.Edge.Create(Database.TestEdgeCollectionName, edge1);
  294. // create another test edge
  295. var edge2 = new Document()
  296. .String("edgeFoo", "foo string value 2")
  297. .Int("edgeBar", 54321);
  298. edge2.String("_from", doc2.String("_id"));
  299. edge2.String("_to", doc1.String("_id"));
  300. db.Edge.Create(Database.TestEdgeCollectionName, edge2);
  301. // get both edges
  302. var anyEdges = db.Edge.Get(Database.TestEdgeCollectionName, doc1.String("_id"));
  303. Assert.AreEqual(2, anyEdges.Count);
  304. var returnedEdge1 = anyEdges.Where(x => x.String("_id") == edge1.String("_id")).First();
  305. Assert.AreEqual(false, edge1.IsNull("_id"));
  306. Assert.AreEqual(false, edge1.IsNull("_key"));
  307. Assert.AreEqual(false, edge1.IsNull("_rev"));
  308. Assert.AreEqual(false, edge1.IsNull("_from"));
  309. Assert.AreEqual(false, edge1.IsNull("_to"));
  310. Assert.AreEqual(false, edge1.IsNull("edgeFoo"));
  311. Assert.AreEqual(false, edge1.IsNull("edgeBar"));
  312. Assert.AreEqual(false, returnedEdge1.IsNull("_id"));
  313. Assert.AreEqual(false, returnedEdge1.IsNull("_key"));
  314. Assert.AreEqual(false, returnedEdge1.IsNull("_rev"));
  315. Assert.AreEqual(false, returnedEdge1.IsNull("_from"));
  316. Assert.AreEqual(false, returnedEdge1.IsNull("_to"));
  317. Assert.AreEqual(false, returnedEdge1.IsNull("edgeFoo"));
  318. Assert.AreEqual(false, returnedEdge1.IsNull("edgeBar"));
  319. Assert.AreEqual(edge1.String("_id"), returnedEdge1.String("_id"));
  320. Assert.AreEqual(edge1.String("_key"), returnedEdge1.String("_key"));
  321. Assert.AreEqual(edge1.String("_rev"), returnedEdge1.String("_rev"));
  322. Assert.AreEqual(edge1.String("_from"), returnedEdge1.String("_from"));
  323. Assert.AreEqual(edge1.String("_to"), returnedEdge1.String("_to"));
  324. Assert.AreEqual(edge1.Has("edgeFoo"), returnedEdge1.Has("edgeFoo"));
  325. Assert.AreEqual(edge1.String("edgeFoo"), returnedEdge1.String("edgeFoo"));
  326. Assert.AreEqual(edge1.Has("edgeBar"), returnedEdge1.Has("edgeBar"));
  327. Assert.AreEqual(edge1.Int("edgeBar"), returnedEdge1.Int("edgeBar"));
  328. var returnedEdge2 = anyEdges.Where(x => x.String("_id") == edge2.String("_id")).First();
  329. Assert.AreEqual(false, edge2.IsNull("_id"));
  330. Assert.AreEqual(false, edge2.IsNull("_key"));
  331. Assert.AreEqual(false, edge2.IsNull("_rev"));
  332. Assert.AreEqual(false, edge2.IsNull("_from"));
  333. Assert.AreEqual(false, edge2.IsNull("_to"));
  334. Assert.AreEqual(false, edge2.IsNull("edgeFoo"));
  335. Assert.AreEqual(false, edge2.IsNull("edgeBar"));
  336. Assert.AreEqual(false, returnedEdge2.IsNull("_id"));
  337. Assert.AreEqual(false, returnedEdge2.IsNull("_key"));
  338. Assert.AreEqual(false, returnedEdge2.IsNull("_rev"));
  339. Assert.AreEqual(false, returnedEdge2.IsNull("_from"));
  340. Assert.AreEqual(false, returnedEdge2.IsNull("_to"));
  341. Assert.AreEqual(false, returnedEdge2.IsNull("edgeFoo"));
  342. Assert.AreEqual(false, returnedEdge2.IsNull("edgeBar"));
  343. Assert.AreEqual(edge2.String("_id"), returnedEdge2.String("_id"));
  344. Assert.AreEqual(edge2.String("_key"), returnedEdge2.String("_key"));
  345. Assert.AreEqual(edge2.String("_rev"), returnedEdge2.String("_rev"));
  346. Assert.AreEqual(edge2.String("_from"), returnedEdge2.String("_from"));
  347. Assert.AreEqual(edge2.String("_to"), returnedEdge2.String("_to"));
  348. Assert.AreEqual(edge2.Has("edgeFoo"), returnedEdge2.Has("edgeFoo"));
  349. Assert.AreEqual(edge2.String("edgeFoo"), returnedEdge2.String("edgeFoo"));
  350. Assert.AreEqual(edge2.Has("edgeBar"), returnedEdge2.Has("edgeBar"));
  351. Assert.AreEqual(edge2.Int("edgeBar"), returnedEdge2.Int("edgeBar"));
  352. }
  353. [Test()]
  354. public void Should_create_and_get_in_direction_edges()
  355. {
  356. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  357. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  358. var db = Database.GetTestDatabase();
  359. // create test documents
  360. var doc1 = new Document()
  361. .String("foo", "foo string value 1")
  362. .Int("bar", 12345);
  363. var doc2 = new Document()
  364. .String("foo", "foo string value 2")
  365. .Int("bar", 54321);
  366. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  367. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  368. // create test edge
  369. var edge1 = new Document()
  370. .String("edgeFoo", "foo string value 1")
  371. .Int("edgeBar", 12345);
  372. edge1.String("_from", doc1.String("_id"));
  373. edge1.String("_to", doc2.String("_id"));
  374. db.Edge.Create(Database.TestEdgeCollectionName, edge1);
  375. // create another test edge
  376. var edge2 = new Document()
  377. .String("edgeFoo", "foo string value 2")
  378. .Int("edgeBar", 54321);
  379. edge2.String("_from", doc2.String("_id"));
  380. edge2.String("_to", doc1.String("_id"));
  381. db.Edge.Create(Database.TestEdgeCollectionName, edge2);
  382. // get only ingoing edges (should be one)
  383. var inEdges = db.Edge.Get(Database.TestEdgeCollectionName, doc2.String("_id"), ArangoEdgeDirection.In);
  384. Assert.AreEqual(1, inEdges.Count);
  385. var returnedEdge1 = inEdges.Where(x => x.String("_id") == edge1.String("_id")).First();
  386. Assert.AreEqual(false, edge1.IsNull("_id"));
  387. Assert.AreEqual(false, edge1.IsNull("_key"));
  388. Assert.AreEqual(false, edge1.IsNull("_rev"));
  389. Assert.AreEqual(false, edge1.IsNull("_from"));
  390. Assert.AreEqual(false, edge1.IsNull("_to"));
  391. Assert.AreEqual(false, edge1.IsNull("edgeFoo"));
  392. Assert.AreEqual(false, edge1.IsNull("edgeBar"));
  393. Assert.AreEqual(false, returnedEdge1.IsNull("_id"));
  394. Assert.AreEqual(false, returnedEdge1.IsNull("_key"));
  395. Assert.AreEqual(false, returnedEdge1.IsNull("_rev"));
  396. Assert.AreEqual(false, returnedEdge1.IsNull("_from"));
  397. Assert.AreEqual(false, returnedEdge1.IsNull("_to"));
  398. Assert.AreEqual(false, returnedEdge1.IsNull("edgeFoo"));
  399. Assert.AreEqual(false, returnedEdge1.IsNull("edgeBar"));
  400. Assert.AreEqual(edge1.String("_id"), returnedEdge1.String("_id"));
  401. Assert.AreEqual(edge1.String("_key"), returnedEdge1.String("_key"));
  402. Assert.AreEqual(edge1.String("_rev"), returnedEdge1.String("_rev"));
  403. Assert.AreEqual(edge1.String("_from"), returnedEdge1.String("_from"));
  404. Assert.AreEqual(edge1.String("_to"), returnedEdge1.String("_to"));
  405. Assert.AreEqual(edge1.Has("edgeFoo"), returnedEdge1.Has("edgeFoo"));
  406. Assert.AreEqual(edge1.String("edgeFoo"), returnedEdge1.String("edgeFoo"));
  407. Assert.AreEqual(edge1.Has("edgeBar"), returnedEdge1.Has("edgeBar"));
  408. Assert.AreEqual(edge1.Int("edgeBar"), returnedEdge1.Int("edgeBar"));
  409. }
  410. [Test()]
  411. public void Should_create_and_get_out_direction_edges()
  412. {
  413. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  414. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  415. var db = Database.GetTestDatabase();
  416. // create test documents
  417. var doc1 = new Document()
  418. .String("foo", "foo string value 1")
  419. .Int("bar", 12345);
  420. var doc2 = new Document()
  421. .String("foo", "foo string value 2")
  422. .Int("bar", 54321);
  423. db.Document.Create(Database.TestDocumentCollectionName, doc1);
  424. db.Document.Create(Database.TestDocumentCollectionName, doc2);
  425. // create test edge
  426. var edge1 = new Document()
  427. .String("edgeFoo", "foo string value 1")
  428. .Int("edgeBar", 12345);
  429. edge1.String("_from", doc1.String("_id"));
  430. edge1.String("_to", doc2.String("_id"));
  431. db.Edge.Create(Database.TestEdgeCollectionName, edge1);
  432. // create another test edge
  433. var edge2 = new Document()
  434. .String("edgeFoo", "foo string value 2")
  435. .Int("edgeBar", 54321);
  436. edge2.String("_from", doc2.String("_id"));
  437. edge2.String("_to", doc1.String("_id"));
  438. db.Edge.Create(Database.TestEdgeCollectionName, edge2);
  439. // get only outgoing edges (should be one)
  440. var outEdges = db.Edge.Get(Database.TestEdgeCollectionName, doc1.String("_id"), ArangoEdgeDirection.Out);
  441. Assert.AreEqual(1, outEdges.Count);
  442. var returnedEdge1 = outEdges.Where(x => x.String("_id") == edge1.String("_id")).First();
  443. Assert.AreEqual(false, edge1.IsNull("_id"));
  444. Assert.AreEqual(false, edge1.IsNull("_key"));
  445. Assert.AreEqual(false, edge1.IsNull("_rev"));
  446. Assert.AreEqual(false, edge1.IsNull("_from"));
  447. Assert.AreEqual(false, edge1.IsNull("_to"));
  448. Assert.AreEqual(false, edge1.IsNull("edgeFoo"));
  449. Assert.AreEqual(false, edge1.IsNull("edgeBar"));
  450. Assert.AreEqual(false, returnedEdge1.IsNull("_id"));
  451. Assert.AreEqual(false, returnedEdge1.IsNull("_key"));
  452. Assert.AreEqual(false, returnedEdge1.IsNull("_rev"));
  453. Assert.AreEqual(false, returnedEdge1.IsNull("_from"));
  454. Assert.AreEqual(false, returnedEdge1.IsNull("_to"));
  455. Assert.AreEqual(false, returnedEdge1.IsNull("edgeFoo"));
  456. Assert.AreEqual(false, returnedEdge1.IsNull("edgeBar"));
  457. Assert.AreEqual(edge1.String("_id"), returnedEdge1.String("_id"));
  458. Assert.AreEqual(edge1.String("_key"), returnedEdge1.String("_key"));
  459. Assert.AreEqual(edge1.String("_rev"), returnedEdge1.String("_rev"));
  460. Assert.AreEqual(edge1.String("_from"), returnedEdge1.String("_from"));
  461. Assert.AreEqual(edge1.String("_to"), returnedEdge1.String("_to"));
  462. Assert.AreEqual(edge1.Has("edgeFoo"), returnedEdge1.Has("edgeFoo"));
  463. Assert.AreEqual(edge1.String("edgeFoo"), returnedEdge1.String("edgeFoo"));
  464. Assert.AreEqual(edge1.Has("edgeBar"), returnedEdge1.Has("edgeBar"));
  465. Assert.AreEqual(edge1.Int("edgeBar"), returnedEdge1.Int("edgeBar"));
  466. }
  467. [Test()]
  468. public void Should_create_edge_from_generic_object_and_get_it_back()
  469. {
  470. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  471. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  472. var db = Database.GetTestDatabase();
  473. var person1 = new Person();
  474. person1.FirstName = "Johny";
  475. person1.LastName = "Bravo";
  476. var person2 = new Person();
  477. person2.FirstName = "Larry";
  478. person2.LastName = "Page";
  479. db.Document.Create(Database.TestDocumentCollectionName, person1);
  480. db.Document.Create(Database.TestDocumentCollectionName, person2);
  481. var edge = new Person();
  482. edge.ThisIsFrom = person1.ThisIsId;
  483. edge.ThisIsTo = person2.ThisIsId;
  484. edge.Aliased = "edge alias string";
  485. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  486. // retrieve the very same document from database
  487. var returnedEdge = db.Edge.Get<Person>(edge.ThisIsId);
  488. // check if the data from created and returned document are equal
  489. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsId));
  490. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsKey));
  491. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsRevision));
  492. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsFrom));
  493. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsTo));
  494. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsId));
  495. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsKey));
  496. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsRevision));
  497. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsFrom));
  498. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsTo));
  499. Assert.AreEqual(edge.ThisIsId, returnedEdge.ThisIsId);
  500. Assert.AreEqual(edge.ThisIsKey, returnedEdge.ThisIsKey);
  501. Assert.AreEqual(edge.ThisIsRevision, returnedEdge.ThisIsRevision);
  502. Assert.AreEqual(edge.ThisIsFrom, returnedEdge.ThisIsFrom);
  503. Assert.AreEqual(edge.ThisIsTo, returnedEdge.ThisIsTo);
  504. Assert.AreEqual(edge.Aliased, returnedEdge.Aliased);
  505. }
  506. [Test()]
  507. public void Should_create_edge_from_generic_object_and_replace_it_and_get_it_back()
  508. {
  509. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  510. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  511. var db = Database.GetTestDatabase();
  512. var person1 = new Person();
  513. person1.FirstName = "Johny";
  514. person1.LastName = "Bravo";
  515. var person2 = new Person();
  516. person2.FirstName = "Larry";
  517. person2.LastName = "Page";
  518. db.Document.Create(Database.TestDocumentCollectionName, person1);
  519. db.Document.Create(Database.TestDocumentCollectionName, person2);
  520. var edge = new Person();
  521. edge.ThisIsFrom = person1.ThisIsId;
  522. edge.ThisIsTo = person2.ThisIsId;
  523. edge.Aliased = "edge alias string";
  524. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  525. var replacedEdge = new Person();
  526. replacedEdge.ThisIsId = edge.ThisIsId;
  527. replacedEdge.FirstName = "Robert";
  528. // replace original document with new one
  529. var isReplaced = db.Edge.Replace(replacedEdge);
  530. Assert.AreEqual(true, isReplaced);
  531. // retrieve the very same document from database
  532. var returnedEdge = db.Edge.Get<Person>(replacedEdge.ThisIsId);
  533. // check if the data from created and returned document are equal
  534. Assert.AreEqual(false, string.IsNullOrEmpty(replacedEdge.ThisIsId));
  535. Assert.AreEqual(false, string.IsNullOrEmpty(replacedEdge.ThisIsKey));
  536. Assert.AreEqual(false, string.IsNullOrEmpty(replacedEdge.ThisIsRevision));
  537. //Assert.AreEqual(false, string.IsNullOrEmpty(replacedEdge.ThisIsFrom));
  538. //Assert.AreEqual(false, string.IsNullOrEmpty(replacedEdge.ThisIsTo));
  539. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsId));
  540. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsKey));
  541. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsRevision));
  542. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsFrom));
  543. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsTo));
  544. Assert.AreEqual(replacedEdge.ThisIsId, returnedEdge.ThisIsId);
  545. Assert.AreEqual(replacedEdge.ThisIsKey, returnedEdge.ThisIsKey);
  546. Assert.AreEqual(replacedEdge.ThisIsRevision, returnedEdge.ThisIsRevision);
  547. //Assert.AreEqual(replacedEdge.ThisIsFrom, returnedEdge.ThisIsFrom);
  548. //Assert.AreEqual(replacedEdge.ThisIsTo, returnedEdge.ThisIsTo);
  549. Assert.AreEqual(replacedEdge.FirstName, returnedEdge.FirstName);
  550. Assert.AreEqual(true, string.IsNullOrEmpty(returnedEdge.Aliased));
  551. }
  552. [Test()]
  553. public void Should_create_edge_from_generic_object_and_update_it_and_get_it_back()
  554. {
  555. Database.CreateTestCollection(Database.TestDocumentCollectionName);
  556. Database.CreateTestCollection(Database.TestEdgeCollectionName, ArangoCollectionType.Edge);
  557. var db = Database.GetTestDatabase();
  558. var person1 = new Person();
  559. person1.FirstName = "Johny";
  560. person1.LastName = "Bravo";
  561. var person2 = new Person();
  562. person2.FirstName = "Larry";
  563. person2.LastName = "Page";
  564. db.Document.Create(Database.TestDocumentCollectionName, person1);
  565. db.Document.Create(Database.TestDocumentCollectionName, person2);
  566. var edge = new Person();
  567. edge.ThisIsFrom = person1.ThisIsId;
  568. edge.ThisIsTo = person2.ThisIsId;
  569. edge.LastName = "Bravo";
  570. edge.Aliased = "edge alias string";
  571. db.Edge.Create(Database.TestEdgeCollectionName, edge);
  572. // update data in edge and update it in database
  573. edge.FirstName = "Robert";
  574. edge.Aliased = "aliased string";
  575. var isUpdated = db.Edge.Update(edge);
  576. Assert.AreEqual(true, isUpdated);
  577. // retrieve the very same document from database
  578. var returnedEdge = db.Edge.Get<Person>(edge.ThisIsId);
  579. // check if the data from created and returned document are equal
  580. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsId));
  581. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsKey));
  582. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsRevision));
  583. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsFrom));
  584. Assert.AreEqual(false, string.IsNullOrEmpty(edge.ThisIsTo));
  585. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsId));
  586. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsKey));
  587. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsRevision));
  588. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsFrom));
  589. Assert.AreEqual(false, string.IsNullOrEmpty(returnedEdge.ThisIsTo));
  590. Assert.AreEqual(edge.ThisIsId, returnedEdge.ThisIsId);
  591. Assert.AreEqual(edge.ThisIsKey, returnedEdge.ThisIsKey);
  592. Assert.AreEqual(edge.ThisIsRevision, returnedEdge.ThisIsRevision);
  593. Assert.AreEqual(edge.ThisIsFrom, returnedEdge.ThisIsFrom);
  594. Assert.AreEqual(edge.ThisIsTo, returnedEdge.ThisIsTo);
  595. Assert.AreEqual(edge.FirstName, returnedEdge.FirstName);
  596. Assert.AreEqual(edge.LastName, returnedEdge.LastName);
  597. Assert.AreEqual(edge.Aliased, returnedEdge.Aliased);
  598. }
  599. public void Dispose()
  600. {
  601. Database.DeleteTestCollection(Database.TestDocumentCollectionName);
  602. Database.DeleteTestCollection(Database.TestEdgeCollectionName);
  603. Database.DeleteTestDatabase(Database.TestDatabaseGeneral);
  604. }
  605. }
  606. }