示例#1
0
        public void Can_load_from_journal_with_ModelCreatedEntry()
        {
            JournalAppender.Create(0, _commandStore).AppendModelCreated(typeof(ImmutableModel));
            Model model = new ModelLoader(_config, _commandStore).LoadModel();

            Assert.IsInstanceOf <ImmutableModel>(model);
        }
示例#2
0
        public void Can_create_with_ModelCreatedEntry_in_journal()
        {
            JournalAppender.Create(0, _commandStore).AppendModelCreated(typeof(ImmutableModel));
            var entries = _commandStore.GetJournalEntries().ToArray();

            Assert.AreEqual(1, entries.Length);
            var firstEntry = entries[0] as JournalEntry <ModelCreated>;

            Assert.NotNull(firstEntry);
            Assert.AreEqual(firstEntry.Item.Type, typeof(ImmutableModel));
            Assert.AreEqual(0, firstEntry.Id);
        }
示例#3
0
        public void RollbackMarkerIsWrittenOnRollback()
        {
            //Arrange
            var config = EngineConfiguration.Create().ForIsolatedTest();
            var store = new InMemoryCommandStore(config);
            store.Initialize();
            var target = new JournalAppender(1, new StreamJournalWriter(config, store.CreateJournalWriterStream));

            var command = new ACommand();
            command.Timestamp = DateTime.Now;
            target.Append(command);
            target.Append(command);

            //Act
            target.AppendRollbackMarker();

            //Assert
            Assert.AreEqual(3, store.GetJournalEntries().Count());
            Assert.AreEqual(1, store.GetJournalEntries().OfType<JournalEntry<RollbackMarker>>().Count());
            Assert.IsTrue(store.GetJournalEntries().Last() is JournalEntry<RollbackMarker>);
        }
示例#4
0
        public void Timestamp_is_copied_to_journal_entry()
        {
            JournalEntry entry = null;

            var fake = A.Fake <IJournalWriter>();

            A.CallTo(() => fake.Write(A <JournalEntry> ._))
            .Invokes((JournalEntry je) =>
            {
                entry = je;
            });

            var command = new SetTimeCommand();

            command.Timestamp = DateTime.Now;
            var target = new JournalAppender(0, fake);

            target.Append(command);

            Assert.IsNotNull(entry);
            Assert.AreEqual(command.Timestamp, entry.Created);
        }
示例#5
0
        public void RollbackMarkerIsWrittenOnRollback()
        {
            //Arrange
            var config = EngineConfiguration.Create().ForIsolatedTest();
            var store  = new InMemoryCommandStore(config);

            store.Initialize();
            var target = new JournalAppender(1, new StreamJournalWriter(config, store.CreateJournalWriterStream));

            var command = new ACommand();

            command.Timestamp = DateTime.Now;
            target.Append(command);
            target.Append(command);

            //Act
            target.AppendRollbackMarker();

            //Assert
            Assert.AreEqual(3, store.GetJournalEntries().Count());
            Assert.AreEqual(1, store.GetJournalEntries().OfType <JournalEntry <RollbackMarker> >().Count());
            Assert.IsTrue(store.GetJournalEntries().Last() is JournalEntry <RollbackMarker>);
        }
示例#6
0
        public void Timestamp_is_copied_to_journal_entry()
        {
            JournalEntry entry = null;

            var fake = A.Fake <IJournalWriter>();

            A.CallTo(() => fake.Write(A <JournalEntry> ._))
            .Invokes((JournalEntry je) =>
            {
                entry = je;
            });

            var before = DateTime.Now;

            ExecutionContext.Begin();
            var command = new SetTimeCommand();
            var target  = new JournalAppender(0, fake);
            var after   = DateTime.Now;

            target.Append(command);

            Assert.IsNotNull(entry);
            Assert.IsTrue(before <= entry.Created && entry.Created <= after);
        }