Пример #1
0
        public async Task ShoulCallDecoratedHandlerIfHandlerHasNotFeature()
        {
            // Arrange
            mockProvider.Setup(x => x.GetHandlerInfo(It.IsAny <string>()))
            .Returns(default(HandlerFeatureInfo));

            var query = new TestQuery();

            // Assert
            mockHandler
            .Verify(x => x.Handle(query, It.IsAny <RequestContext>()), Times.AtMostOnce);

            var decodator = new FeatureManagementQueryHandlerDecorator <TestQuery, string>(mockHandler.Object, mockSettingsHolder.Object, mockProvider.Object);

            // Act
            await decodator.Handle(query, Helper.Context);
        }
Пример #2
0
        public async Task ShoulNotCallDecoratedHandlerIfAllFeaturesNotEnabled()
        {
            // Arrange
            var featureC    = "FeatureC";
            var featureQ    = "FeatureQ";
            var features    = new string[] { featureC, featureQ };
            var featureInfo = new HandlerFeatureInfo(typeof(TestCommand).Name, features);

            mockProvider.Setup(x => x.GetHandlerInfo(It.IsAny <string>()))
            .Returns(featureInfo);

            var settingsHolder = new SettingsHolder();

            settingsHolder.Settings = new Setting[]
            {
                new Setting
                {
                    FeatureName = featureC,
                    Enable      = false
                },
                new Setting
                {
                    FeatureName = featureQ,
                    Enable      = true
                }
            };

            var query = new TestQuery();

            // Assert
            mockHandler
            .Verify(x => x.Handle(query, It.IsAny <RequestContext>()), Times.Never);

            var decodator = new FeatureManagementQueryHandlerDecorator <TestQuery, string>(mockHandler.Object,
                                                                                           settingsHolder, mockProvider.Object);

            // Act
            var result = await decodator.Handle(query, Helper.Context);

            // Assert
            Assert.Equal(Msg.FeatureNotEnabled, result.Code);
            Assert.True(result.IsSuccess);
        }
Пример #3
0
        public async Task ShoulCallDecoratedHandlerAndAddUsedFeaturesToHeader()
        {
            // Arrange
            var featureC    = "FeatureC";
            var featureQ    = "FeatureQ";
            var features    = new string[] { featureC, featureQ };
            var featureInfo = new HandlerFeatureInfo(typeof(TestCommand).Name, features);

            mockProvider.Setup(x => x.GetHandlerInfo(It.IsAny <string>()))
            .Returns(featureInfo);

            var settingsHolder = new SettingsHolder();

            settingsHolder.Settings = new Setting[]
            {
                new Setting
                {
                    FeatureName = featureC,
                    Enable      = true
                },
                new Setting
                {
                    FeatureName = featureQ,
                    Enable      = true
                }
            };

            var query = new TestQuery();

            // Assert
            mockHandler
            .Setup(x => x.Handle(query, It.IsAny <RequestContext>()))
            .ReturnsAsync(QueryResult <string> .WithResult(""));

            var decodator = new FeatureManagementQueryHandlerDecorator <TestQuery, string>(mockHandler.Object,
                                                                                           settingsHolder, mockProvider.Object);

            // Act
            var result = await decodator.Handle(query, Helper.Context);

            // Assert
            Assert.True(result.IsSuccess);
        }