public void ShouldSuccess() { // Arrange var requestName = "Handler"; string[] features = null; // Act var handlerInfo = new HandlerFeatureInfo(requestName, null); // Assert Assert.Equal(requestName, handlerInfo.Name); Assert.Equal(features, handlerInfo.Features); // Arrange var featureName = "Feature"; features = new string[] { featureName }; // Act handlerInfo = new HandlerFeatureInfo(requestName, features); // Assert Assert.NotEmpty(handlerInfo.Features); Assert.Contains(featureName, handlerInfo.Features); }
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 command = new TestCommand(); // Assert mockCommandHandler .Setup(x => x.Handle(command, It.IsAny <RequestContext>())) .ReturnsAsync(CommandResult.Success); var decodator = new FeatureManagementCommandHandlerDecorator <TestCommand>(mockCommandHandler.Object, settingsHolder, mockProvider.Object); // Act var result = await decodator.Handle(command, Helper.Context); // Assert Assert.True(result.IsSuccess); // Assert.True(Helper.Context.Headers.ContainsKey($"{FeatureHeader.Prefix}-{featureC}")); // Assert.True(Helper.Context.Headers.ContainsKey($"{FeatureHeader.Prefix}-{featureQ}")); }
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); }
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); }