using System; using System.Data; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Xunit; namespace DotNetCore.CAP.Test { public class CapBuilderTest { [Fact] public void CanCreateInstanceAndGetService() { var services = new ServiceCollection(); services.AddSingleton(); var builder = new CapBuilder(services); Assert.NotNull(builder); var count = builder.Services.Count; Assert.Equal(1, count); var provider = services.BuildServiceProvider(); var capPublisher = provider.GetService(); Assert.NotNull(capPublisher); } [Fact] public void CanAddCapService() { var services = new ServiceCollection(); services.AddCap(x => { }); var builder = services.BuildServiceProvider(); var markService = builder.GetService(); Assert.NotNull(markService); } [Fact] public void CanOverridePublishService() { var services = new ServiceCollection(); services.AddCap(x => { }).AddProducerService(); var thingy = services.BuildServiceProvider() .GetRequiredService() as MyProducerService; Assert.NotNull(thingy); } [Fact] public void CanResolveCapOptions() { var services = new ServiceCollection(); services.AddCap(x => { }); var builder = services.BuildServiceProvider(); var capOptions = builder.GetService(); Assert.NotNull(capOptions); } private class MyProducerService : ICapPublisher { public void Publish(string name, T contentObj, string callbackName = null) { throw new NotImplementedException(); } public void Publish(string name, T contentObj, IDbConnection dbConnection, string callbackName = null, IDbTransaction dbTransaction = null) { throw new NotImplementedException(); } public Task PublishAsync(string topic, string content) { throw new NotImplementedException(); } public Task PublishAsync(string topic, T contentObj) { throw new NotImplementedException(); } public Task PublishAsync(string topic, string content, IDbConnection dbConnection) { throw new NotImplementedException(); } public Task PublishAsync(string topic, string content, IDbConnection dbConnection, IDbTransaction dbTransaction) { throw new NotImplementedException(); } public Task PublishAsync(string name, T contentObj, IDbConnection dbConnection, IDbTransaction dbTransaction = null) { throw new NotImplementedException(); } public Task PublishAsync(string name, T contentObj, string callbackName = null) { throw new NotImplementedException(); } public Task PublishAsync(string name, T contentObj, IDbConnection dbConnection, string callbackName = null, IDbTransaction dbTransaction = null) { throw new NotImplementedException(); } } } }