PageRenderTime 40ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/Extensions/src/Ncqrs.Eventing.Storage.JOliver.Tests/JoesBrowsableEventStoreTests.cs

http://github.com/ncqrs/ncqrs
C# | 88 lines | 80 code | 8 blank | 0 comment | 0 complexity | 2f7c0f2d942528d9bbedf63b2ab29bf6 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, Apache-2.0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using EventStore;
  5. using NUnit.Framework;
  6. using FluentAssertions;
  7. using Rhino.Mocks;
  8. namespace Ncqrs.Eventing.Storage.JOliver.Tests
  9. {
  10. [TestFixture]
  11. public class JoesBrowsableEventStoreTests
  12. {
  13. [Test]
  14. public void When_fetching_for_the_first_time_and_pipeline_has_no_state_events_are_fetched_from_the_beginning()
  15. {
  16. var engine = MockRepository.GenerateMock<IPersistStreamsWithAbsoluteOrdering>();
  17. engine.Expect(x => x.GetLastProcessedSequentialNumber("Pipeline")).Return(0);
  18. engine.Expect(x => x.Fetch(0,0)).IgnoreArguments().Return(new Commit[] {});
  19. var sut = new JoesBrowsableEventStore(engine);
  20. sut.Fetch("Pipeline", 10).ToList();
  21. engine.VerifyAllExpectations();
  22. }
  23. [Test]
  24. public void When_fetching_for_the_first_time_first_returned_commit_is_returned()
  25. {
  26. var engine = MockRepository.GenerateMock<IPersistStreamsWithAbsoluteOrdering>();
  27. engine.Expect(x => x.GetLastProcessedSequentialNumber("Pipeline")).Return(0);
  28. var streamId = Guid.NewGuid();
  29. engine.Expect(x => x.Fetch(0,0)).IgnoreArguments().Return(
  30. new[]
  31. {
  32. CreateCommit(streamId, 1),
  33. CreateCommit(streamId, 2)
  34. });
  35. var sut = new JoesBrowsableEventStore(engine);
  36. var results = sut.Fetch("Pipeline", 10).ToList();
  37. engine.VerifyAllExpectations();
  38. results.Count.Should().Be(2);
  39. }
  40. [Test]
  41. public void When_fetching_subsequent_time_first_returned_commit_is_skipped()
  42. {
  43. var engine = MockRepository.GenerateMock<IPersistStreamsWithAbsoluteOrdering>();
  44. engine.Expect(x => x.GetLastProcessedSequentialNumber("Pipeline")).Return(0);
  45. var streamId = Guid.NewGuid();
  46. engine.Expect(x => x.Fetch(0,10)).Return(
  47. new[]
  48. {
  49. CreateCommit(streamId, 1),
  50. CreateCommit(streamId, 2)
  51. });
  52. engine.Expect(x => x.Fetch(2,10)).Return(
  53. new[]
  54. {
  55. CreateCommit(streamId, 3),
  56. CreateCommit(streamId, 4)
  57. });
  58. var sut = new JoesBrowsableEventStore(engine);
  59. sut.Fetch("Pipeline", 10).ToList();
  60. var results = sut.Fetch("Pipeline", 10).ToList();
  61. engine.VerifyAllExpectations();
  62. results.Count.Should().Be(2);
  63. }
  64. private static Commit CreateCommit(Guid streamId, long sequentialId)
  65. {
  66. return new Commit(streamId, 1, Guid.NewGuid(), 1, DateTime.Now,
  67. new Dictionary<string, object>()
  68. {
  69. {"SequentialId", sequentialId}
  70. },
  71. new List<EventMessage>()
  72. {
  73. new EventMessage()
  74. {
  75. Body = new StoredEvent()
  76. }
  77. });
  78. }
  79. }
  80. }