Skip to content

Commit d1af3ad

Browse files
Added various missing tests and excluded mongo documents from coverage
1 parent 453bea5 commit d1af3ad

File tree

10 files changed

+99
-0
lines changed

10 files changed

+99
-0
lines changed

RecipeSocialMediaAPI.Application/Repositories/Users/IUserPersistenceRepository.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
using RecipeSocialMediaAPI.Domain.Models.Users;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Application.Repositories.Users;
45

56
public interface IUserPersistenceRepository
67
{
8+
[ExcludeFromCodeCoverage(Justification = "Implementation is tested instead")]
79
Task<IUserCredentials> CreateUserAsync(
810
string handler,
911
string username,

RecipeSocialMediaAPI.Domain.Tests.Unit/Models/Users/UserAccountTests.cs

+79
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,85 @@ public void PinnedConversationIds_WhenModified_ReturnsImmutableList()
9999
userAccountSUT.PinnedConversationIds.Should().Contain("convo1");
100100
}
101101

102+
[Fact]
103+
[Trait(Traits.DOMAIN, Traits.Domains.USER)]
104+
[Trait(Traits.MODULE, Traits.Modules.DOMAIN)]
105+
public void BlockConnection_WhenConnectionIsNew_BlockConnectionAndReturnTrue()
106+
{
107+
// Given
108+
string connectionToAdd = "conn1";
109+
string existingConnection = "conn2";
110+
111+
UserAccount userAccountSUT = new("u1", "user_1", "User 1", "img.png", new(2024, 1, 1, 0, 0, 0, TimeSpan.Zero),
112+
blockedConnectionIds: new() { existingConnection });
113+
114+
// When
115+
var result = userAccountSUT.BlockConnection(connectionToAdd);
116+
117+
// Then
118+
result.Should().BeTrue();
119+
userAccountSUT.BlockedConnectionIds.Should().BeEquivalentTo(new List<string> { connectionToAdd, existingConnection });
120+
}
121+
122+
[Fact]
123+
[Trait(Traits.DOMAIN, Traits.Domains.USER)]
124+
[Trait(Traits.MODULE, Traits.Modules.DOMAIN)]
125+
public void BlockConnection_WhenConnectionIsNotNew_ReturnFalse()
126+
{
127+
// Given
128+
string existingConnection = "conn1";
129+
130+
UserAccount userAccountSUT = new("u1", "user_1", "User 1", "img.png", new(2024, 1, 1, 0, 0, 0, TimeSpan.Zero),
131+
blockedConnectionIds: new() { existingConnection });
132+
133+
// When
134+
var result = userAccountSUT.BlockConnection(existingConnection);
135+
136+
// Then
137+
result.Should().BeFalse();
138+
userAccountSUT.BlockedConnectionIds.Should().BeEquivalentTo(new List<string> { existingConnection });
139+
}
140+
141+
[Fact]
142+
[Trait(Traits.DOMAIN, Traits.Domains.USER)]
143+
[Trait(Traits.MODULE, Traits.Modules.DOMAIN)]
144+
public void UnblockConnection_WhenConnectionIsBlocked_UnblockAndReturnTrue()
145+
{
146+
// Given
147+
string connectionToUnblock = "conn1";
148+
string connectionToKeep = "conn2";
149+
150+
UserAccount userAccountSUT = new("u1", "user_1", "User 1", "img.png", new(2024, 1, 1, 0, 0, 0, TimeSpan.Zero),
151+
blockedConnectionIds: new() { connectionToUnblock, connectionToKeep });
152+
153+
// When
154+
var result = userAccountSUT.UnblockConnection(connectionToUnblock);
155+
156+
// Then
157+
result.Should().BeTrue();
158+
userAccountSUT.BlockedConnectionIds.Should().BeEquivalentTo(new List<string> { connectionToKeep });
159+
}
160+
161+
[Fact]
162+
[Trait(Traits.DOMAIN, Traits.Domains.USER)]
163+
[Trait(Traits.MODULE, Traits.Modules.DOMAIN)]
164+
public void UnblockConnection_WhenConnectionIsNotBlocked_ReturnFalse()
165+
{
166+
// Given
167+
string nonexistentConnection = "conn1";
168+
string existingConnection = "conn2";
169+
170+
UserAccount userAccountSUT = new("u1", "user_1", "User 1", "img.png", new(2024, 1, 1, 0, 0, 0, TimeSpan.Zero),
171+
blockedConnectionIds: new() { existingConnection });
172+
173+
// When
174+
var result = userAccountSUT.UnblockConnection(nonexistentConnection);
175+
176+
// Then
177+
result.Should().BeFalse();
178+
userAccountSUT.BlockedConnectionIds.Should().BeEquivalentTo(new List<string> { existingConnection });
179+
}
180+
102181
[Fact]
103182
[Trait(Traits.DOMAIN, Traits.Domains.USER)]
104183
[Trait(Traits.MODULE, Traits.Modules.DOMAIN)]

RecipeSocialMediaAPI.Domain/Services/Interfaces/IUserFactory.cs

+3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
using RecipeSocialMediaAPI.Domain.Models.Users;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Domain.Services.Interfaces;
45

56
public interface IUserFactory
67
{
8+
[ExcludeFromCodeCoverage(Justification = "Implementation is tested instead")]
79
IUserAccount CreateUserAccount(
810
string id,
911
string handler,
@@ -14,6 +16,7 @@ IUserAccount CreateUserAccount(
1416
List<string>? blockedConnectionIds = null,
1517
UserRole userRole = UserRole.User);
1618

19+
[ExcludeFromCodeCoverage(Justification = "Implementation is tested instead")]
1720
IUserCredentials CreateUserCredentials(
1821
string id,
1922
string handler,
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
45

56
[MongoCollection("Connection")]
7+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
68
public record ConnectionDocument(string AccountId1, string AccountId2, string ConnectionStatus, string? Id = null) : MongoDocument(Id);

RecipeSocialMediaAPI.Infrastructure/MongoDocuments/ConversationDocument.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
45

56
[MongoCollection("Conversation")]
7+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
68
public record ConversationDocument(
79
List<string> Messages,
810
string? ConnectionId = null,

RecipeSocialMediaAPI.Infrastructure/MongoDocuments/GroupDocument.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
45

56
[MongoCollection("Group")]
7+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
68
public record GroupDocument(
79
string GroupName,
810
string GroupDescription,

RecipeSocialMediaAPI.Infrastructure/MongoDocuments/MessageDocument.cs

+3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
45

56
[MongoCollection("Message")]
7+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
68
public record MessageDocument(
79
string SenderId,
810
MessageContentDto MessageContent,
@@ -13,6 +15,7 @@ public record MessageDocument(
1315
string? Id = null
1416
) : MongoDocument(Id);
1517

18+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
1619
public record MessageContentDto(
1720
string? Text = null,
1821
List<string>? RecipeIds = null,

RecipeSocialMediaAPI.Infrastructure/MongoDocuments/MongoDocument.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
using MongoDB.Bson;
22
using MongoDB.Bson.Serialization.Attributes;
33
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
4+
using System.Diagnostics.CodeAnalysis;
45

56
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
67

78
[MongoCollection("")]
9+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
810
public abstract record MongoDocument
911
{
1012
[BsonId]

RecipeSocialMediaAPI.Infrastructure/MongoDocuments/RecipeDocument.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
45

56
[MongoCollection("Recipe")]
7+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
68
public record RecipeDocument(
79
string Title,
810
IList<(string Name, double Quantity, string UnitOfMeasurement)> Ingredients,

RecipeSocialMediaAPI.Infrastructure/MongoDocuments/UserDocument.cs

+2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
using RecipeSocialMediaAPI.Infrastructure.MongoConfiguration;
2+
using System.Diagnostics.CodeAnalysis;
23

34
namespace RecipeSocialMediaAPI.Infrastructure.MongoDocuments;
45

56
[MongoCollection("User")]
7+
[ExcludeFromCodeCoverage(Justification = "Unnecessary testing on DTO")]
68
public record UserDocument(
79
string Handler,
810
string UserName,

0 commit comments

Comments
 (0)