public async Task Should_raise_error_when_toggling_an_nonexisting_feature_as_active() { var application = new Application("App01", "0.1"); var feature = new Feature("isBlueButtonActive", false); var dto = new ApplicationFeatureDTO(feature, application, true); await _applicationFeatureDomainService.TogleApplicationFeature(dto); await _mediator.Received(1).Publish(Arg.Is <ErrorNotification>(d => d.Error.Equals(DomainMessageError.NonExistentFeature))); }
public async Task Should_toggle_feature_as_active() { var application = new Application("App01", "0.1"); var feature = new Feature("isBlueButtonActive", false); var dto = new ApplicationFeatureDTO(feature, application, true); var applicationFeature = new ApplicationFeature(feature, application, false); _applicationFeatureRepository.GetAsync(application.Id, feature.Id).Returns(applicationFeature); await _applicationFeatureDomainService.TogleApplicationFeature(dto); applicationFeature.IsActive.Should().BeTrue(); }
public async Task Should_should_raise_error_if_feature_is_null_on_adding_application_feature() { var application = new Application("App01", "0.1"); var dto = new ApplicationFeatureDTO(null, application, false); var appFeature = await _applicationFeatureDomainService.Add(dto); using (new AssertionScope()) { appFeature.Should().BeNull(); _applicationFeatureRepository.Received(0).Add(appFeature); dto.ValidationResult.Errors.Should().NotBeEmpty(); dto.ValidationResult.Errors.Any(d => d.ErrorMessage == DomainMessageError.FeatureCannotBeNull); await _mediator.Received(1).Publish(Arg.Is <ErrorNotification>(d => d.Error.Equals(DomainMessageError.FeatureCannotBeNull))); } }
public async Task TogleApplicationFeature(ApplicationFeatureDTO applicationFeatureDTO) { if (!applicationFeatureDTO.IsValid()) { return; } var existingFeature = await _applicationFeatureRepository.GetAsync(applicationFeatureDTO.Application.Id, applicationFeatureDTO.Feature.Id); if (existingFeature != null) { UpdateApplicationFeature(existingFeature, applicationFeatureDTO); } else { await NotifyError(DomainMessageError.NonExistentFeature); } }
public async Task Should_should_raise_error_if_both_application_and_feature_are_null_on_adding_application_feature() { var dto = new ApplicationFeatureDTO(null, null, false); var appFeature = await _applicationFeatureDomainService.Add(dto); using (new AssertionScope()) { var errorMessages = new string[] { DomainMessageError.ApplicationCannotBeNull, DomainMessageError.FeatureCannotBeNull }; appFeature.Should().BeNull(); _applicationFeatureRepository.Received(0).Add(appFeature); dto.ValidationResult.Errors.Should().HaveCount(2); dto.ValidationResult.Errors.Any(d => errorMessages.Contains(d.ErrorMessage)); await _mediator.Received(1).Publish(Arg.Is <ErrorNotification>(d => d.Error.Equals(DomainMessageError.ApplicationCannotBeNull))); await _mediator.Received(1).Publish(Arg.Is <ErrorNotification>(d => d.Error.Equals(DomainMessageError.FeatureCannotBeNull))); } }
public async Task Should_add_application_feature() { var application = new Application("App01", "0.1"); var feature = new Feature("isBlueButtonActive", true); var dto = new ApplicationFeatureDTO(feature, application, false); var appFeature = await _applicationFeatureDomainService.Add(dto); using (new AssertionScope()) { _applicationFeatureRepository.Received(1).Add(appFeature); appFeature.Application.Name.Should().Be("App01"); appFeature.Application.Version.Should().Be("0.1"); appFeature.Feature.Name.Should().Be("isBlueButtonActive"); appFeature.Feature.IsActive.Should().Be(true); appFeature.IsActive.Should().Be(false); } }
public async Task Should_update_feature_if_there_is_an_existing_feature_for_the_provided_application() { var application = new Application("App01", "0.1"); var feature = new Feature("isBlueButtonActive", true); var dto = new ApplicationFeatureDTO(feature, application, false); var applicationFeature = new ApplicationFeature(feature, application, true); _applicationFeatureRepository.GetAsync(application.Id, feature.Id).Returns(applicationFeature); var appFeature = await _applicationFeatureDomainService.Add(dto); using (new AssertionScope()) { _applicationFeatureRepository.Received(0).Add(appFeature); appFeature.Application.Name.Should().Be("App01"); appFeature.Application.Version.Should().Be("0.1"); appFeature.Feature.Name.Should().Be("isBlueButtonActive"); appFeature.Feature.IsActive.Should().Be(true); appFeature.IsActive.Should().Be(false); } }
public async Task <ApplicationFeature> Add(ApplicationFeatureDTO applicationFeatureDTO) { if (!applicationFeatureDTO.IsValid()) { await NotifyValidationErrors(applicationFeatureDTO); return(null); } var existingFeature = await _applicationFeatureRepository.GetAsync(applicationFeatureDTO.Application.Id, applicationFeatureDTO.Feature.Id); if (existingFeature != null) { return(UpdateApplicationFeature(existingFeature, applicationFeatureDTO)); } var applicationFeature = new ApplicationFeature(applicationFeatureDTO.Feature, applicationFeatureDTO.Application, applicationFeatureDTO.IsActive); _applicationFeatureRepository.Add(applicationFeature); return(applicationFeature); }
private static ApplicationFeature UpdateApplicationFeature(ApplicationFeature existingFeature, ApplicationFeatureDTO applicationFeatureDTO) { if (applicationFeatureDTO.IsActive == existingFeature.IsActive) { return(existingFeature); } if (applicationFeatureDTO.IsActive) { existingFeature.Enable(); } else { existingFeature.Disable(); } return(existingFeature); }