From ebb386b9eff5832d0714f623e90a27b4d3d8d03a Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 13:48:43 +0330 Subject: [PATCH 1/8] tests: add Evand.Application.Tests project skeleton --- .../Evand.Application.Tests.csproj | 30 +++++++++++++++++++ .../Evand.Application.Tests/UnitTest1.cs | 10 +++++++ 2 files changed, 40 insertions(+) create mode 100644 Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj create mode 100644 Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs diff --git a/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj b/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj new file mode 100644 index 00000000..4ac640d6 --- /dev/null +++ b/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj @@ -0,0 +1,30 @@ + + + + net10.0 + enable + enable + false + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs b/Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs new file mode 100644 index 00000000..9eb21c78 --- /dev/null +++ b/Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs @@ -0,0 +1,10 @@ +namespace Evand.Application.Tests; + +public class UnitTest1 +{ + [Fact] + public void Test1() + { + + } +} From d0993eab3fe451a1a471b36c438e1964e69fad07 Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 13:51:00 +0330 Subject: [PATCH 2/8] tests: add package refs (Moq, FluentAssertions, InMemory) and project references for Application tests --- .../Evand.Application.Tests.csproj | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj b/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj index 4ac640d6..fe7765d3 100644 --- a/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj +++ b/Evand-Backend/tests/Evand.Application.Tests/Evand.Application.Tests.csproj @@ -2,23 +2,16 @@ net10.0 - enable - enable false + enable - - + + - - - - - - - - + + @@ -27,4 +20,4 @@ - \ No newline at end of file + From 968de8d9b58fa8144817f1e2381bba44e05e7525 Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 13:52:32 +0330 Subject: [PATCH 3/8] tests: remove default UnitTest1 generated by xunit template --- .../tests/Evand.Application.Tests/UnitTest1.cs | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs diff --git a/Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs b/Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs deleted file mode 100644 index 9eb21c78..00000000 --- a/Evand-Backend/tests/Evand.Application.Tests/UnitTest1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Evand.Application.Tests; - -public class UnitTest1 -{ - [Fact] - public void Test1() - { - - } -} From ee7762d35bcbbf206d4f807851a7fc6124cf31e3 Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 13:59:30 +0330 Subject: [PATCH 4/8] test(event): add EventServiceTests skeleton and test method placeholder --- .../EventServiceTests.cs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs diff --git a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs new file mode 100644 index 00000000..f6ed7a4a --- /dev/null +++ b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs @@ -0,0 +1,39 @@ +using System; +using System.Threading.Tasks; +using Evand.Application.DTOs.Event; +using Evand.Application.Services; +using Evand.Domain.Entities; +using Evand.Persistence.Interfaces; +using FluentAssertions; +using Moq; +using Xunit; + +namespace Evand.Application.Tests +{ + public class EventServiceTests + { + private readonly Mock> _queryRepoMock; + private readonly Mock> _commandRepoMock; + private readonly Mock _uowMock; + private readonly EventService _service; + + public EventServiceTests() + { + _queryRepoMock = new Mock>(); + _commandRepoMock = new Mock>(); + _uowMock = new Mock(); + + _service = new EventService( + _queryRepoMock.Object, + _commandRepoMock.Object, + _uowMock.Object + ); + } + + [Fact] + public async Task AddAsync_Should_Call_CommandRepo_And_SaveChanges_And_Return_Entity() + { + // TODO: implement test (arrange/act/assert) + } + } +} \ No newline at end of file From caf22cccc0ee922e9820e9ba725cb7676f5b50eb Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 14:00:25 +0330 Subject: [PATCH 5/8] test(event): implement Arrange & Act for AddAsync unit test --- .../EventServiceTests.cs | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs index f6ed7a4a..b7f6831a 100644 --- a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs +++ b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs @@ -33,7 +33,43 @@ public EventServiceTests() [Fact] public async Task AddAsync_Should_Call_CommandRepo_And_SaveChanges_And_Return_Entity() { - // TODO: implement test (arrange/act/assert) + // Arrange + var dto = new EventAddOrUpdateDto + { + Guid = Guid.NewGuid(), + Name = "UnitTest Event", + Category = "Test", + Address = "Test Address", + StartDate = DateTime.UtcNow, + EndDate = DateTime.UtcNow.AddHours(2), + Capacity = 100, + Price = 9.99m + }; + + var createdEntity = new Event + { + Guid = dto.Guid, + Name = dto.Name, + Category = dto.Category, + Address = dto.Address, + StartDate = dto.StartDate, + EndDate = dto.EndDate, + Capacity = dto.Capacity, + Price = dto.Price + }; + + _commandRepoMock + .Setup(r => r.AddAsync(It.IsAny())) + .ReturnsAsync(createdEntity); + + _uowMock + .Setup(u => u.SaveChangesAsync(default)) + .ReturnsAsync(1); + + // Act + var result = await _service.AddAsync(dto); + + // Note: assertions will be added } } } \ No newline at end of file From 38de7667a85d9a924379a803118c876cbb94e92c Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 14:01:25 +0330 Subject: [PATCH 6/8] test(event): complete AddAsync unit test with assertions and verifications --- .../tests/Evand.Application.Tests/EventServiceTests.cs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs index b7f6831a..cb161834 100644 --- a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs +++ b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs @@ -69,7 +69,13 @@ public async Task AddAsync_Should_Call_CommandRepo_And_SaveChanges_And_Return_En // Act var result = await _service.AddAsync(dto); - // Note: assertions will be added + // Assert + result.Should().NotBeNull("service should return created entity"); + result.Should().BeEquivalentTo(createdEntity, options => options + .Excluding(e => e.Id)); + + _commandRepoMock.Verify(r => r.AddAsync(It.Is(e => e.Name == dto.Name && e.Guid == dto.Guid)), Times.Once); + _uowMock.Verify(u => u.SaveChangesAsync(default), Times.Once); } } } \ No newline at end of file From 6914a52a9e9f228550558ba2d1f5c5cc1e6f1cfd Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 15:23:45 +0330 Subject: [PATCH 7/8] Add initial Arrange and Act for GetAllAsync test --- .../EventServiceTests.cs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs index cb161834..405567ec 100644 --- a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs +++ b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs @@ -77,5 +77,23 @@ public async Task AddAsync_Should_Call_CommandRepo_And_SaveChanges_And_Return_En _commandRepoMock.Verify(r => r.AddAsync(It.Is(e => e.Name == dto.Name && e.Guid == dto.Guid)), Times.Once); _uowMock.Verify(u => u.SaveChangesAsync(default), Times.Once); } + + [Fact] + public async Task GetAllAsync_Should_Return_List_Of_Events() + { + // Arrange: Mocking data + var events = new[] + { + new Event { Guid = Guid.NewGuid(), Name = "Event 1", Category = "Test", Address = "Address 1" }, + new Event { Guid = Guid.NewGuid(), Name = "Event 2", Category = "Test", Address = "Address 2" } + }; + + _queryRepoMock + .Setup(r => r.GetAllAsync()) + .ReturnsAsync(events); + + // Act: calling service method + var result = await _service.GetAllAsync(); + } } \ No newline at end of file From edd3222ff81d5ca3d40dd5331cc50eae374d9af6 Mon Sep 17 00:00:00 2001 From: mahdiyebahmani Date: Tue, 17 Feb 2026 15:28:42 +0330 Subject: [PATCH 8/8] Add Assert and Verify for GetAllAsync test --- .../Evand.Application.Tests/EventServiceTests.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs index 405567ec..36b3097f 100644 --- a/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs +++ b/Evand-Backend/tests/Evand.Application.Tests/EventServiceTests.cs @@ -92,8 +92,16 @@ public async Task GetAllAsync_Should_Return_List_Of_Events() .Setup(r => r.GetAllAsync()) .ReturnsAsync(events); - // Act: calling service method - var result = await _service.GetAllAsync(); + // Act: calling service method + var result = await _service.GetAllAsync(); + // Assert:check result + result.Should().NotBeNull("service should return a list of events"); + result.Should().HaveCount(2, "we have set up 2 events in the mock"); + result.Should().BeEquivalentTo(events, options => options + .Excluding(e => e.Id)); + + _queryRepoMock.Verify(r => r.GetAllAsync(), Times.Once); + } } } \ No newline at end of file