PageRenderTime 48ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/Raven.DtcTests/Transactions/Deletes.cs

https://github.com/barryhagan/ravendb
C# | 84 lines | 66 code | 13 blank | 5 comment | 0 complexity | 2bf6d976a0b19f691c18340623418eac MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, CC-BY-SA-3.0
  1. //-----------------------------------------------------------------------
  2. // <copyright file="Deletes.cs" company="Hibernating Rhinos LTD">
  3. // Copyright (c) Hibernating Rhinos LTD. All rights reserved.
  4. // </copyright>
  5. //-----------------------------------------------------------------------
  6. using System;
  7. using Raven.Abstractions.Data;
  8. using Raven.Client.Embedded;
  9. using Raven.Json.Linq;
  10. using Raven.Database;
  11. using Raven.Tests.Common;
  12. using Xunit;
  13. namespace Raven.Tests.Transactions
  14. {
  15. public class Deletes : RavenTest
  16. {
  17. private readonly EmbeddableDocumentStore store;
  18. private readonly DocumentDatabase db;
  19. public Deletes()
  20. {
  21. store = NewDocumentStore();
  22. db = store.DocumentDatabase;
  23. }
  24. public override void Dispose()
  25. {
  26. store.Dispose();
  27. base.Dispose();
  28. }
  29. [Fact]
  30. public void DeletingDocumentInTransactionInNotVisibleBeforeCommit()
  31. {
  32. EnsureDtcIsSupported(db);
  33. db.Documents.Put("ayende", null, RavenJObject.Parse("{ayende:'oren'}"), new RavenJObject(), null);
  34. var transactionInformation = new TransactionInformation { Id = Guid.NewGuid().ToString(), Timeout = TimeSpan.FromMinutes(1) };
  35. db.Documents.Delete("ayende", null, transactionInformation);
  36. Assert.NotNull(db.Documents.Get("ayende", null));
  37. }
  38. [Fact]
  39. public void DeletingDocumentInTransactionInNotFoundInSameTransactionBeforeCommit()
  40. {
  41. EnsureDtcIsSupported(db);
  42. db.Documents.Put("ayende", null, RavenJObject.Parse("{ayende:'oren'}"), new RavenJObject(), null);
  43. var transactionInformation = new TransactionInformation { Id = Guid.NewGuid().ToString(), Timeout = TimeSpan.FromMinutes(1) };
  44. db.Documents.Delete("ayende", null, transactionInformation);
  45. Assert.Null(db.Documents.Get("ayende", transactionInformation));
  46. }
  47. [Fact]
  48. public void DeletingDocumentAndThenAddingDocumentInSameTransactionCanWork()
  49. {
  50. EnsureDtcIsSupported(db);
  51. db.Documents.Put("ayende", null, RavenJObject.Parse("{ayende:'oren'}"), new RavenJObject(), null);
  52. var transactionInformation = new TransactionInformation { Id = Guid.NewGuid().ToString(), Timeout = TimeSpan.FromMinutes(1) };
  53. db.Documents.Delete("ayende", null, transactionInformation);
  54. db.Documents.Put("ayende", null, RavenJObject.Parse("{ayende:'rahien'}"), new RavenJObject(), transactionInformation);
  55. db.PrepareTransaction(transactionInformation.Id);
  56. db.Commit(transactionInformation.Id);
  57. Assert.Equal("rahien", db.Documents.Get("ayende", null).ToJson()["ayende"].Value<string>());
  58. }
  59. [Fact]
  60. public void DeletingDocumentInTransactionInRemovedAfterCommit()
  61. {
  62. EnsureDtcIsSupported(db);
  63. db.Documents.Put("ayende", null, RavenJObject.Parse("{ayende:'oren'}"), new RavenJObject(), null);
  64. var transactionInformation = new TransactionInformation { Id = Guid.NewGuid().ToString(), Timeout = TimeSpan.FromMinutes(1) };
  65. db.Documents.Delete("ayende", null, transactionInformation);
  66. db.PrepareTransaction(transactionInformation.Id);
  67. db.Commit(transactionInformation.Id);
  68. Assert.Null(db.Documents.Get("ayende", null));
  69. }
  70. }
  71. }