Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CAP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CAP
Commits
17b28e66
Commit
17b28e66
authored
Jun 23, 2017
by
yangxiaodong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
comment test project
parent
391adbf1
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
445 additions
and
446 deletions
+445
-446
DefaultPocoTest.cs
...p.Consistency.EntityFrameworkCore.Test/DefaultPocoTest.cs
+55
-55
MessageStoreTest.cs
....Consistency.EntityFrameworkCore.Test/MessageStoreTest.cs
+89
-89
MessageStoreWithGenericsTest.cs
....EntityFrameworkCore.Test/MessageStoreWithGenericsTest.cs
+62
-62
ConsistencyBuilderTest.cs
test/Cap.Consistency.Test/ConsistencyBuilderTest.cs
+52
-52
ConsistencyMessageManagerTest.cs
test/Cap.Consistency.Test/ConsistencyMessageManagerTest.cs
+61
-61
NoopMessageStore.cs
test/Cap.Consistency.Test/NoopMessageStore.cs
+32
-32
OperateResultTest.cs
test/Cap.Consistency.Test/OperateResultTest.cs
+0
-1
MessageManagerTestBase.cs
test/Shared/MessageManagerTestBase.cs
+94
-94
No files found.
test/Cap.Consistency.EntityFrameworkCore.Test/DefaultPocoTest.cs
View file @
17b28e66
using
System.Threading.Tasks
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
using
Microsoft.AspNetCore.Builder.Internal
;
using
Microsoft.AspNetCore.Testing.xunit
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.Extensions.DependencyInjection
;
using
Xunit
;
namespace
Cap.Consistency.EntityFrameworkCore.Test
{
public
class
DefaultPocoTest
:
IClassFixture
<
ScratchDatabaseFixture
>
{
private
readonly
ApplicationBuilder
_builder
;
public
DefaultPocoTest
(
ScratchDatabaseFixture
fixture
)
{
var
services
=
new
ServiceCollection
();
services
.
AddDbContext
<
ConsistencyDbContext
>(
o
=>
o
.
UseSqlServer
(
fixture
.
ConnectionString
))
.
AddConsistency
()
.
AddEntityFrameworkStores
<
ConsistencyDbContext
>();
services
.
AddLogging
();
var
provider
=
services
.
BuildServiceProvider
();
_builder
=
new
ApplicationBuilder
(
provider
);
using
(
var
scoped
=
provider
.
GetRequiredService
<
IServiceScopeFactory
>().
CreateScope
())
using
(
var
db
=
scoped
.
ServiceProvider
.
GetRequiredService
<
ConsistencyDbContext
>())
{
db
.
Database
.
EnsureCreated
();
}
}
[
ConditionalFact
]
[
FrameworkSkipCondition
(
RuntimeFrameworks
.
Mono
)]
[
OSSkipCondition
(
OperatingSystems
.
Linux
)]
[
OSSkipCondition
(
OperatingSystems
.
MacOSX
)]
public
async
Task
EnsureStartupUsageWorks
()
{
var
messageStore
=
_builder
.
ApplicationServices
.
GetRequiredService
<
IConsistencyMessageStore
>();
var
messageManager
=
_builder
.
ApplicationServices
.
GetRequiredService
<
ConsistencyMessageManager
>();
Assert
.
NotNull
(
messageStore
);
Assert
.
NotNull
(
messageManager
);
var
user
=
new
ConsistencyMessage
();
var
operateResult
=
await
messageManager
.
CreateAsync
(
user
);
Assert
.
True
(
operateResult
.
Succeeded
);
operateResult
=
await
messageManager
.
DeleteAsync
(
user
);
Assert
.
True
(
operateResult
.
Succeeded
);
}
}
}
\ No newline at end of file
//using System.Threading.Tasks;
//using Cap.Consistency.Infrastructure;
//using Cap.Consistency.Store;
//using Microsoft.AspNetCore.Builder.Internal;
//using Microsoft.AspNetCore.Testing.xunit;
//using Microsoft.EntityFrameworkCore;
//using Microsoft.Extensions.DependencyInjection;
//using Xunit;
//namespace Cap.Consistency.EntityFrameworkCore.Test
//{
// public class DefaultPocoTest : IClassFixture<ScratchDatabaseFixture>
// {
// private readonly ApplicationBuilder _builder;
// public DefaultPocoTest(ScratchDatabaseFixture fixture) {
// var services = new ServiceCollection();
// services
// .AddDbContext<ConsistencyDbContext>(o => o.UseSqlServer(fixture.ConnectionString))
// .AddConsistency()
// .AddEntityFrameworkStores<ConsistencyDbContext>();
// services.AddLogging();
// var provider = services.BuildServiceProvider();
// _builder = new ApplicationBuilder(provider);
// using (var scoped = provider.GetRequiredService<IServiceScopeFactory>().CreateScope())
// using (var db = scoped.ServiceProvider.GetRequiredService<ConsistencyDbContext>()) {
// db.Database.EnsureCreated();
// }
// }
// [ConditionalFact]
// [FrameworkSkipCondition(RuntimeFrameworks.Mono)]
// [OSSkipCondition(OperatingSystems.Linux)]
// [OSSkipCondition(OperatingSystems.MacOSX)]
// public async Task EnsureStartupUsageWorks() {
// var messageStore = _builder.ApplicationServices.GetRequiredService<IConsistencyMessageStore>();
// var messageManager = _builder.ApplicationServices.GetRequiredService<IConsistencyMessageStore >();
// Assert.NotNull(messageStore);
// Assert.NotNull(messageManager);
// var user = new ConsistencyMessage();
// var operateResult = await messageManager.CreateAsync(user);
// Assert.True(operateResult.Succeeded);
// operateResult = await messageManager.DeleteAsync(user);
// Assert.True(operateResult.Succeeded);
// }
// }
//}
\ No newline at end of file
test/Cap.Consistency.EntityFrameworkCore.Test/MessageStoreTest.cs
View file @
17b28e66
using
System
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
using
Cap.Consistency.Test
;
using
Microsoft.AspNetCore.Testing
;
using
Microsoft.AspNetCore.Testing.xunit
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.Extensions.DependencyInjection
;
using
Xunit
;
//
using System;
//
using System.Linq;
//
using System.Threading.Tasks;
//
using Cap.Consistency.Infrastructure;
//
using Cap.Consistency.Store;
//
using Cap.Consistency.Test;
//
using Microsoft.AspNetCore.Testing;
//
using Microsoft.AspNetCore.Testing.xunit;
//
using Microsoft.EntityFrameworkCore;
//
using Microsoft.Extensions.DependencyInjection;
//
using Xunit;
namespace
Cap.Consistency.EntityFrameworkCore.Test
{
public
class
MessageStoreTest
:
MessageManagerTestBase
<
ConsistencyMessage
>,
IClassFixture
<
ScratchDatabaseFixture
>
{
private
readonly
ScratchDatabaseFixture
_fixture
;
//
namespace Cap.Consistency.EntityFrameworkCore.Test
//
{
//
public class MessageStoreTest : MessageManagerTestBase<ConsistencyMessage>, IClassFixture<ScratchDatabaseFixture>
//
{
//
private readonly ScratchDatabaseFixture _fixture;
public
MessageStoreTest
(
ScratchDatabaseFixture
fixture
)
{
_fixture
=
fixture
;
}
//
public MessageStoreTest(ScratchDatabaseFixture fixture) {
//
_fixture = fixture;
//
}
protected
override
bool
ShouldSkipDbTests
()
{
return
TestPlatformHelper
.
IsMono
||
!
TestPlatformHelper
.
IsWindows
;
}
//
protected override bool ShouldSkipDbTests() {
//
return TestPlatformHelper.IsMono || !TestPlatformHelper.IsWindows;
//
}
public
class
ApplicationDbContext
:
ConsistencyDbContext
{
public
ApplicationDbContext
(
DbContextOptions
<
ApplicationDbContext
>
options
)
:
base
(
options
)
{
}
}
//
public class ApplicationDbContext : ConsistencyDbContext
//
{
//
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) {
//
}
//
}
[
ConditionalFact
]
[
FrameworkSkipCondition
(
RuntimeFrameworks
.
Mono
)]
[
OSSkipCondition
(
OperatingSystems
.
Linux
)]
[
OSSkipCondition
(
OperatingSystems
.
MacOSX
)]
public
void
CanCreateMessageUsingEF
()
{
using
(
var
db
=
CreateContext
())
{
var
guid
=
Guid
.
NewGuid
().
ToString
();
db
.
Messages
.
Add
(
new
ConsistencyMessage
{
Id
=
guid
,
Payload
=
"this is message body"
,
Status
=
MessageStatus
.
WaitForSend
,
SendTime
=
DateTime
.
Now
,
UpdateTime
=
DateTime
.
Now
});
//
[ConditionalFact]
//
[FrameworkSkipCondition(RuntimeFrameworks.Mono)]
//
[OSSkipCondition(OperatingSystems.Linux)]
//
[OSSkipCondition(OperatingSystems.MacOSX)]
//
public void CanCreateMessageUsingEF() {
//
using (var db = CreateContext()) {
//
var guid = Guid.NewGuid().ToString();
//
db.Messages.Add(new ConsistencyMessage {
//
Id = guid,
//
Payload = "this is message body",
//
Status = MessageStatus.WaitForSend,
//
SendTime = DateTime.Now,
//
UpdateTime = DateTime.Now
//
});
db
.
SaveChanges
();
Assert
.
True
(
db
.
Messages
.
Any
(
u
=>
u
.
Id
==
guid
));
Assert
.
NotNull
(
db
.
Messages
.
FirstOrDefault
(
u
=>
u
.
Status
==
MessageStatus
.
WaitForSend
));
}
}
//
db.SaveChanges();
//
Assert.True(db.Messages.Any(u => u.Id == guid));
//
Assert.NotNull(db.Messages.FirstOrDefault(u => u.Status == MessageStatus.WaitForSend));
//
}
//
}
[
ConditionalFact
]
[
FrameworkSkipCondition
(
RuntimeFrameworks
.
Mono
)]
[
OSSkipCondition
(
OperatingSystems
.
Linux
)]
[
OSSkipCondition
(
OperatingSystems
.
MacOSX
)]
public
async
Task
CanCreateUsingManager
()
{
var
manager
=
CreateManager
();
var
guid
=
Guid
.
NewGuid
().
ToString
();
var
message
=
new
ConsistencyMessage
{
Id
=
guid
,
Payload
=
"this is message body"
,
Status
=
MessageStatus
.
WaitForSend
,
SendTime
=
DateTime
.
Now
,
UpdateTime
=
DateTime
.
Now
};
//
[ConditionalFact]
//
[FrameworkSkipCondition(RuntimeFrameworks.Mono)]
//
[OSSkipCondition(OperatingSystems.Linux)]
//
[OSSkipCondition(OperatingSystems.MacOSX)]
//
public async Task CanCreateUsingManager() {
//
var manager = CreateManager();
//
var guid = Guid.NewGuid().ToString();
//
var message = new ConsistencyMessage {
//
Id = guid,
//
Payload = "this is message body",
//
Status = MessageStatus.WaitForSend,
//
SendTime = DateTime.Now,
//
UpdateTime = DateTime.Now
//
};
var
result
=
await
manager
.
CreateAsync
(
message
);
Assert
.
NotNull
(
result
);
Assert
.
True
(
result
.
Succeeded
);
//
var result = await manager.CreateAsync(message);
//
Assert.NotNull(result);
//
Assert.True(result.Succeeded);
result
=
await
manager
.
DeleteAsync
(
message
);
Assert
.
NotNull
(
result
);
Assert
.
True
(
result
.
Succeeded
);
}
//
result = await manager.DeleteAsync(message);
//
Assert.NotNull(result);
//
Assert.True(result.Succeeded);
//
}
public
ConsistencyDbContext
CreateContext
(
bool
delete
=
false
)
{
var
db
=
DbUtil
.
Create
<
ConsistencyDbContext
>(
_fixture
.
ConnectionString
);
if
(
delete
)
{
db
.
Database
.
EnsureDeleted
();
}
db
.
Database
.
EnsureCreated
();
return
db
;
}
//
public ConsistencyDbContext CreateContext(bool delete = false) {
//
var db = DbUtil.Create<ConsistencyDbContext>(_fixture.ConnectionString);
//
if (delete) {
//
db.Database.EnsureDeleted();
//
}
//
db.Database.EnsureCreated();
//
return db;
//
}
protected
override
object
CreateTestContext
()
{
return
CreateContext
();
}
//
protected override object CreateTestContext() {
//
return CreateContext();
//
}
protected
override
ConsistencyMessage
CreateTestMessage
(
string
payload
=
""
)
{
return
new
ConsistencyMessage
{
Payload
=
payload
};
}
//
protected override ConsistencyMessage CreateTestMessage(string payload = "") {
//
return new ConsistencyMessage {
//
Payload = payload
//
};
//
}
protected
override
void
AddMessageStore
(
IServiceCollection
services
,
object
context
=
null
)
{
services
.
AddSingleton
<
IConsistencyMessageStore
>(
new
ConsistencyMessageStore
<
ConsistencyDbContext
>((
ConsistencyDbContext
)
context
));
}
}
//
protected override void AddMessageStore(IServiceCollection services, object context = null) {
//
services.AddSingleton<IConsistencyMessageStore>(new ConsistencyMessageStore<ConsistencyDbContext>((ConsistencyDbContext)context));
//
}
//
}
public
class
ApplicationMessage
:
ConsistencyMessage
{
}
}
\ No newline at end of file
// public class ApplicationMessage : ConsistencyMessage { }
//}
\ No newline at end of file
test/Cap.Consistency.EntityFrameworkCore.Test/MessageStoreWithGenericsTest.cs
View file @
17b28e66
using
System
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
using
Cap.Consistency.Test
;
using
Microsoft.AspNetCore.Testing
;
using
Microsoft.Extensions.DependencyInjection
;
using
Xunit
;
namespace
Cap.Consistency.EntityFrameworkCore.Test
{
public
class
MessageStoreWithGenericsTest
:
MessageManagerTestBase
<
MessageWithGenerics
,
string
>,
IClassFixture
<
ScratchDatabaseFixture
>
{
private
readonly
ScratchDatabaseFixture
_fixture
;
public
MessageStoreWithGenericsTest
(
ScratchDatabaseFixture
fixture
)
{
_fixture
=
fixture
;
}
protected
override
void
AddMessageStore
(
IServiceCollection
services
,
object
context
=
null
)
{
services
.
AddSingleton
<
IConsistencyMessageStore
>(
new
MessageStoreWithGenerics
((
ContextWithGenerics
)
context
));
}
protected
override
object
CreateTestContext
()
{
return
CreateContext
();
}
public
ContextWithGenerics
CreateContext
()
{
var
db
=
DbUtil
.
Create
<
ContextWithGenerics
>(
_fixture
.
ConnectionString
);
db
.
Database
.
EnsureCreated
();
return
db
;
}
protected
override
MessageWithGenerics
CreateTestMessage
(
string
payload
=
""
)
{
return
new
MessageWithGenerics
()
{
Payload
=
payload
,
SendTime
=
DateTime
.
Now
,
Status
=
MessageStatus
.
WaitForSend
,
UpdateTime
=
DateTime
.
Now
};
}
protected
override
bool
ShouldSkipDbTests
()
{
return
TestPlatformHelper
.
IsMono
||
!
TestPlatformHelper
.
IsWindows
;
}
}
public
class
MessageWithGenerics
:
ConsistencyMessage
{
}
public
class
MessageStoreWithGenerics
:
ConsistencyMessageStore
<
ContextWithGenerics
>
{
public
MessageStoreWithGenerics
(
ContextWithGenerics
context
)
:
base
(
context
)
{
}
}
public
class
ContextWithGenerics
:
ConsistencyDbContext
{
public
ContextWithGenerics
()
{
}
}
}
\ No newline at end of file
//using System;
//using Cap.Consistency.Infrastructure;
//using Cap.Consistency.Store;
//using Cap.Consistency.Test;
//using Microsoft.AspNetCore.Testing;
//using Microsoft.Extensions.DependencyInjection;
//using Xunit;
//namespace Cap.Consistency.EntityFrameworkCore.Test
//{
// public class MessageStoreWithGenericsTest : MessageManagerTestBase<MessageWithGenerics, string>, IClassFixture<ScratchDatabaseFixture>
// {
// private readonly ScratchDatabaseFixture _fixture;
// public MessageStoreWithGenericsTest(ScratchDatabaseFixture fixture) {
// _fixture = fixture;
// }
// protected override void AddMessageStore(IServiceCollection services, object context = null) {
// services.AddSingleton<IConsistencyMessageStore>(new MessageStoreWithGenerics((ContextWithGenerics)context));
// }
// protected override object CreateTestContext() {
// return CreateContext();
// }
// public ContextWithGenerics CreateContext() {
// var db = DbUtil.Create<ContextWithGenerics>(_fixture.ConnectionString);
// db.Database.EnsureCreated();
// return db;
// }
// protected override MessageWithGenerics CreateTestMessage(string payload = "") {
// return new MessageWithGenerics() {
// Payload = payload,
// SendTime = DateTime.Now,
// Status = MessageStatus.WaitForSend,
// UpdateTime = DateTime.Now
// };
// }
// protected override bool ShouldSkipDbTests() {
// return TestPlatformHelper.IsMono || !TestPlatformHelper.IsWindows;
// }
// }
// public class MessageWithGenerics : ConsistencyMessage
// {
// }
// public class MessageStoreWithGenerics : ConsistencyMessageStore<ContextWithGenerics>
// {
// public MessageStoreWithGenerics(ContextWithGenerics context) : base(context) {
// }
// }
// public class ContextWithGenerics : ConsistencyDbContext
// {
// public ContextWithGenerics() {
// }
// }
//}
\ No newline at end of file
test/Cap.Consistency.Test/ConsistencyBuilderTest.cs
View file @
17b28e66
using
System
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
using
Microsoft.Extensions.DependencyInjection
;
using
Xunit
;
namespace
Cap.Consistency.Test
{
public
class
ConsistencyBuilderTest
{
[
Fact
]
public
void
CanOverrideMessageStore
()
{
var
services
=
new
ServiceCollection
();
services
.
AddConsistency
().
AddMessageStore
<
MyUberThingy
>();
var
thingy
=
services
.
BuildServiceProvider
().
GetRequiredService
<
IConsistencyMessageStore
>()
as
MyUberThingy
;
Assert
.
NotNull
(
thingy
);
}
private
class
MyUberThingy
:
IConsistencyMessageStore
{
public
Task
<
OperateResult
>
CreateAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
public
Task
<
OperateResult
>
DeleteAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
public
void
Dispose
()
{
throw
new
NotImplementedException
();
}
public
Task
<
ConsistencyMessage
>
FindByIdAsync
(
string
messageId
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
public
Task
<
string
>
GeConsistencyMessageIdAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
public
Task
<
string
>
GetMessageIdAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
public
Task
<
OperateResult
>
UpdateAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
}
}
}
\ No newline at end of file
//using System;
//using System.Threading;
//using System.Threading.Tasks;
//using Cap.Consistency.Infrastructure;
//using Cap.Consistency.Store;
//using Microsoft.Extensions.DependencyInjection;
//using Xunit;
//namespace Cap.Consistency.Test
//{
// public class ConsistencyBuilderTest
// {
// [Fact]
// public void CanOverrideMessageStore() {
// var services = new ServiceCollection();
// services.AddConsistency().AddMessageStore<MyUberThingy>();
// var thingy = services.BuildServiceProvider().GetRequiredService<IConsistencyMessageStore>() as MyUberThingy;
// Assert.NotNull(thingy);
// }
// private class MyUberThingy : IConsistencyMessageStore
// {
// public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// public void Dispose() {
// throw new NotImplementedException();
// }
// public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// }
// }
//}
\ No newline at end of file
test/Cap.Consistency.Test/ConsistencyMessageManagerTest.cs
View file @
17b28e66
using
System
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
using
Microsoft.AspNetCore.Http
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Logging
;
using
Moq
;
using
Xunit
;
//
using System;
//
using System.Threading;
//
using System.Threading.Tasks;
//
using Cap.Consistency.Infrastructure;
//
using Cap.Consistency.Store;
//
using Microsoft.AspNetCore.Http;
//
using Microsoft.Extensions.DependencyInjection;
//
using Microsoft.Extensions.Logging;
//
using Moq;
//
using Xunit;
namespace
Cap.Consistency.Test
{
public
class
ConsistencyMessageManagerTest
{
[
Fact
]
public
void
EnsureDefaultServicesDefaultsWithStoreWorks
()
{
var
services
=
new
ServiceCollection
()
.
AddTransient
<
IConsistencyMessageStore
,
NoopMessageStore
>();
services
.
AddConsistency
();
services
.
AddSingleton
<
IHttpContextAccessor
,
HttpContextAccessor
>();
services
.
AddLogging
();
//
namespace Cap.Consistency.Test
//
{
//
public class ConsistencyMessageManagerTest
//
{
//
[Fact]
//
public void EnsureDefaultServicesDefaultsWithStoreWorks() {
//
var services = new ServiceCollection()
//
.AddTransient<IConsistencyMessageStore, NoopMessageStore>();
//
services.AddConsistency();
//
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
//
services.AddLogging();
var
manager
=
services
.
BuildServiceProvider
()
.
GetRequiredService
<
ConsistencyMessageManager
>();
//
var manager = services.BuildServiceProvider()
// .GetRequiredService<IConsistencyMessageStore
>();
Assert
.
NotNull
(
manager
);
}
//
Assert.NotNull(manager);
//
}
[
Fact
]
public
void
AddMessageManagerWithCustomerMannagerReturnsSameInstance
()
{
var
services
=
new
ServiceCollection
()
.
AddTransient
<
IConsistencyMessageStore
,
NoopMessageStore
>()
.
AddSingleton
<
IHttpContextAccessor
,
HttpContextAccessor
>();
//
[Fact]
//
public void AddMessageManagerWithCustomerMannagerReturnsSameInstance() {
//
var services = new ServiceCollection()
//
.AddTransient<IConsistencyMessageStore, NoopMessageStore>()
//
.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
services
.
AddLogging
();
//
services.AddLogging();
//services.AddConsistency()
// .AddConsistencyMessageManager<CustomMessageManager>();
//
//services.AddConsistency()
//
// .AddConsistencyMessageManager<CustomMessageManager>();
var
provider
=
services
.
BuildServiceProvider
();
//
var provider = services.BuildServiceProvider();
Assert
.
Same
(
provider
.
GetRequiredService
<
ConsistencyMessageManager
>(),
provider
.
GetRequiredService
<
CustomMessageManager
>());
}
// Assert.Same(provider.GetRequiredService<IConsistencyMessageStore
>(),
//
provider.GetRequiredService<CustomMessageManager>());
//
}
public
class
CustomMessageManager
:
ConsistencyMessageManager
{
public
CustomMessageManager
()
:
base
(
new
Mock
<
IConsistencyMessageStore
>().
Object
,
null
,
null
)
{
}
}
// public class CustomMessageManager : IConsistencyMessageStore
//
{
//
public CustomMessageManager()
//
: base(new Mock<IConsistencyMessageStore>().Object, null, null) {
//
}
//
}
[
Fact
]
public
async
Task
CreateCallsStore
()
{
var
store
=
new
Mock
<
IConsistencyMessageStore
>();
var
message
=
new
ConsistencyMessage
{
SendTime
=
DateTime
.
Now
};
store
.
Setup
(
x
=>
x
.
CreateAsync
(
message
,
CancellationToken
.
None
)).
ReturnsAsync
(
OperateResult
.
Success
).
Verifiable
();
var
messageManager
=
TestConsistencyMessageManager
(
store
.
Object
);
//
[Fact]
//
public async Task CreateCallsStore() {
//
var store = new Mock<IConsistencyMessageStore>();
//
var message = new ConsistencyMessage { SendTime = DateTime.Now };
//
store.Setup(x => x.CreateAsync(message, CancellationToken.None)).ReturnsAsync(OperateResult.Success).Verifiable();
//
var messageManager = TestConsistencyMessageManager(store.Object);
var
result
=
await
messageManager
.
CreateAsync
(
message
);
//
var result = await messageManager.CreateAsync(message);
Assert
.
True
(
result
.
Succeeded
);
store
.
VerifyAll
();
}
//
Assert.True(result.Succeeded);
//
store.VerifyAll();
//
}
public
ConsistencyMessageManager
TestConsistencyMessageManager
(
IConsistencyMessageStore
store
=
null
)
{
store
=
store
??
new
Mock
<
IConsistencyMessageStore
>().
Object
;
var
mockLogger
=
new
Mock
<
ILogger
<
ConsistencyMessageManager
>>().
Object
;
var
manager
=
new
ConsistencyMessageManager
(
store
,
null
,
mockLogger
);
return
manager
;
}
}
}
\ No newline at end of file
// public IConsistencyMessageStore TestConsistencyMessageManager(IConsistencyMessageStore store = null) {
// store = store ?? new Mock<IConsistencyMessageStore>().Object;
// var mockLogger = new Mock<ILogger<IConsistencyMessageStore >>().Object;
// var manager = new IConsistencyMessageStore (store, null, mockLogger);
// return manager;
// }
// }
//}
\ No newline at end of file
test/Cap.Consistency.Test/NoopMessageStore.cs
View file @
17b28e66
using
System
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
//
using System;
//
using System.Threading;
//
using System.Threading.Tasks;
//
using Cap.Consistency.Infrastructure;
//
using Cap.Consistency.Store;
namespace
Cap.Consistency.Test
{
public
class
NoopMessageStore
:
IConsistencyMessageStore
{
public
Task
<
OperateResult
>
CreateAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
//
namespace Cap.Consistency.Test
//
{
//
public class NoopMessageStore : IConsistencyMessageStore
//
{
//
public Task<OperateResult> CreateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
//
throw new NotImplementedException();
//
}
public
Task
<
OperateResult
>
DeleteAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
//
public Task<OperateResult> DeleteAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
//
throw new NotImplementedException();
//
}
public
void
Dispose
()
{
throw
new
NotImplementedException
();
}
//
public void Dispose() {
//
throw new NotImplementedException();
//
}
public
Task
<
ConsistencyMessage
>
FindByIdAsync
(
string
messageId
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
//
public Task<ConsistencyMessage> FindByIdAsync(string messageId, CancellationToken cancellationToken) {
//
throw new NotImplementedException();
//
}
public
Task
<
string
>
GeConsistencyMessageIdAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
//
public Task<string> GeConsistencyMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
//
throw new NotImplementedException();
//
}
public
Task
<
string
>
GetMessageIdAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
//
public Task<string> GetMessageIdAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
//
throw new NotImplementedException();
//
}
public
Task
<
OperateResult
>
UpdateAsync
(
ConsistencyMessage
message
,
CancellationToken
cancellationToken
)
{
throw
new
NotImplementedException
();
}
}
}
\ No newline at end of file
// public Task<OperateResult> UpdateAsync(ConsistencyMessage message, CancellationToken cancellationToken) {
// throw new NotImplementedException();
// }
// }
//}
\ No newline at end of file
test/Cap.Consistency.Test/OperateResultTest.cs
View file @
17b28e66
using
System.Linq
;
using
Cap.Consistency.Store
;
using
Xunit
;
namespace
Cap.Consistency.Test
...
...
test/Shared/MessageManagerTestBase.cs
View file @
17b28e66
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Linq.Expressions
;
using
System.Security.Claims
;
using
System.Threading.Tasks
;
using
Cap.Consistency.Infrastructure
;
using
Cap.Consistency.Store
;
using
Microsoft.AspNetCore.Builder
;
using
Microsoft.AspNetCore.Http
;
using
Microsoft.Extensions.DependencyInjection
;
using
Microsoft.Extensions.Logging
;
using
Xunit
;
namespace
Cap.Consistency.Test
{
public
abstract
class
MessageManagerTestBase
<
TMessage
>
:
MessageManagerTestBase
<
TMessage
,
string
>
where
TMessage
:
ConsistencyMessage
{
}
public
abstract
class
MessageManagerTestBase
<
TMessage
,
TKey
>
where
TMessage
:
ConsistencyMessage
where
TKey
:
IEquatable
<
TKey
>
{
private
const
string
NullValue
=
"(null)"
;
protected
virtual
bool
ShouldSkipDbTests
()
{
return
false
;
}
protected
virtual
void
SetupMessageServices
(
IServiceCollection
services
,
object
context
=
null
)
{
services
.
AddSingleton
<
IHttpContextAccessor
,
HttpContextAccessor
>();
services
.
AddConsistency
();
AddMessageStore
(
services
,
context
);
services
.
AddSingleton
<
ILogger
<
ConsistencyMessageManager
>>(
new
TestLogger
<
ConsistencyMessageManager
>());
}
protected
virtual
ConsistencyMessageManager
CreateManager
(
object
context
=
null
,
IServiceCollection
services
=
null
,
Action
<
IServiceCollection
>
configureServices
=
null
)
{
if
(
services
==
null
)
{
services
=
new
ServiceCollection
();
}
if
(
context
==
null
)
{
context
=
CreateTestContext
();
}
SetupMessageServices
(
services
,
context
);
configureServices
?.
Invoke
(
services
);
return
services
.
BuildServiceProvider
().
GetService
<
ConsistencyMessageManager
>();
}
protected
abstract
object
CreateTestContext
();
protected
abstract
TMessage
CreateTestMessage
(
string
payload
=
""
);
protected
abstract
void
AddMessageStore
(
IServiceCollection
services
,
object
context
=
null
);
[
Fact
]
public
async
Task
CanDeleteMessage
()
{
if
(
ShouldSkipDbTests
())
{
return
;
}
var
manager
=
CreateManager
();
var
message
=
CreateTestMessage
();
var
operateResult
=
await
manager
.
CreateAsync
(
message
);
Assert
.
NotNull
(
operateResult
);
Assert
.
True
(
operateResult
.
Succeeded
);
var
messageId
=
await
manager
.
GeConsistencyMessageIdAsync
(
message
);
operateResult
=
await
manager
.
DeleteAsync
(
message
);
Assert
.
Null
(
await
manager
.
FindByIdAsync
(
messageId
));
}
[
Fact
]
public
async
Task
CanFindById
()
{
if
(
ShouldSkipDbTests
())
{
return
;
}
var
manager
=
CreateManager
();
var
message
=
CreateTestMessage
();
var
operateResult
=
await
manager
.
CreateAsync
(
message
);
Assert
.
NotNull
(
operateResult
);
Assert
.
True
(
operateResult
.
Succeeded
);
var
messageId
=
await
manager
.
GeConsistencyMessageIdAsync
(
message
);
Assert
.
NotNull
(
await
manager
.
FindByIdAsync
(
messageId
));
}
}
}
\ No newline at end of file
//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Linq.Expressions;
//using System.Security.Claims;
//using System.Threading.Tasks;
//using Cap.Consistency.Infrastructure;
//using Cap.Consistency.Store;
//using Microsoft.AspNetCore.Builder;
//using Microsoft.AspNetCore.Http;
//using Microsoft.Extensions.DependencyInjection;
//using Microsoft.Extensions.Logging;
//using Xunit;
//namespace Cap.Consistency.Test
//{
// public abstract class MessageManagerTestBase<TMessage> : MessageManagerTestBase<TMessage, string>
// where TMessage : ConsistencyMessage
// {
// }
// public abstract class MessageManagerTestBase<TMessage, TKey>
// where TMessage : ConsistencyMessage
// where TKey : IEquatable<TKey>
// {
// private const string NullValue = "(null)";
// protected virtual bool ShouldSkipDbTests() {
// return false;
// }
// protected virtual void SetupMessageServices(IServiceCollection services, object context = null) {
// services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
// services.AddConsistency();
// AddMessageStore(services, context);
// services.AddSingleton<ILogger<IConsistencyMessageStore >>(new TestLogger<IConsistencyMessageStore >());
// }
// protected virtual IConsistencyMessageStore CreateManager(object context = null, IServiceCollection services = null, Action<IServiceCollection> configureServices = null) {
// if (services == null) {
// services = new ServiceCollection();
// }
// if (context == null) {
// context = CreateTestContext();
// }
// SetupMessageServices(services, context);
// configureServices?.Invoke(services);
// return services.BuildServiceProvider().GetService<IConsistencyMessageStore >();
// }
// protected abstract object CreateTestContext();
// protected abstract TMessage CreateTestMessage(string payload = "");
// protected abstract void AddMessageStore(IServiceCollection services, object context = null);
// [Fact]
// public async Task CanDeleteMessage() {
// if (ShouldSkipDbTests()) {
// return;
// }
// var manager = CreateManager();
// var message = CreateTestMessage();
// var operateResult = await manager.CreateAsync(message);
// Assert.NotNull(operateResult);
// Assert.True(operateResult.Succeeded);
// var messageId = await manager.GeConsistencyMessageIdAsync(message);
// operateResult = await manager.DeleteAsync(message);
// Assert.Null(await manager.FindByIdAsync(messageId));
// }
// [Fact]
// public async Task CanFindById() {
// if (ShouldSkipDbTests()) {
// return;
// }
// var manager = CreateManager();
// var message = CreateTestMessage();
// var operateResult = await manager.CreateAsync(message);
// Assert.NotNull(operateResult);
// Assert.True(operateResult.Succeeded);
// var messageId = await manager.GeConsistencyMessageIdAsync(message);
// Assert.NotNull(await manager.FindByIdAsync(messageId));
// }
// }
//}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment