public DatabaseDummyFactory() { // ------------------------------- EVENTS ------------------------------------- AutoFixtureBackedDummyFactory.AddDummyCreator( () => new HandlingForStreamDisabledEvent( A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new HandlingForStreamEnabledEvent( A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new HandlingForRecordDisabledEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var record = A.Dummy <StreamRecord>(); return(new RecordHandlingAvailableEvent( record.InternalRecordId, A.Dummy <string>(), record, A.Dummy <UtcDateTime>(), A.Dummy <string>())); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new RecordHandlingCanceledEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new RecordHandlingCompletedEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new RecordHandlingFailedEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new RecordHandlingFailureResetEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new RecordHandlingRunningEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new RecordHandlingSelfCanceledEvent( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new PruneOperationExecutedEvent( A.Dummy <IPruneOp>(), A.Dummy <PruneSummary>(), A.Dummy <UtcDateTime>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new PruneOperationRequestedEvent( A.Dummy <IPruneOp>(), A.Dummy <UtcDateTime>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new PruneRequestCanceledEvent( A.Dummy <string>(), A.Dummy <UtcDateTime>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new UniqueLongIssuedEvent( A.Dummy <long>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var result = new IdDeprecatedEvent( A.Dummy <UtcDateTime>(), A.Dummy <string>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new IdDeprecatedEvent <Version, Version>( A.Dummy <Version>(), A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new IdDeprecatedEvent <Version>( A.Dummy <UtcDateTime>(), A.Dummy <string>())); // ------------------------------- MODELS ------------------------------------- AutoFixtureBackedDummyFactory.AddDummyCreator( () => new StreamRecordHandlingEntry( A.Dummy <long>(), A.Dummy <long>(), A.Dummy <string>(), A.Dummy <HandlingStatus>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), A.Dummy <string>(), A.Dummy <UtcDateTime>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var scenario = ThreadSafeRandom.Next(1, 4); switch (scenario) { case 1: return(new CreateStreamResult(false, true)); case 2: return(new CreateStreamResult(true, false)); case 3: return(new CreateStreamResult(true, true)); default: throw new NotSupportedException( FormattableString.Invariant($"Invalid scenario {scenario} for creating a dummy {nameof(CreateStreamResult)}.")); } }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new StreamRecordMetadata( A.Dummy <string>(), A.Dummy <SerializerRepresentation>(), A.Dummy <TypeRepresentationWithAndWithoutVersion>(), A.Dummy <TypeRepresentationWithAndWithoutVersion>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), A.Dummy <UtcDateTime>(), A.Dummy <UtcDateTime>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new StreamRecordMetadata <Version>( A.Dummy <Version>(), A.Dummy <SerializerRepresentation>(), A.Dummy <TypeRepresentationWithAndWithoutVersion>(), A.Dummy <TypeRepresentationWithAndWithoutVersion>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), A.Dummy <UtcDateTime>(), A.Dummy <UtcDateTime>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new GetStreamFromRepresentationOp <FileStreamRepresentation, MemoryStandardStream>( A.Dummy <FileStreamRepresentation>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var scenario = ThreadSafeRandom.Next(1, 5); switch (scenario) { case 1: return(new PutRecordResult(A.Dummy <long>(), null)); case 2: return(new PutRecordResult(null, Some.ReadOnlyDummies <long>().ToList())); case 3: return(new PutRecordResult(null, Some.ReadOnlyDummies <long>().ToList(), Some.ReadOnlyDummies <long>().ToList())); case 4: return(new PutRecordResult(A.Dummy <long>(), Some.ReadOnlyDummies <long>().ToList(), Some.ReadOnlyDummies <long>().ToList())); default: throw new NotSupportedException(FormattableString.Invariant($"Invalid scenario {scenario} for creating a dummy {nameof(PutRecordResult)}.")); } }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var scenario = ThreadSafeRandom.Next(1, 4); switch (scenario) { case 1: return(new TryHandleRecordResult(null, false)); case 2: return(new TryHandleRecordResult(A.Dummy <StreamRecord>(), false)); case 3: return(new TryHandleRecordResult(null, true)); default: throw new NotSupportedException(FormattableString.Invariant($"Invalid scenario {scenario} for creating a dummy {nameof(TryHandleRecordResult)}.")); } }); // ------------------------------- ENUMS -------------------------------------- AutoFixtureBackedDummyFactory.ConstrainDummyToBeOneOf(VersionMatchStrategy.Any, VersionMatchStrategy.SpecifiedVersion); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(CompositeHandlingStatus.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(ExistingDatabaseStrategy.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(ExistingRecordStrategy.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(ExistingStreamStrategy.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(HandlingStatus.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(OrderRecordsBy.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(RecordNotFoundStrategy.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(StreamNotFoundStrategy.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(StreamRecordItemsToInclude.Unknown); AutoFixtureBackedDummyFactory.ConstrainDummyToExclude(TagMatchStrategy.Unknown); // ------------------------------- MODEL INTERFACES -------------------------------------- AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IResourceLocator>(); AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IStreamRepresentation>(); // ------------------------------- OPERATIONS ------------------------------------- AutoFixtureBackedDummyFactory.AddDummyCreator( () => new PruneBeforeInternalRecordDateOp( A.Dummy <UtcDateTime>(), A.Dummy <string>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new StandardPruneStreamOp( A.Dummy <long>(), A.Dummy <UtcDateTime>(), A.Dummy <string>(), A.Dummy <IResourceLocator>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new StandardUpdateHandlingStatusForRecordOp( A.Dummy <long>(), A.Dummy <string>(), A.Dummy <HandlingStatus>().ThatIsNot(HandlingStatus.DisabledForStream), Some.ReadOnlyDummies <HandlingStatus>().ToList(), A.Dummy <string>(), Some.ReadOnlyDummies <NamedValue <string> >().ToList(), A.Dummy <bool>(), A.Dummy <IResourceLocator>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => new StandardUpdateHandlingStatusForStreamOp( A.Dummy <HandlingStatus>().ThatIsIn(new[] { HandlingStatus.DisabledForStream, HandlingStatus.AvailableByDefault }), A.Dummy <string>(), Some.ReadOnlyDummies <NamedValue <string> >().ToList(), A.Dummy <IResourceLocator>())); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var existingRecordStrategy = A.Dummy <ExistingRecordStrategy>(); var result = new PutAndReturnInternalRecordIdOp <Version>( A.Dummy <Version>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), existingRecordStrategy, existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundById || existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundByIdAndType ? (int?)A.Dummy <ZeroOrPositiveInteger>() : null, A.Dummy <VersionMatchStrategy>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var existingRecordStrategy = A.Dummy <ExistingRecordStrategy>(); var result = new PutOp <Version>( A.Dummy <Version>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), existingRecordStrategy, existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundById || existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundByIdAndType ? (int?)A.Dummy <ZeroOrPositiveInteger>() : null, A.Dummy <VersionMatchStrategy>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var existingRecordStrategy = A.Dummy <ExistingRecordStrategy>(); var result = new PutWithIdAndReturnInternalRecordIdOp <Version, Version>( A.Dummy <Version>(), A.Dummy <Version>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), existingRecordStrategy, existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundById || existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundByIdAndType ? (int?)A.Dummy <ZeroOrPositiveInteger>() : null, A.Dummy <VersionMatchStrategy>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var existingRecordStrategy = A.Dummy <ExistingRecordStrategy>(); var result = new PutWithIdOp <Version, Version>( A.Dummy <Version>(), A.Dummy <Version>(), A.Dummy <IReadOnlyCollection <NamedValue <string> > >(), existingRecordStrategy, existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundById || existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundByIdAndType ? (int?)A.Dummy <ZeroOrPositiveInteger>() : null, A.Dummy <VersionMatchStrategy>()); return(result); }); AutoFixtureBackedDummyFactory.AddDummyCreator( () => { var existingRecordStrategy = A.Dummy <ExistingRecordStrategy>(); var result = new StandardPutRecordOp( A.Dummy <StreamRecordMetadata>(), A.Dummy <DescribedSerializationBase>(), existingRecordStrategy, existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundById || existingRecordStrategy == ExistingRecordStrategy.PruneIfFoundByIdAndType ? (int?)A.Dummy <ZeroOrPositiveInteger>() : null, A.Dummy <VersionMatchStrategy>(), A.Dummy <long?>(), A.Dummy <IResourceLocator>()); return(result); }); // ------------------------------- OPERATION INTERFACES ------------------------------------- AutoFixtureBackedDummyFactory.UseRandomInterfaceImplementationForDummy <IPruneOp>(); }