public void Create_trades_and_apply_events() { using (var connector = new Connector(_config)) { connector.AdminInterface().DropDatabase(); connector.DeclareCollection <ProductEvent>(); connector.DeclareCollection <Trade>(); var events = connector.DataSource <ProductEvent>(); var trades = connector.DataSource <Trade>(); var factory = new ProductFactory(connector); var(trade, evt) = factory.CreateOption(10, 100, "GOLDMAN.LDN", "OPTEUR", "AXA", 100, false, true, false, 6); events.Put(evt); trades.Put(trade); var tradeReloaded = trades.Single(t => t.ContractId == trade.ContractId); var eventReloaded = events.Single(e => e.DealId == trade.ContractId); Assert.AreEqual(tradeReloaded.Id, trade.Id); Assert.AreEqual(eventReloaded.EventId, evt.EventId); // apply an increase event var(newVersion, increase) = factory.IncreaseOption(trade, 50); trades.Put(trade); trades.Put(newVersion); events.Put(increase); var allVersions = trades.Where(t => t.ContractId == trade.ContractId).ToList() .OrderBy(t => t.Version).ToList(); Assert.AreEqual(2, allVersions.Count); Assert.AreEqual(1, allVersions[0].Version); Assert.AreEqual(2, allVersions[1].Version); Assert.IsTrue(allVersions[1].IsLastVersion); Assert.IsFalse(allVersions[0].IsLastVersion); } }