public void RemoveFactory()
        {
            const string typeCode = "testCode";

            using var mocker = AutoMockHelper.Create();
            var store         = mocker.Create <ClaptrapDesignStore>();
            var actorIdentity = new TestClaptrapIdentity("123", typeCode);
            var design        = new ClaptrapDesign
            {
                ClaptrapTypeCode = typeCode
            };

            store.AddOrReplace(design);
            store.AddOrReplaceFactory(typeCode,
                                      (identity, sourceDesign) => new ClaptrapDesign
            {
                StateDataType = typeof(int)
            });
            var claptrapDesign = store.FindDesign(actorIdentity);

            claptrapDesign.StateDataType.Should().Be(typeof(int));
            store.RemoveFactory(typeCode);
            claptrapDesign = store.FindDesign(actorIdentity);
            claptrapDesign.Should().Be(design);
        }
Beispiel #2
0
        public void CreateMinion()
        {
            var actorIdentity       = TestClaptrapIdentity.Instance;
            var claptrapDesignStore = new ClaptrapDesignStore();
            var masterDesign        = new ClaptrapDesign
            {
                ClaptrapOptions = new ClaptrapOptions
                {
                    MinionActivationOptions = new MinionActivationOptions(),
                    EventLoadingOptions     = new EventLoadingOptions(),
                    StateRecoveryOptions    = new StateRecoveryOptions(),
                    StateSavingOptions      = new StateSavingOptions()
                },
                ClaptrapTypeCode               = actorIdentity.TypeCode,
                EventHandlerDesigns            = ImmutableDictionary <string, IClaptrapEventHandlerDesign> .Empty,
                StateHolderFactoryType         = typeof(NoChangeStateHolderFactory),
                StateDataType                  = typeof(TestStateData),
                EventHandlerFactoryFactoryType = typeof(EventHandlerFactoryFactory),
                InitialStateDataFactoryType    = typeof(DefaultInitialStateDataFactory)
            };

            claptrapDesignStore.AddOrReplace(masterDesign);
            var minionDesign = new ClaptrapDesign
            {
                ClaptrapOptions = new ClaptrapOptions
                {
                    MinionActivationOptions = new MinionActivationOptions(),
                    EventLoadingOptions     = new EventLoadingOptions(),
                    StateRecoveryOptions    = new StateRecoveryOptions(),
                    StateSavingOptions      = new StateSavingOptions()
                },
                ClaptrapTypeCode               = actorIdentity.TypeCode,
                EventHandlerDesigns            = ImmutableDictionary <string, IClaptrapEventHandlerDesign> .Empty,
                StateHolderFactoryType         = typeof(NoChangeStateHolderFactory),
                StateDataType                  = typeof(TestStateData),
                EventHandlerFactoryFactoryType = typeof(EventHandlerFactoryFactory),
                InitialStateDataFactoryType    = typeof(DefaultInitialStateDataFactory),
                ClaptrapMasterDesign           = masterDesign
            };

            claptrapDesignStore.AddOrReplace(minionDesign);
            using var mocker = AutoMockHelper.Create(builderAction: builder =>
            {
                builder.RegisterInstance(claptrapDesignStore)
                .AsImplementedInterfaces()
                .SingleInstance();
            });

            mocker.Mock <IClaptrapModuleProvider>()
            .Setup(x => x.GetClaptrapSharedModules(actorIdentity))
            .Returns(Enumerable.Empty <IClaptrapSharedModule>());
            mocker.Mock <IClaptrapModuleProvider>()
            .Setup(x => x.GetClaptrapMinionModules(actorIdentity))
            .Returns(Enumerable.Empty <IClaptrapMinionModule>());

            var actorFactory = mocker.Create <ClaptrapFactory>();
            var actor        = actorFactory.Create(actorIdentity);

            actor.Should().NotBeNull();
        }
Beispiel #3
0
        public async Task MinionNotFound()
        {
            var id         = new ClaptrapIdentity("1", "2");
            var store      = new ClaptrapDesignStore();
            var mainDesign = new ClaptrapDesign
            {
                ClaptrapTypeCode = id.TypeCode
            };

            store.AddOrReplace(mainDesign);


            using var mocker = AutoMock.GetLoose(builder =>
            {
                builder.RegisterInstance(store)
                .AsImplementedInterfaces()
                .SingleInstance();
            });

            var daprMinionActivator = mocker.Create <DaprMinionActivator>();

            // act
            await daprMinionActivator.WakeAsync(id);

            mocker.Mock <IActorProxyFactory>()
            .Verify(x => x.Create(It.IsAny <ActorId>(), It.IsAny <string>(), It.IsAny <ActorProxyOptions>()),
                    Times.Never);
        }
Beispiel #4
0
        public async Task MinionFound()
        {
            var id         = new ClaptrapIdentity("1", "2");
            var store      = new ClaptrapDesignStore();
            var mainDesign = new ClaptrapDesign
            {
                ClaptrapTypeCode = id.TypeCode
            };

            store.AddOrReplace(mainDesign);
            var minionDesign = new ClaptrapDesign
            {
                ClaptrapTypeCode     = "minion",
                ClaptrapMasterDesign = mainDesign
            };

            store.AddOrReplace(minionDesign);


            using var mocker = AutoMock.GetLoose(builder =>
            {
                builder.RegisterInstance(store)
                .AsImplementedInterfaces()
                .SingleInstance();
            });

            mocker.Mock <IActorProxyFactory>()
            .Setup(x => x.Create(new ActorId(id.Id), minionDesign.ClaptrapTypeCode, It.IsAny <ActorProxyOptions>()))
            .Verifiable();

            var daprMinionActivator = mocker.Create <DaprMinionActivator>();

            // act
            await daprMinionActivator.WakeAsync(id);
        }
 public void Remove()
 {
     using var mocker = AutoMockHelper.Create();
     var claptrapDesignStore = mocker.Create<ClaptrapDesignStore>();
     const string typeCode = "testCode";
     var design = new ClaptrapDesign
     {
         ClaptrapTypeCode = typeCode
     };
     claptrapDesignStore.AddOrReplace(design);
     claptrapDesignStore.Remove(x => x.ClaptrapTypeCode == typeCode);
     claptrapDesignStore.ToArray().Should().BeEmpty();
 }
 public void DesignFound()
 {
     using var mocker = AutoMockHelper.Create();
     var claptrapDesignStore = mocker.Create<ClaptrapDesignStore>();
     const string typeCode = "testCode";
     var design = new ClaptrapDesign
     {
         ClaptrapTypeCode = typeCode
     };
     claptrapDesignStore.AddOrReplace(design);
     var claptrapDesign = claptrapDesignStore.FindDesign(new TestClaptrapIdentity("456", typeCode));
     claptrapDesign.Should().Be(design);
 }
 public void Add(string typeCode)
 {
     using var mocker = AutoMockHelper.Create();
     var claptrapDesignStore = mocker.Create<ClaptrapDesignStore>();
     var actorIdentity = new TestClaptrapIdentity("123", typeCode);
     var design = new ClaptrapDesign
     {
         ClaptrapTypeCode = typeCode
     };
     claptrapDesignStore.AddOrReplace(design);
     var claptrapDesign = claptrapDesignStore.FindDesign(actorIdentity);
     claptrapDesign.Should().Be(design);
 }
Beispiel #8
0
 public void Configure(IClaptrapDesignStore designStore)
 {
     designStore.AddOrReplaceFactory(SagaCodes.ClaptrapTypeCode, (identity, design) =>
     {
         var sagaClaptrapIdentity = (ISagaClaptrapIdentity)identity;
         var userDataType         = sagaClaptrapIdentity.UserDataType;
         var stateDataType        = typeof(SagaStateData <>);
         var finalType            = stateDataType.MakeGenericType(userDataType);
         var newDesign            = new ClaptrapDesign(design)
         {
             StateDataType = finalType,
         };
         return(newDesign);
     });
 }
 public void AddFactory(string typeCode)
 {
     using var mocker = AutoMockHelper.Create();
     var claptrapDesignStore = mocker.Create<ClaptrapDesignStore>();
     var actorIdentity = new TestClaptrapIdentity("123", typeCode);
     var design = new ClaptrapDesign
     {
         ClaptrapTypeCode = typeCode
     };
     claptrapDesignStore.AddOrReplace(design);
     var factoryInvoked = false;
     claptrapDesignStore.AddOrReplaceFactory(typeCode, (identity, sourceDesign) =>
     {
         factoryInvoked = true;
         return sourceDesign;
     });
     var claptrapDesign = claptrapDesignStore.FindDesign(actorIdentity);
     claptrapDesign.Should().Be(design);
     factoryInvoked.Should().BeTrue();
 }