public static IUnityContainer ConfigureUnity(this IUnityContainer container, MockMessageReceiver receiver, MessageProcessingStage[] stages)
        {
            var settings = new PerformedOperationsPrimaryFlowProcessorSettings { AppropriatedStages = stages };

            var metadataProvider = new MetadataProvider(new IMetadataSource[]
            {
                new PerformedOperationsMessageFlowsMetadataSource()
            },
            new IMetadataProcessor[]
            {
                new ReferencesEvaluatorProcessor()
            });

            return container
                        .RegisterContexts()
                        .RegisterInstance(Mock.Of<ITelemetryPublisher>())
                        .RegisterType<ITracer, NullTracer>()
                        .RegisterInstance<IMetadataProvider>(metadataProvider)
                        .RegisterInstance<IPerformedOperationsFlowProcessorSettings>(settings)
                        .RegisterInstance(receiver)
                        .RegisterType<IMessageReceiverFactory, UnityMessageReceiverFactory>(Lifetime.Singleton)
                        .RegisterType<IMessageFlowProcessorResolveStrategy, Mocks.Processor.PrimaryProcessorResolveStrategy>("primary", Lifetime.Singleton)
                        .RegisterType<IMessageFlowReceiverResolveStrategy, MockReceiverResolveStrategy>("primary", Lifetime.Singleton)
                        .RegisterType<IMessageProcessingStagesFactory, UnityMessageProcessingStagesFactory>(Lifetime.Singleton)
                        .RegisterType<IMessageTransformerFactory, UnityMessageTransformerFactory>(Lifetime.Singleton)
                        .RegisterType<IMessageFlowProcessorFactory, UnityMessageFlowProcessorFactory>(Lifetime.Singleton)
                        .RegisterType<IParentContainerUsedRegistrationsContainer, ParentContainerUsedRegistrationsContainer>(Lifetime.Singleton)
                        .RegisterType<IMessageProcessingHandlerFactory, UnityMessageProcessingHandlerFactory>(Lifetime.PerScope)
                        .RegisterType<IMessageProcessingContextAccumulatorFactory, UnityMessageProcessingContextAccumulatorFactory>(Lifetime.PerScope);
        }
        public void ImportFactsFromErmPrimaryAccumulator()
        {
            var succeeded = Enumerable.Empty<IMessage>();
            var failed = Enumerable.Empty<IMessage>();

            var receiver = new MockMessageReceiver(new[]
            {
                TrackedUsecases.UpdateFirms(),
            },
            (x, y) =>
            {
                succeeded = x;
                failed = y;
            });

            var container = new UnityContainer().ConfigureUnity(receiver, new[] { MessageProcessingStage.Accumulation });
            var flowId = typeof(ImportFactsFromErmFlow).Name.AsPrimaryProcessingFlowId();

            var processor = GetProcessor(container, flowId);
            processor.Process();

            Assert.That(succeeded.Count(), Is.EqualTo(1));
            Assert.That(failed.Count(), Is.EqualTo(0));
        }