Skip to content

Commit 2dccdfd

Browse files
committed
Added unit test for audited entity properties.
1 parent c126585 commit 2dccdfd

File tree

2 files changed

+73
-0
lines changed

2 files changed

+73
-0
lines changed

src/TestBase/Tests/Abp.TestBase.SampleApplication.Tests/Abp.TestBase.SampleApplication.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
</Reference>
100100
</ItemGroup>
101101
<ItemGroup>
102+
<Compile Include="Auditing\AuditedEntity_Tests.cs" />
102103
<Compile Include="Auditing\SimpleAuditing_Test.cs" />
103104
<Compile Include="ContactLists\ContactList_MultiTenancy_Tests.cs" />
104105
<Compile Include="ContactLists\Messages_MultiTenancy_Tests.cs" />
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System;
2+
using Abp.Domain.Repositories;
3+
using Abp.Timing;
4+
using Shouldly;
5+
using Xunit;
6+
7+
namespace Abp.TestBase.SampleApplication.Tests.Auditing
8+
{
9+
public class AuditedEntity_Tests: SampleApplicationTestBase
10+
{
11+
private readonly IRepository<Message> _messageRepository;
12+
13+
public AuditedEntity_Tests()
14+
{
15+
_messageRepository = Resolve<IRepository<Message>>();
16+
}
17+
18+
[Fact]
19+
public void Should_Write_Audit_Properties()
20+
{
21+
Clock.Provider = new UtcClockProvider();
22+
23+
//Arrange
24+
AbpSession.TenantId = 1;
25+
AbpSession.UserId = 2;
26+
27+
//Act: Create a new entity
28+
var createdMessage = _messageRepository.Insert(new Message(AbpSession.TenantId, "test message 1"));
29+
30+
//Assert: Check creation properties
31+
createdMessage.CreatorUserId.ShouldBe(AbpSession.UserId);
32+
createdMessage.CreationTime.ShouldBeGreaterThan(Clock.Now.Subtract(TimeSpan.FromSeconds(10)));
33+
createdMessage.CreationTime.ShouldBeLessThan(Clock.Now.Add(TimeSpan.FromSeconds(10)));
34+
35+
//Act: Select the same entity
36+
var selectedMessage = _messageRepository.Get(createdMessage.Id);
37+
38+
//Assert: Select should not change audit properties
39+
selectedMessage.ShouldBe(createdMessage); //They should be same since Entity class overrides == operator.
40+
41+
selectedMessage.CreationTime.ShouldBe(createdMessage.CreationTime);
42+
selectedMessage.CreatorUserId.ShouldBe(createdMessage.CreatorUserId);
43+
44+
selectedMessage.LastModifierUserId.ShouldBeNull();
45+
selectedMessage.LastModificationTime.ShouldBeNull();
46+
47+
selectedMessage.IsDeleted.ShouldBeFalse();
48+
selectedMessage.DeleterUserId.ShouldBeNull();
49+
selectedMessage.DeletionTime.ShouldBeNull();
50+
51+
//Act: Update the entity
52+
selectedMessage.Text = "test message 1 - updated";
53+
_messageRepository.Update(selectedMessage);
54+
55+
//Assert: Modification properties should be changed
56+
selectedMessage.LastModifierUserId.ShouldBe(AbpSession.UserId);
57+
selectedMessage.LastModificationTime.ShouldNotBeNull();
58+
selectedMessage.LastModificationTime.Value.ShouldBeGreaterThan(Clock.Now.Subtract(TimeSpan.FromSeconds(10)));
59+
selectedMessage.LastModificationTime.Value.ShouldBeLessThan(Clock.Now.Add(TimeSpan.FromSeconds(10)));
60+
61+
//Act: Delete the entity
62+
_messageRepository.Delete(selectedMessage);
63+
64+
//Assert: Deletion audit properties should be set
65+
selectedMessage.IsDeleted.ShouldBe(true);
66+
selectedMessage.DeleterUserId.ShouldBe(AbpSession.UserId);
67+
selectedMessage.DeletionTime.ShouldNotBeNull();
68+
selectedMessage.DeletionTime.Value.ShouldBeGreaterThan(Clock.Now.Subtract(TimeSpan.FromSeconds(10)));
69+
selectedMessage.DeletionTime.Value.ShouldBeLessThan(Clock.Now.Add(TimeSpan.FromSeconds(10)));
70+
}
71+
}
72+
}

0 commit comments

Comments
 (0)