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 Create()
        {
            using var mocker = AutoMockHelper.Create();
            var actorIdentity = new TestClaptrapIdentity(Guid.NewGuid().ToString(), "typeCode");
            var testEvent     = new TestEvent
            {
                EventTypeCode = "eventType"
            };
            var eventContext = new EventContext(testEvent, new TestState
            {
                Identity = actorIdentity
            });

            mocker.Mock <IClaptrapDesignStore>()
            .Setup(x => x.FindDesign(actorIdentity))
            .Returns(new ClaptrapDesign
            {
                EventHandlerDesigns = new Dictionary <string, IClaptrapEventHandlerDesign>
                {
                    {
                        testEvent.EventTypeCode, new ClaptrapEventHandlerDesign
                        {
                            EventHandlerType = typeof(TestHandler)
                        }
                    }
                }
            });

            var eventHandlerFactory = mocker.Create <DesignBaseEventHandlerFactory>();
            var eventHandler        = eventHandlerFactory.Create(eventContext);

            eventHandler.Should().NotBeNull();
        }
 public void NotFound()
 {
     using var mocker = AutoMockHelper.Create();
     var claptrapDesignStore = mocker.Create<ClaptrapDesignStore>();
     var actorIdentity = new TestClaptrapIdentity("123", "testCode");
     Assert.Throws<ClaptrapDesignNotFoundException>(() =>
         claptrapDesignStore.FindDesign(actorIdentity));
 }
 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 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();
 }
        public void NotFound()
        {
            using var mocker = AutoMockHelper.Create();
            var actorIdentity = new TestClaptrapIdentity(Guid.NewGuid().ToString(), "typeCode");
            var testEvent     = new TestEvent
            {
                EventTypeCode = "eventType"
            };
            var eventContext = new EventContext(testEvent, new TestState
            {
                Identity = actorIdentity
            });

            mocker.Mock <IClaptrapDesignStore>()
            .Setup(x => x.FindDesign(actorIdentity))
            .Returns(new ClaptrapDesign
            {
                EventHandlerDesigns = new Dictionary <string, IClaptrapEventHandlerDesign>()
            });

            var eventHandlerFactory = mocker.Create <DesignBaseEventHandlerFactory>();

            Assert.Throws <EventHandlerNotFoundException>(() => { eventHandlerFactory.Create(eventContext); });
        }