Commit e9f1a8d8 authored by yangxiaodong's avatar yangxiaodong

refactor

parent 00bddbd4
using System; using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Xunit; using Xunit;
...@@ -11,18 +13,18 @@ namespace Cap.Consistency.Test ...@@ -11,18 +13,18 @@ namespace Cap.Consistency.Test
[Fact] [Fact]
public void CanOverrideMessageStore() { public void CanOverrideMessageStore() {
var services = new ServiceCollection(); var services = new ServiceCollection();
services.AddConsistency<TestConsistencyMessage>().AddMessageStore<MyUberThingy>(); services.AddConsistency().AddMessageStore<MyUberThingy>();
var thingy = services.BuildServiceProvider().GetRequiredService<IConsistencyMessageStore<TestConsistencyMessage>>() as MyUberThingy; var thingy = services.BuildServiceProvider().GetRequiredService<IConsistencyMessageStore>() as MyUberThingy;
Assert.NotNull(thingy); Assert.NotNull(thingy);
} }
private class MyUberThingy : IConsistencyMessageStore<TestConsistencyMessage> private class MyUberThingy : IConsistencyMessageStore
{ {
public Task<OperateResult> CreateAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<OperateResult> DeleteAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
...@@ -30,15 +32,19 @@ namespace Cap.Consistency.Test ...@@ -30,15 +32,19 @@ namespace Cap.Consistency.Test
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<TestConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) { public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<string> GetMessageIdAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<OperateResult> UpdateAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException();
}
public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Cap.Consistency.Infrastructure; using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
...@@ -15,13 +16,13 @@ namespace Cap.Consistency.Test ...@@ -15,13 +16,13 @@ namespace Cap.Consistency.Test
[Fact] [Fact]
public void EnsureDefaultServicesDefaultsWithStoreWorks() { public void EnsureDefaultServicesDefaultsWithStoreWorks() {
var services = new ServiceCollection() var services = new ServiceCollection()
.AddTransient<IConsistencyMessageStore<TestConsistencyMessage>, NoopMessageStore>(); .AddTransient<IConsistencyMessageStore, NoopMessageStore>();
services.AddConsistency<TestConsistencyMessage>(); services.AddConsistency();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddLogging(); services.AddLogging();
var manager = services.BuildServiceProvider() var manager = services.BuildServiceProvider()
.GetRequiredService<ConsistencyMessageManager<TestConsistencyMessage>>(); .GetRequiredService<ConsistencyMessageManager>();
Assert.NotNull(manager); Assert.NotNull(manager);
} }
...@@ -29,31 +30,31 @@ namespace Cap.Consistency.Test ...@@ -29,31 +30,31 @@ namespace Cap.Consistency.Test
[Fact] [Fact]
public void AddMessageManagerWithCustomerMannagerReturnsSameInstance() { public void AddMessageManagerWithCustomerMannagerReturnsSameInstance() {
var services = new ServiceCollection() var services = new ServiceCollection()
.AddTransient<IConsistencyMessageStore<TestConsistencyMessage>, NoopMessageStore>() .AddTransient<IConsistencyMessageStore, NoopMessageStore>()
.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); .AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services.AddLogging(); services.AddLogging();
services.AddConsistency<TestConsistencyMessage>() //services.AddConsistency()
.AddConsistencyMessageManager<CustomMessageManager>(); // .AddConsistencyMessageManager<CustomMessageManager>();
var provider = services.BuildServiceProvider(); var provider = services.BuildServiceProvider();
Assert.Same(provider.GetRequiredService<ConsistencyMessageManager<TestConsistencyMessage>>(), Assert.Same(provider.GetRequiredService<ConsistencyMessageManager>(),
provider.GetRequiredService<CustomMessageManager>()); provider.GetRequiredService<CustomMessageManager>());
} }
public class CustomMessageManager : ConsistencyMessageManager<TestConsistencyMessage> public class CustomMessageManager : ConsistencyMessageManager
{ {
public CustomMessageManager() public CustomMessageManager()
: base(new Mock<IConsistencyMessageStore<TestConsistencyMessage>>().Object, null, null) { : base(new Mock<IConsistencyMessageStore>().Object, null, null) {
} }
} }
[Fact] [Fact]
public async Task CreateCallsStore() { public async Task CreateCallsStore() {
var store = new Mock<IConsistencyMessageStore<TestConsistencyMessage>>(); var store = new Mock<IConsistencyMessageStore>();
var message = new TestConsistencyMessage { SendTime = DateTime.Now }; var message = new ConsistencyMessage { SendTime = DateTime.Now };
store.Setup(x => x.CreateAsync(message, CancellationToken.None)).ReturnsAsync(OperateResult.Success).Verifiable(); store.Setup(x => x.CreateAsync(message, CancellationToken.None)).ReturnsAsync(OperateResult.Success).Verifiable();
var messageManager = TestConsistencyMessageManager(store.Object); var messageManager = TestConsistencyMessageManager(store.Object);
...@@ -63,11 +64,11 @@ namespace Cap.Consistency.Test ...@@ -63,11 +64,11 @@ namespace Cap.Consistency.Test
store.VerifyAll(); store.VerifyAll();
} }
public ConsistencyMessageManager<TMessage> TestConsistencyMessageManager<TMessage>(IConsistencyMessageStore<TMessage> store = null) public ConsistencyMessageManager TestConsistencyMessageManager(IConsistencyMessageStore store = null)
where TMessage : ConsistencyMessage { {
store = store ?? new Mock<IConsistencyMessageStore<TMessage>>().Object; store = store ?? new Mock<IConsistencyMessageStore>().Object;
var mockLogger = new Mock<ILogger<ConsistencyMessageManager<TMessage>>>().Object; var mockLogger = new Mock<ILogger<ConsistencyMessageManager>>().Object;
var manager = new ConsistencyMessageManager<TMessage>(store, null, mockLogger); var manager = new ConsistencyMessageManager(store, null, mockLogger);
return manager; return manager;
} }
} }
......
using System; using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Cap.Consistency.Infrastructure;
using Cap.Consistency.Store;
namespace Cap.Consistency.Test namespace Cap.Consistency.Test
{ {
public class NoopMessageStore : IConsistencyMessageStore<TestConsistencyMessage> public class NoopMessageStore : IConsistencyMessageStore
{ {
public Task<OperateResult> CreateAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<OperateResult> DeleteAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
...@@ -18,15 +20,19 @@ namespace Cap.Consistency.Test ...@@ -18,15 +20,19 @@ namespace Cap.Consistency.Test
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<TestConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) { public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<string> GetMessageIdAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public Task<OperateResult> UpdateAsync(TestConsistencyMessage message, CancellationToken cancellationToken) { public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException();
}
public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
throw new NotImplementedException(); throw new NotImplementedException();
} }
} }
......
using System.Linq; using System.Linq;
using Cap.Consistency.Store;
using Xunit; using Xunit;
namespace Cap.Consistency.Test namespace Cap.Consistency.Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment