public async Task MessageAdapter_WhenFileOutputTargetIsSpecified_ShouldCallFileCommandHandler() { var settingsMock = Substitute.For <ISettings>(); var message = _fixture.Create <MessageResponse>(); var persistenceFactory = new PersistenceCommandFactory(); var fileHandlerMock = Substitute.For <ICommandHandler>(); persistenceFactory.RegisterCommand("file", () => fileHandlerMock); settingsMock .OutputTarget .Returns("file"); settingsMock .FileName .Returns("myfile.txt"); var adapter = new MessageAdapter(settingsMock, persistenceFactory); await adapter.WriteReplyAsync(message, CancellationToken.None); await fileHandlerMock .Received(1) .ProcessCommand(Arg.Any <string>()); }
public static IServiceCollection AddDataLayer(this IServiceCollection serviceCollection) { return(serviceCollection .AddSingleton <IMessageAdapter, MessageAdapter>() .AddSingleton <FileCommandHandler>() .AddSingleton(sp => { var commandFactory = new PersistenceCommandFactory(); commandFactory.RegisterCommand("file", sp.GetService <FileCommandHandler>); return commandFactory; })); }
public async Task MessageAdapter_WhenCancellationRequested_ShouldThrow() { var settingsMock = Substitute.For <ISettings>(); var persistenceFactory = new PersistenceCommandFactory(); settingsMock .TargetLanguage .Returns("RU"); var adapter = new MessageAdapter(settingsMock, persistenceFactory); var cancelledToken = new CancellationToken(true); await Assert.ThrowsAsync <OperationCanceledException>(async() => await adapter.GetMessageAsync(cancelledToken)); }
public async Task MessageAdapter_WhenLanguageIsUnexpected_ShouldReturnEnglish() { var settingsMock = Substitute.For <ISettings>(); var persistenceFactory = new PersistenceCommandFactory(); settingsMock .TargetLanguage .Returns(_fixture.Create <string>()); var adapter = new MessageAdapter(settingsMock, persistenceFactory); var message = await adapter.GetMessageAsync(CancellationToken.None); Assert.Equal("Hello World", message.Message); }
public async Task MessageAdapter_WhenLanguageIsDE_ShouldReturnMessage() { var settingsMock = Substitute.For <ISettings>(); var persistenceFactory = new PersistenceCommandFactory(); settingsMock .TargetLanguage .Returns("DE"); var adapter = new MessageAdapter(settingsMock, persistenceFactory); var message = await adapter.GetMessageAsync(CancellationToken.None); Assert.Equal("Hallo Welt", message.Message); }
public MessageAdapter(ISettings settings, PersistenceCommandFactory persistenceCommandFactory) { _settings = settings; _persistenceCommandFactory = persistenceCommandFactory; }