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); }
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(); }
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); }
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); }
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(); }