/// <summary>
        /// Updates aggregate version for aggregate with <see cref="aggregateId"/>.
        /// </summary>
        /// <param name="aggregateId">Aggregate id.</param>
        /// <param name="aggregateVersionIncrement">Number to increase aggregate version.</param>
        /// <returns>Aggregate snapshot having current aggregate version.</returns>
        public SnapshotId UpdateAggregateVersion(string aggregateId, int aggregateVersionIncrement)
        {
            var currentVersion = AggregateVersions.TryGetValue(aggregateId, out var aggregateVersion)
                ? aggregateVersion + aggregateVersionIncrement
                : aggregateVersionIncrement;

            AggregateVersions = AggregateVersions.SetItem(aggregateId, currentVersion);

            return(new SnapshotId {
                EntryId = aggregateId, EntryVersion = currentVersion
            });
        }
 protected TestFlowExecutionContextBase(
     SubdomainTestHost host,
     ImmutableDictionary <string, int> aggregateVersions,
     ImmutableList <Command> commands,
     ImmutableList <IntegrationEvent> expectedEvents,
     ImmutableList <IExecutionResult> results)
 {
     Host = host;
     AggregateVersions = AggregateVersions.AddRange(aggregateVersions);
     ExecutedCommands  = ExecutedCommands.AddRange(commands);
     ExpectedEvents    = ExpectedEvents.AddRange(expectedEvents);
     ExecutionResults  = ExecutionResults.AddRange(results);
 }