public void ConvertSkippedWithMissingMessageBus(SC002PropertySchemaGenerator generator, IFileRepository fileRepository, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e) { "Given a model" .x(() => model = new AzureIntegrationServicesModel()); "And a file repository" .x(() => fileRepository = _mockFileRepository.Object); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a context" .x(() => context = new MigrationContext()); "And a generator" .x(() => generator = new SC002PropertySchemaGenerator(fileRepository, model, context, logger)); "When converting" .x(async() => e = await Record.ExceptionAsync(async() => await generator.ConvertAsync(CancellationToken.None).ConfigureAwait(false)).ConfigureAwait(false)); "Then the code should not throw an exception" .x(() => e.Should().BeNull()); "And there should be no context error" .x(() => { context.Errors.Should().BeNullOrEmpty(); }); }
public void ConvertWithMissingAppConfig(SC002PropertySchemaGenerator generator, IFileRepository fileRepository, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e) { var messageName = "testMessageName"; "Given a model" .x(() => model = new AzureIntegrationServicesModel()); "And a message with no appConfig" .x(() => { var documentMessage = new DocumentMessage { Name = messageName }; documentMessage.RoutingProperties.Add("routingPropertyKey1", "routingPropertyValue1"); var application = new Application(); application.Messages.Add(documentMessage); model.MigrationTarget.MessageBus = new MessageBus(); model.MigrationTarget.MessageBus.Applications.Add(application); }); "And a file repository" .x(() => fileRepository = _mockFileRepository.Object); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a context" .x(() => context = new MigrationContext()); "And a generator" .x(() => generator = new SC002PropertySchemaGenerator(fileRepository, model, context, logger)); "When converting" .x(async() => e = await Record.ExceptionAsync(async() => await generator.ConvertAsync(CancellationToken.None).ConfigureAwait(false)).ConfigureAwait(false)); "Then the code should not throw an exception" .x(() => e.Should().BeNull()); "And there should be a context error" .x(() => { context.Errors.Should().NotBeEmpty(); context.Errors.Should().HaveCount(1); context.Errors.First().Message.Should().Contain(ModelConstants.ResourceTypeRoutingProperties); context.Errors.First().Message.Should().Contain(messageName); }); }
public void ConstructWithNullFileRepository(SC002PropertySchemaGenerator generator, IFileRepository fileRepository, ILogger logger, IApplicationModel model, MigrationContext context, Exception e) { "Given an generator" .x(() => generator.Should().BeNull()); "And a null file repository" .x(() => fileRepository.Should().BeNull()); "And a model" .x(() => model = new AzureIntegrationServicesModel()); "And a context" .x(() => context = TestHelper.BuildContext()); "And a logger" .x(() => logger = _mockLogger.Object); "When constructing with a null file repository" .x(() => e = Record.Exception(() => new SC002PropertySchemaGenerator(fileRepository, model, context, logger))); "Then the constructor should throw an exception" .x(() => e.Should().NotBeNull().And.Subject.Should().BeOfType <ArgumentNullException>().Which.ParamName.Should().Be("fileRepository")); }
public void ConstructWithSuccess(SC002PropertySchemaGenerator generator, IFileRepository fileRepository, ILogger logger, IApplicationModel model, MigrationContext context, Exception e) { "Given an generator" .x(() => generator.Should().BeNull()); "And a file repository" .x(() => fileRepository = _mockFileRepository.Object); "And a model" .x(() => model = new AzureIntegrationServicesModel()); "And a context" .x(() => context = TestHelper.BuildContext()); "And a logger" .x(() => logger = _mockLogger.Object); "When constructing" .x(() => e = Record.Exception(() => new SC002PropertySchemaGenerator(fileRepository, model, context, logger))); "Then the constructor should NOT throw an exception" .x(() => e.Should().BeNull()); }
public void ConvertWithSuccess(SC002PropertySchemaGenerator generator, IFileRepository fileRepository, ILogger logger, MigrationContext context, AzureIntegrationServicesModel model, Exception e) { var messageName = "testMessageName"; var conversionFolder = @"c:\conversionFolder"; var templateOutputPath = "templateOutputPath"; var messageSchemaName = "testMessageSchemaName"; var generatedFileName = string.Empty; JToken generatedJson = null; "Given a model" .x(() => model = new AzureIntegrationServicesModel()); "And a message with no appConfig" .x(() => { var documentMessage = new DocumentMessage { Name = messageName, MessageSchema = new MessageSchema { Name = messageSchemaName } }; documentMessage.RoutingProperties.Add("routingPropertyKey1", "routingPropertyValue1"); documentMessage.Resources.Add(new TargetResourceTemplate { OutputPath = templateOutputPath, ResourceType = ModelConstants.ResourceTypeRoutingProperties }); var application = new Application(); application.Messages.Add(documentMessage); model.MigrationTarget.MessageBus = new MessageBus(); model.MigrationTarget.MessageBus.Applications.Add(application); }); "And a file repository" .x(() => { _mockFileRepository.Setup(f => f.WriteJsonFile( It.IsAny <string>(), It.IsAny <JToken>() )) .Callback <string, JToken>( (p1, p2) => { generatedFileName = p1; generatedJson = p2; }); fileRepository = _mockFileRepository.Object; }); "And a logger" .x(() => logger = new Mock <ILogger>().Object); "And a context" .x(() => { context = new MigrationContext { ConversionFolder = conversionFolder }; }); "And a generator" .x(() => generator = new SC002PropertySchemaGenerator(fileRepository, model, context, logger)); "When converting" .x(async() => e = await Record.ExceptionAsync(async() => await generator.ConvertAsync(CancellationToken.None).ConfigureAwait(false)).ConfigureAwait(false)); "Then the code should not throw an exception" .x(() => e.Should().BeNull()); "And there should be no context errors" .x(() => context.Errors.Should().BeNullOrEmpty()); "And the file should be generated" .x(() => { _mockFileRepository.Verify(f => f.WriteJsonFile( It.IsAny <string>(), It.IsAny <JObject>()), Times.Once); var expectedPath = Path.Combine(conversionFolder, templateOutputPath); generatedFileName.Should().StartWith(expectedPath); generatedJson.Should().NotBeNull(); }); }