public void CanSaveMultipleEvents()
        {
            var aggregateId = Guid.NewGuid();
              var eventsIn = new Event[]
                       {
                         new TestEvent("Number 1"),
                         new TestEvent("Number 2")
                       };
              var es = _kernel.Get<IEventStore>();
              es.SaveEvents(aggregateId, eventsIn, -1);

              var eventsOut = es.GetEventsForAggregate(aggregateId);
              eventsOut.Count.Should().Be.EqualTo(eventsIn.Count());
        }
        public void ConcurrencyViolationThrowsConcurrencyException()
        {
            var aggregateId = Guid.NewGuid();
              var eventsIn = new Event[]
                       {
                         new TestEvent("Number 1"),
                         new TestEvent("Number 2"),
                         new TestEvent("Number 3"),
                       };
              var es = _kernel.Get<IEventStore>();
              es.SaveEvents(aggregateId, eventsIn, -1);

              eventsIn = new Event[]
                   {
                     new TestEvent("Number 4")
                   };

              Assert.Throws<ConcurrencyException>(
            () => es.SaveEvents(aggregateId, eventsIn, 0));
        }
        public void FirstEventIsVersionZero()
        {
            var aggregateId = Guid.NewGuid();
              var eventsIn = new Event[]
                       {
                         new TestEvent("Number 1"),
                       };
              var es = _kernel.Get<IEventStore>();
              es.SaveEvents(aggregateId, eventsIn, -1);

              var eventsOut = es.GetEventsForAggregate(aggregateId);
              eventsOut.Single().Version.Should().Be.EqualTo(0);
        }
        public void VersionsAreSequential()
        {
            var aggregateId = Guid.NewGuid();
              var eventsIn = new Event[]
                       {
                         new TestEvent("Number 1"),
                         new TestEvent("Number 2"),
                         new TestEvent("Number 3"),
                       };
              var es = _kernel.Get<IEventStore>();
              es.SaveEvents(aggregateId, eventsIn, -1);

              var eventsOut = es.GetEventsForAggregate(aggregateId);
              eventsOut[0].Version.Should().Be.EqualTo(0);
              eventsOut[1].Version.Should().Be.EqualTo(1);
              eventsOut[2].Version.Should().Be.EqualTo(2);
        }