diff --git a/Directory.Packages.props b/Directory.Packages.props index 08d3254c..35929b14 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -4,7 +4,6 @@ - diff --git a/src/BB84.Home.API/Extensions/SwaggerGenOptionsExtensions.cs b/src/BB84.Home.API/Extensions/SwaggerGenOptionsExtensions.cs index aba78fe0..e00b1c18 100644 --- a/src/BB84.Home.API/Extensions/SwaggerGenOptionsExtensions.cs +++ b/src/BB84.Home.API/Extensions/SwaggerGenOptionsExtensions.cs @@ -68,13 +68,18 @@ internal static SwaggerGenOptions ConfigureSecurityDefinition(this SwaggerGenOpt options.AddSecurityDefinition(PresentationConstants.Authentication.Bearer, new OpenApiSecurityScheme() { In = ParameterLocation.Header, - Description = "Please enter token", + Description = "JWT Authorization header using the Bearer scheme.", Name = PresentationConstants.Authentication.SecuritySchemeName, Type = SecuritySchemeType.Http, BearerFormat = PresentationConstants.Authentication.BearerFormat, Scheme = PresentationConstants.Authentication.Bearer }); + options.AddSecurityRequirement(document => new OpenApiSecurityRequirement + { + [new OpenApiSecuritySchemeReference(PresentationConstants.Authentication.Bearer, document)] = [] + }); + return options; } } diff --git a/src/BB84.Home.Application/BB84.Home.Application.csproj b/src/BB84.Home.Application/BB84.Home.Application.csproj index 0bea673e..63bbcfa9 100644 --- a/src/BB84.Home.Application/BB84.Home.Application.csproj +++ b/src/BB84.Home.Application/BB84.Home.Application.csproj @@ -6,7 +6,6 @@ - @@ -38,4 +37,8 @@ + + + + diff --git a/src/BB84.Home.Application/Contracts/Responses/Todo/ListResponse.cs b/src/BB84.Home.Application/Contracts/Responses/Todo/ListResponse.cs index 28f04cea..96f9b5d7 100644 --- a/src/BB84.Home.Application/Contracts/Responses/Todo/ListResponse.cs +++ b/src/BB84.Home.Application/Contracts/Responses/Todo/ListResponse.cs @@ -24,5 +24,5 @@ public sealed class ListResponse : IdentityResponse /// /// The items within the todo list. /// - public ItemResponse[]? Items { get; init; } + public IEnumerable? Items { get; init; } } diff --git a/src/BB84.Home.Application/Extensions/RequestExtensions.Attendance.cs b/src/BB84.Home.Application/Extensions/RequestExtensions.Attendance.cs new file mode 100644 index 00000000..deec1206 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/RequestExtensions.Attendance.cs @@ -0,0 +1,39 @@ +using BB84.Home.Application.Contracts.Requests.Attendance; +using BB84.Home.Domain.Entities.Attendance; + +namespace BB84.Home.Application.Extensions; + +internal static partial class RequestExtensions +{ + public static AttendanceEntity ToEntity(this AttendanceCreateRequest request) + { + AttendanceEntity entity = new() + { + Date = request.Date, + Type = request.Type, + StartTime = request.StartTime, + EndTime = request.EndTime, + BreakTime = request.BreakTime + }; + + return entity; + } + + public static AttendanceEntity ToEntity(this AttendanceCreateRequest request, Guid userId) + { + AttendanceEntity entity = request.ToEntity(); + entity.UserId = userId; + + return entity; + } + + public static AttendanceEntity ToEntity(this AttendanceUpdateRequest request, AttendanceEntity entity) + { + entity.Type = request.Type; + entity.StartTime = request.StartTime; + entity.EndTime = request.EndTime; + entity.BreakTime = request.BreakTime; + + return entity; + } +} diff --git a/src/BB84.Home.Application/Extensions/RequestExtensions.Documents.cs b/src/BB84.Home.Application/Extensions/RequestExtensions.Documents.cs new file mode 100644 index 00000000..81d7e65d --- /dev/null +++ b/src/BB84.Home.Application/Extensions/RequestExtensions.Documents.cs @@ -0,0 +1,45 @@ +using BB84.Home.Application.Contracts.Requests.Documents; +using BB84.Home.Domain.Entities.Documents; + +namespace BB84.Home.Application.Extensions; + +internal static partial class RequestExtensions +{ + /// + /// Converts a to a . + /// + /// The request to convert. + /// The converted . + public static DocumentEntity ToEntity(this DocumentCreateRequest request) + { + DocumentEntity entity = new() + { + Name = request.Name, + Directory = request.Directory, + Flags = request.Flags, + CreationTime = request.CreationTime, + LastWriteTime = request.LastWriteTime, + LastAccessTime = request.LastAccessTime + }; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The request to convert. + /// The entity to update. + /// The updated . + public static DocumentEntity ToEntity(this DocumentUpdateRequest request, DocumentEntity entity) + { + entity.Name = request.Name; + entity.Directory = request.Directory; + entity.Flags = request.Flags; + entity.CreationTime = request.CreationTime; + entity.LastWriteTime = request.LastWriteTime; + entity.LastAccessTime = request.LastAccessTime; + + return entity; + } +} diff --git a/src/BB84.Home.Application/Extensions/RequestExtensions.Finance.cs b/src/BB84.Home.Application/Extensions/RequestExtensions.Finance.cs new file mode 100644 index 00000000..d5d8e98d --- /dev/null +++ b/src/BB84.Home.Application/Extensions/RequestExtensions.Finance.cs @@ -0,0 +1,136 @@ +using BB84.Home.Application.Contracts.Requests.Finance; +using BB84.Home.Domain.Entities.Finance; + +namespace BB84.Home.Application.Extensions; + +internal static partial class RequestExtensions +{ + /// + /// Converts an to an . + /// + /// The to convert. + /// The converted . + public static AccountEntity ToEntity(this AccountCreateRequest request) + { + AccountEntity entity = new() + { + IBAN = request.IBAN, + Type = request.Type, + Provider = request.Provider + }; + + if (request.Cards is not null) + entity.Cards = [.. request.Cards.Select(c => c.ToEntity())]; + + return entity; + } + + /// + /// Converts an to an . + /// + /// The to convert. + /// The entity to update. + /// The updated . + public static AccountEntity ToEntity(this AccountUpdateRequest request, AccountEntity entity) + { + entity.Type = request.Type; + entity.Provider = request.Provider; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static CardEntity ToEntity(this CardCreateRequest request) + { + CardEntity entity = new() + { + PAN = request.PAN, + Type = request.Type, + ValidUntil = request.ValidUntil + }; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The user ID to associate with the card. + /// The account ID to associate with the card. + /// The converted . + public static CardEntity ToEntity(this CardCreateRequest request, Guid userId, Guid accountId) + { + CardEntity entity = request.ToEntity(); + entity.UserId = userId; + entity.AccountId = accountId; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The to update. + /// The updated . + public static CardEntity ToEntity(this CardUpdateRequest request, CardEntity entity) + { + entity.Type = request.Type; + entity.ValidUntil = request.ValidUntil; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static TransactionEntity ToEntity(this TransactionCreateRequest request) + { + TransactionEntity entity = new() + { + BookingDate = request.BookingDate, + ValueDate = request.ValueDate, + PostingText = request.PostingText, + ClientBeneficiary = request.ClientBeneficiary, + Purpose = request.Purpose, + AccountNumber = request.AccountNumber, + BankCode = request.BankCode, + AmountEur = request.AmountEur, + CreditorId = request.CreditorId, + MandateReference = request.MandateReference, + CustomerReference = request.CustomerReference + }; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The to update. + /// The updated . + public static TransactionEntity ToEntity(this TransactionUpdateRequest request, TransactionEntity entity) + { + entity.BookingDate = request.BookingDate; + entity.ValueDate = request.ValueDate; + entity.PostingText = request.PostingText; + entity.ClientBeneficiary = request.ClientBeneficiary; + entity.Purpose = request.Purpose; + entity.AccountNumber = request.AccountNumber; + entity.BankCode = request.BankCode; + entity.AmountEur = request.AmountEur; + entity.CreditorId = request.CreditorId; + entity.MandateReference = request.MandateReference; + entity.CustomerReference = request.CustomerReference; + + return entity; + } +} diff --git a/src/BB84.Home.Application/Extensions/RequestExtensions.Identity.cs b/src/BB84.Home.Application/Extensions/RequestExtensions.Identity.cs new file mode 100644 index 00000000..9efae358 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/RequestExtensions.Identity.cs @@ -0,0 +1,54 @@ +using BB84.Home.Application.Contracts.Requests.Identity; +using BB84.Home.Domain.Entities.Identity; + +namespace BB84.Home.Application.Extensions; + +internal static partial class RequestExtensions +{ + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static UserEntity ToEntity(this UserCreateRequest request) + { + UserEntity entity = new() + { + FirstName = request.FirstName, + LastName = request.LastName, + Email = request.Email, + UserName = request.UserName + }; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The entity to update with the values from the request. + /// The updated . + public static UserEntity ToEntity(this UserUpdateRequest request, UserEntity entity) + { + entity.Email = request.Email; + entity.FirstName = request.FirstName; + entity.LastName = request.LastName; + entity.MiddleName = request.MiddleName; + entity.DateOfBirth = request.DateOfBirth; + entity.PhoneNumber = request.PhoneNumber; + entity.Picture = request.Picture; + + if (request.Preferences is not null) + { + var attendancePreferences = request.Preferences.AttendancePreferences; + if (attendancePreferences is not null) + { + entity.Preferences = new PreferencesModel( + new AttendancePreferencesModel(attendancePreferences.WorkDays, attendancePreferences.WorkHours, attendancePreferences.VacationDays)); + } + } + + return entity; + } +} diff --git a/src/BB84.Home.Application/Extensions/RequestExtensions.Todo.cs b/src/BB84.Home.Application/Extensions/RequestExtensions.Todo.cs new file mode 100644 index 00000000..9917ddea --- /dev/null +++ b/src/BB84.Home.Application/Extensions/RequestExtensions.Todo.cs @@ -0,0 +1,102 @@ +using BB84.Extensions; +using BB84.Home.Application.Contracts.Requests.Todo; +using BB84.Home.Application.Contracts.Requests.Todo.Base; +using BB84.Home.Domain.Entities.Todo; + +namespace BB84.Home.Application.Extensions; + +internal static partial class RequestExtensions +{ + /// + /// Converts a to a . + /// + /// The request to convert. + /// The converted . + public static ListEntity ToEntity(this ListBaseRequest request) + { + ListEntity entity = new() + { + Title = request.Title, + Color = request.Color?.FromRGBHexString() + }; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The request to convert. + /// The ID of the user to which the list belongs. + /// The converted . + public static ListEntity ToEntity(this ListBaseRequest request, Guid userId) + { + ListEntity entity = request.ToEntity(); + entity.UserId = userId; + + return entity; + } + + /// + /// Converts a to a . + /// + /// The request to convert. + /// The entity to update. + /// The converted . + public static ListEntity ToEntity(this ListUpdateRequest request, ListEntity entity) + { + entity.Title = request.Title; + entity.Color = request.Color?.FromRGBHexString(); + + return entity; + } + + /// + /// Converts an to an . + /// + /// The request to convert. + /// The converted . + public static ItemEntity ToEntity(this ItemBaseRequest request) + { + ItemEntity entity = new() + { + Title = request.Title, + Priority = request.Priority, + Reminder = request.Reminder, + Note = request.Note + }; + + return entity; + } + + /// + /// Converts an to an . + /// + /// The request to convert. + /// The ID of the list to which the item belongs. + /// The converted . + public static ItemEntity ToEntity(this ItemBaseRequest request, Guid listId) + { + ItemEntity entity = ToEntity(request); + entity.ListId = listId; + + return entity; + } + + /// + /// Converts an to an . + /// + /// The request to convert. + /// The entity to update. + /// The converted . + public static ItemEntity ToEntity(this ItemUpdateRequest request, ItemEntity entity) + { + entity.Title = request.Title; + entity.Priority = request.Priority; + entity.Reminder = request.Reminder; + entity.Note = request.Note; + entity.Done = request.Done; + + return entity; + } +} diff --git a/src/BB84.Home.Application/Extensions/RequestExtensions.cs b/src/BB84.Home.Application/Extensions/RequestExtensions.cs new file mode 100644 index 00000000..cc019d27 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/RequestExtensions.cs @@ -0,0 +1,7 @@ +namespace BB84.Home.Application.Extensions; + +/// +/// Request extensions for mapping domain entities to request DTOs. +/// +internal static partial class RequestExtensions +{ } diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.Attendance.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.Attendance.cs new file mode 100644 index 00000000..32bb936f --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.Attendance.cs @@ -0,0 +1,29 @@ +using BB84.Home.Application.Contracts.Responses.Attendance; +using BB84.Home.Domain.Entities.Attendance; +using BB84.Home.Domain.Extensions; + +namespace BB84.Home.Application.Extensions; + +internal static partial class ResponseExtensions +{ + /// + /// Converts an to an . + /// + /// The to convert. + /// The converted . + public static AttendanceResponse ToResponse(this AttendanceEntity entity) + { + AttendanceResponse response = new() + { + Id = entity.Id, + Date = entity.Date, + Type = entity.Type, + StartTime = entity.StartTime, + EndTime = entity.EndTime, + BreakTime = entity.BreakTime, + WorkingHours = entity.GetResultingWorkingHours() + }; + + return response; + } +} diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.Common.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.Common.cs new file mode 100644 index 00000000..815772c0 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.Common.cs @@ -0,0 +1,42 @@ +using System.Globalization; + +using BB84.Home.Application.Contracts.Responses.Common; + +namespace BB84.Home.Application.Extensions; + +internal static partial class ResponseExtensions +{ + /// + /// Converts a DateTime to a CalendarResponse, which contains various calendar-related information + /// about the date, such as the year, month, week of year, day of week, day of year, start and end + /// of the week, and start and end of the month. + /// + /// The DateTime to convert to a CalendarResponse. + /// The CalendarResponse containing calendar-related information about the input date. + public static CalendarResponse ToResponse(this DateTime date) + { + // compute week of year using ISO style: Monday as first day + Calendar calendar = CultureInfo.InvariantCulture.Calendar; + int week = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday); + + int diff = (7 + (date.DayOfWeek - DayOfWeek.Monday)) % 7; + DateTime startOfWeek = date.Date.AddDays(-diff); + DateTime endOfWeek = startOfWeek.AddDays(6); + + CalendarResponse response = new() + { + Date = date, + Year = date.Year, + Month = date.Month, + Week = week, + DayOfWeek = (int)date.DayOfWeek, + DayOfYear = date.DayOfYear, + StartOfWeek = startOfWeek, + EndOfWeek = endOfWeek, + StartOfMonth = new DateTime(date.Year, date.Month, 1), + EndOfMonth = new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month)) + }; + + return response; + } +} diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.Documents.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.Documents.cs new file mode 100644 index 00000000..ce921331 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.Documents.cs @@ -0,0 +1,33 @@ +using BB84.Home.Application.Contracts.Responses.Documents; +using BB84.Home.Domain.Entities.Documents; + +namespace BB84.Home.Application.Extensions; + +internal static partial class ResponseExtensions +{ + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static DocumentResponse ToResponse(this DocumentEntity entity) + { + DocumentResponse response = new() + { + Id = entity.Id, + Name = entity.Name, + Directory = entity.Directory, + Flags = entity.Flags, + CreationTime = entity.CreationTime, + LastWriteTime = entity.LastWriteTime, + LastAccessTime = entity.LastAccessTime, + MD5Hash = entity.Data?.MD5Hash, + Length = entity.Data?.Length, + Content = entity.Data?.Content, + ExtensionName = entity.Extension?.Name, + MimeType = entity.Extension?.MimeType + }; + + return response; + } +} diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.Finance.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.Finance.cs new file mode 100644 index 00000000..06dfdfb6 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.Finance.cs @@ -0,0 +1,70 @@ +using BB84.Home.Application.Contracts.Responses.Finance; +using BB84.Home.Domain.Entities.Finance; + +namespace BB84.Home.Application.Extensions; + +internal static partial class ResponseExtensions +{ + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static CardResponse ToResponse(this CardEntity entity) + { + CardResponse response = new() + { + Id = entity.Id, + PAN = entity.PAN, + Type = entity.Type, + ValidUntil = entity.ValidUntil + }; + + return response; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static AccountResponse ToResponse(this AccountEntity entity) + { + AccountResponse response = new() + { + Id = entity.Id, + IBAN = entity.IBAN, + Type = entity.Type, + Provider = entity.Provider, + Cards = entity.Cards?.Select(x => x.ToResponse()).ToArray() + }; + + return response; + } + + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static TransactionResponse ToResponse(this TransactionEntity entity) + { + TransactionResponse response = new() + { + Id = entity.Id, + BookingDate = entity.BookingDate, + ValueDate = entity.ValueDate, + PostingText = entity.PostingText, + ClientBeneficiary = entity.ClientBeneficiary, + Purpose = entity.Purpose, + AccountNumber = entity.AccountNumber, + BankCode = entity.BankCode, + AmountEur = entity.AmountEur, + CreditorId = entity.CreditorId, + MandateReference = entity.MandateReference, + CustomerReference = entity.CustomerReference + }; + + return response; + } +} diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.Identity.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.Identity.cs new file mode 100644 index 00000000..0601fb73 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.Identity.cs @@ -0,0 +1,45 @@ +using BB84.Home.Application.Contracts.Responses.Identity; +using BB84.Home.Domain.Entities.Identity; + +namespace BB84.Home.Application.Extensions; + +internal static partial class ResponseExtensions +{ + /// + /// Converts a to a . + /// + /// The to convert. + /// The converted . + public static UserResponse ToResponse(this UserEntity entity) + { + PreferencesResponse? preferences = null; + if (entity.Preferences is not null && entity.Preferences.AttendancePreferences is not null) + { + preferences = new PreferencesResponse + { + AttendancePreferences = new AttendancePreferencesResponse + { + WorkDays = entity.Preferences.AttendancePreferences.WorkDays, + WorkHours = entity.Preferences.AttendancePreferences.WorkHours, + VacationDays = entity.Preferences.AttendancePreferences.VacationDays + } + }; + } + + UserResponse response = new() + { + Id = entity.Id, + FirstName = entity.FirstName, + MiddleName = entity.MiddleName, + LastName = entity.LastName, + DateOfBirth = entity.DateOfBirth, + UserName = entity.UserName!, + Email = entity.Email!, + PhoneNumber = entity.PhoneNumber, + Picture = entity.Picture, + Preferences = preferences + }; + + return response; + } +} diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.Todo.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.Todo.cs new file mode 100644 index 00000000..01dadaa8 --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.Todo.cs @@ -0,0 +1,51 @@ +using BB84.Extensions; +using BB84.Home.Application.Contracts.Responses.Todo; +using BB84.Home.Domain.Entities.Todo; + +namespace BB84.Home.Application.Extensions; + +internal static partial class ResponseExtensions +{ + /// + /// Converts a instance to its corresponding + /// representation. + /// + /// The to convert. + /// + /// A object containing the data from the specified . + /// + public static ListResponse ToResponse(this ListEntity entity) + { + ListResponse response = new() + { + Id = entity.Id, + Title = entity.Title, + Color = entity.Color?.ToRGBHexString(), + Items = [.. entity.Items.Select(ToResponse)] + }; + + return response; + } + + /// + /// Converts a instance to its corresponding + /// representation. + /// + /// The to convert. + /// + /// A object containing the data from the specified . + /// + public static ItemResponse ToResponse(this ItemEntity entity) + { + ItemResponse response = new() + { + Id = entity.Id, + Title = entity.Title, + Priority = entity.Priority, + Reminder = entity.Reminder, + Done = entity.Done, + Note = entity.Note + }; + return response; + } +} diff --git a/src/BB84.Home.Application/Extensions/ResponseExtensions.cs b/src/BB84.Home.Application/Extensions/ResponseExtensions.cs new file mode 100644 index 00000000..ae7db0ae --- /dev/null +++ b/src/BB84.Home.Application/Extensions/ResponseExtensions.cs @@ -0,0 +1,7 @@ +namespace BB84.Home.Application.Extensions; + +/// +/// Response extensions for mapping domain entities to response DTOs. +/// +internal static partial class ResponseExtensions +{ } diff --git a/src/BB84.Home.Application/Extensions/ServiceCollectionExtensions.cs b/src/BB84.Home.Application/Extensions/ServiceCollectionExtensions.cs index a19e0a44..c22ae2b5 100644 --- a/src/BB84.Home.Application/Extensions/ServiceCollectionExtensions.cs +++ b/src/BB84.Home.Application/Extensions/ServiceCollectionExtensions.cs @@ -73,18 +73,6 @@ internal static IServiceCollection RegisterTransientServices(this IServiceCollec return services; } - /// - /// Registers the required auto mapper to the collection. - /// - /// The service collection to enrich. - /// The enriched service collection. - internal static IServiceCollection RegisterAutoMapper(this IServiceCollection services) - { - services.AddAutoMapper(config => config.AllowNullCollections = true, typeof(IApplicationAssemblyMarker)); - - return services; - } - /// /// Registers the required fluent validation validators to the collection. /// diff --git a/src/BB84.Home.Application/Installer/DependencyInjectionHelper.cs b/src/BB84.Home.Application/Installer/DependencyInjectionHelper.cs index 556ecc91..5f9e7549 100644 --- a/src/BB84.Home.Application/Installer/DependencyInjectionHelper.cs +++ b/src/BB84.Home.Application/Installer/DependencyInjectionHelper.cs @@ -18,7 +18,6 @@ public static class DependencyInjectionHelper public static IServiceCollection RegisterApplicationServices(this IServiceCollection services) { services.RegisterApplicationOptions() - .RegisterAutoMapper() .RegisterFluentValidation() .RegisterScopedServices() .RegisterSingletonServices() diff --git a/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/IAccountRepository.cs b/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/IAccountRepository.cs similarity index 92% rename from src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/IAccountRepository.cs rename to src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/IAccountRepository.cs index d88d95ff..fe7c353c 100644 --- a/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/IAccountRepository.cs +++ b/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/IAccountRepository.cs @@ -1,7 +1,7 @@ using BB84.EntityFrameworkCore.Repositories.Abstractions; using BB84.Home.Domain.Entities.Finance; -namespace BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +namespace BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; /// /// The account repository interface. diff --git a/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/ICardRepository.cs b/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/ICardRepository.cs similarity index 91% rename from src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/ICardRepository.cs rename to src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/ICardRepository.cs index 6f90cb0c..13f0a3b4 100644 --- a/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/ICardRepository.cs +++ b/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/ICardRepository.cs @@ -1,7 +1,7 @@ using BB84.EntityFrameworkCore.Repositories.Abstractions; using BB84.Home.Domain.Entities.Finance; -namespace BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +namespace BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; /// /// The card repository interface. diff --git a/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/ITransactionRepository.cs b/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/ITransactionRepository.cs similarity index 92% rename from src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/ITransactionRepository.cs rename to src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/ITransactionRepository.cs index 106dfb83..84778028 100644 --- a/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/ITransactionRepository.cs +++ b/src/BB84.Home.Application/Interfaces/Infrastructure/Persistence/Repositories/Finance/ITransactionRepository.cs @@ -1,7 +1,7 @@ using BB84.EntityFrameworkCore.Repositories.Abstractions; using BB84.Home.Domain.Entities.Finance; -namespace BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +namespace BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; /// /// The transaction repository interface. diff --git a/src/BB84.Home.Application/Interfaces/Infrastructure/Services/IRepositoryService.cs b/src/BB84.Home.Application/Interfaces/Infrastructure/Services/IRepositoryService.cs index 15907dd5..d15cc1b4 100644 --- a/src/BB84.Home.Application/Interfaces/Infrastructure/Services/IRepositoryService.cs +++ b/src/BB84.Home.Application/Interfaces/Infrastructure/Services/IRepositoryService.cs @@ -1,5 +1,6 @@ using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Documents; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; namespace BB84.Home.Application.Interfaces.Infrastructure.Services; diff --git a/src/BB84.Home.Application/Profiles/Requests/AttendanceRequestProfile.cs b/src/BB84.Home.Application/Profiles/Requests/AttendanceRequestProfile.cs deleted file mode 100644 index 6fa57af3..00000000 --- a/src/BB84.Home.Application/Profiles/Requests/AttendanceRequestProfile.cs +++ /dev/null @@ -1,19 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Attendance; -using BB84.Home.Domain.Entities.Attendance; - -namespace BB84.Home.Application.Profiles.Requests; - -/// -/// The attendance request profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class AttendanceRequestProfile : Profile -{ - public AttendanceRequestProfile() - { - CreateMap(); - CreateMap(); - } -} diff --git a/src/BB84.Home.Application/Profiles/Requests/DocumentsRequestProfile.cs b/src/BB84.Home.Application/Profiles/Requests/DocumentsRequestProfile.cs deleted file mode 100644 index 8040b782..00000000 --- a/src/BB84.Home.Application/Profiles/Requests/DocumentsRequestProfile.cs +++ /dev/null @@ -1,19 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Documents; -using BB84.Home.Domain.Entities.Documents; - -namespace BB84.Home.Application.Profiles.Requests; - -/// -/// The documents request profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class DocumentsRequestProfile : Profile -{ - public DocumentsRequestProfile() - { - CreateMap(); - CreateMap(); - } -} diff --git a/src/BB84.Home.Application/Profiles/Requests/FinanceRequestProfile.cs b/src/BB84.Home.Application/Profiles/Requests/FinanceRequestProfile.cs deleted file mode 100644 index 172b69c6..00000000 --- a/src/BB84.Home.Application/Profiles/Requests/FinanceRequestProfile.cs +++ /dev/null @@ -1,25 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Finance; -using BB84.Home.Domain.Entities.Finance; - -namespace BB84.Home.Application.Profiles.Requests; - -/// -/// The finance request profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class FinanceRequestProfile : Profile -{ - public FinanceRequestProfile() - { - CreateMap(); - CreateMap(); - - CreateMap(); - CreateMap(); - - CreateMap(); - CreateMap(); - } -} diff --git a/src/BB84.Home.Application/Profiles/Requests/IdentityRequestProfile.cs b/src/BB84.Home.Application/Profiles/Requests/IdentityRequestProfile.cs deleted file mode 100644 index d45178a9..00000000 --- a/src/BB84.Home.Application/Profiles/Requests/IdentityRequestProfile.cs +++ /dev/null @@ -1,22 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Identity; -using BB84.Home.Domain.Entities.Identity; - -namespace BB84.Home.Application.Profiles.Requests; - -/// -/// The identity request profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class IdentityRequestProfile : Profile -{ - public IdentityRequestProfile() - { - CreateMap(); - CreateMap(); - - CreateMap(); - CreateMap(); - } -} diff --git a/src/BB84.Home.Application/Profiles/Requests/TodoRequestProfile.cs b/src/BB84.Home.Application/Profiles/Requests/TodoRequestProfile.cs deleted file mode 100644 index da3e271d..00000000 --- a/src/BB84.Home.Application/Profiles/Requests/TodoRequestProfile.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System.Drawing; - -using AutoMapper; - -using BB84.Extensions; -using BB84.Home.Application.Contracts.Requests.Todo; -using BB84.Home.Domain.Entities.Todo; - -namespace BB84.Home.Application.Profiles.Requests; - -/// -/// The todo request profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class TodoRequestProfile : Profile -{ - public TodoRequestProfile() - { - CreateMap() - .ForMember(t => t.Color, o => o.MapFrom(s => MapColor(s.Color))); - CreateMap() - .ForMember(t => t.Color, o => o.MapFrom(s => MapColor(s.Color))); - CreateMap(); - CreateMap(); - } - - private static Color? MapColor(string? color) - => color?.FromRGBHexString(); -} diff --git a/src/BB84.Home.Application/Profiles/Responses/AttendanceResponseProfile.cs b/src/BB84.Home.Application/Profiles/Responses/AttendanceResponseProfile.cs deleted file mode 100644 index 6da39e87..00000000 --- a/src/BB84.Home.Application/Profiles/Responses/AttendanceResponseProfile.cs +++ /dev/null @@ -1,20 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Responses.Attendance; -using BB84.Home.Domain.Entities.Attendance; -using BB84.Home.Domain.Extensions; - -namespace BB84.Home.Application.Profiles.Responses; - -/// -/// The attendance response profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class AttendanceResponseProfile : Profile -{ - public AttendanceResponseProfile() - { - CreateMap() - .ForMember(dest => dest.WorkingHours, opt => opt.MapFrom(src => src.GetResultingWorkingHours())); - } -} \ No newline at end of file diff --git a/src/BB84.Home.Application/Profiles/Responses/CommonResponseProfile.cs b/src/BB84.Home.Application/Profiles/Responses/CommonResponseProfile.cs deleted file mode 100644 index 39250458..00000000 --- a/src/BB84.Home.Application/Profiles/Responses/CommonResponseProfile.cs +++ /dev/null @@ -1,53 +0,0 @@ -using AutoMapper; - -using BB84.Extensions; -using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Domain.Enumerators; -using BB84.Home.Domain.Enumerators.Attendance; -using BB84.Home.Domain.Enumerators.Documents; -using BB84.Home.Domain.Enumerators.Finance; -using BB84.Home.Domain.Enumerators.Todo; - -namespace BB84.Home.Application.Profiles.Responses; - -/// -/// The common response profile class -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class CommonResponseProfile : Profile -{ - public CommonResponseProfile() - { - CreateMap() - .ForMember(t => t.Year, o => o.MapFrom(s => s.Date.Year)) - .ForMember(t => t.Month, o => o.MapFrom(s => s.Date.Month)) - .ForMember(t => t.Week, o => o.MapFrom(s => s.Date.WeekOfYear())) - .ForMember(t => t.DayOfWeek, o => o.MapFrom(s => s.Date.DayOfWeek)) - .ForMember(t => t.DayOfYear, o => o.MapFrom(s => s.Date.DayOfYear)) - .ForMember(t => t.StartOfWeek, o => o.MapFrom(s => s.Date.StartOfWeek(DayOfWeek.Monday))) - .ForMember(t => t.EndOfWeek, o => o.MapFrom(s => s.Date.EndOfWeek(DayOfWeek.Monday))) - .ForMember(t => t.StartOfMonth, o => o.MapFrom(s => s.Date.StartOfMonth())) - .ForMember(t => t.EndOfMonth, o => o.MapFrom(s => s.Date.EndOfMonth())); - - CreateMap() - .ConstructUsing(x => new(x)); - - CreateMap() - .ConstructUsing(x => new(x)); - - CreateMap() - .ConstructUsing(x => new(x)); - - CreateMap() - .ConstructUsing(x => new(x)); - - CreateMap() - .ConstructUsing(x => new(x)); - - CreateMap() - .ConstructUsing(x => new(x)); - - CreateMap() - .ConstructUsing(x => new(x)); - } -} \ No newline at end of file diff --git a/src/BB84.Home.Application/Profiles/Responses/DocumentsResponseProfile.cs b/src/BB84.Home.Application/Profiles/Responses/DocumentsResponseProfile.cs deleted file mode 100644 index d73da9d1..00000000 --- a/src/BB84.Home.Application/Profiles/Responses/DocumentsResponseProfile.cs +++ /dev/null @@ -1,29 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Responses.Documents; -using BB84.Home.Domain.Entities.Documents; - -namespace BB84.Home.Application.Profiles.Responses; - -/// -/// The attendance response profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class DocumentsResponseProfile : Profile -{ - public DocumentsResponseProfile() - { - CreateMap() - .ForMember(dest => dest.MD5Hash, opt => opt.MapFrom(src => HasData(src) ? src.Data.MD5Hash : default)) - .ForMember(dest => dest.Length, opt => opt.MapFrom(src => HasData(src) ? src.Data.Length : default)) - .ForMember(dest => dest.Content, opt => opt.MapFrom(src => HasData(src) ? src.Data.Content : default)) - .ForMember(dest => dest.ExtensionName, opt => opt.MapFrom(src => HasExtension(src) ? src.Extension.Name : default)) - .ForMember(dest => dest.MimeType, opt => opt.MapFrom(src => HasExtension(src) ? src.Extension.MimeType : default)); - } - - private static bool HasData(DocumentEntity document) - => document.Data is not null; - - private static bool HasExtension(DocumentEntity document) - => document.Extension is not null; -} diff --git a/src/BB84.Home.Application/Profiles/Responses/FinanceResponseProfile.cs b/src/BB84.Home.Application/Profiles/Responses/FinanceResponseProfile.cs deleted file mode 100644 index 82892a0a..00000000 --- a/src/BB84.Home.Application/Profiles/Responses/FinanceResponseProfile.cs +++ /dev/null @@ -1,20 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Responses.Finance; -using BB84.Home.Domain.Entities.Finance; - -namespace BB84.Home.Application.Profiles.Responses; - -/// -/// The finance response class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class FinanceResponseProfile : Profile -{ - public FinanceResponseProfile() - { - CreateMap(); - CreateMap(); - CreateMap(); - } -} diff --git a/src/BB84.Home.Application/Profiles/Responses/IdentityResponseProfile.cs b/src/BB84.Home.Application/Profiles/Responses/IdentityResponseProfile.cs deleted file mode 100644 index 47808ace..00000000 --- a/src/BB84.Home.Application/Profiles/Responses/IdentityResponseProfile.cs +++ /dev/null @@ -1,21 +0,0 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Responses.Identity; -using BB84.Home.Domain.Entities.Identity; - -namespace BB84.Home.Application.Profiles.Responses; - -/// -/// The identity response profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class IdentityResponseProfile : Profile -{ - public IdentityResponseProfile() - { - CreateMap(); - - CreateMap(); - CreateMap(); - } -} diff --git a/src/BB84.Home.Application/Profiles/Responses/TodoResponseProfile.cs b/src/BB84.Home.Application/Profiles/Responses/TodoResponseProfile.cs deleted file mode 100644 index 23b0a13a..00000000 --- a/src/BB84.Home.Application/Profiles/Responses/TodoResponseProfile.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Drawing; - -using AutoMapper; - -using BB84.Extensions; -using BB84.Home.Application.Contracts.Responses.Todo; -using BB84.Home.Domain.Entities.Todo; - -namespace BB84.Home.Application.Profiles.Responses; - -/// -/// The todo response profile class. -/// -[SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, auto mapper profile.")] -internal sealed class TodoResponseProfile : Profile -{ - public TodoResponseProfile() - { - CreateMap(); - CreateMap() - .ForMember(t => t.Color, o => o.MapFrom(s => MapColor(s.Color))); - } - - private static string? MapColor(Color? color) - => color?.ToRGBHexString(); -} diff --git a/src/BB84.Home.Application/Services/Attendance/AttendanceService.cs b/src/BB84.Home.Application/Services/Attendance/AttendanceService.cs index 6755520f..0d946975 100644 --- a/src/BB84.Home.Application/Services/Attendance/AttendanceService.cs +++ b/src/BB84.Home.Application/Services/Attendance/AttendanceService.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Extensions; +using BB84.Extensions; using BB84.Home.Application.Contracts.Requests.Attendance; using BB84.Home.Application.Contracts.Responses.Attendance; using BB84.Home.Application.Errors.Services; @@ -24,8 +22,7 @@ namespace BB84.Home.Application.Services.Attendance; /// The logger service for logging errors and information. /// The service providing information about the current user. /// The repository service for accessing data repositories. -/// The mapper for converting between domain entities and data transfer objects. -internal sealed class AttendanceService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService, IMapper mapper) : IAttendanceService +internal sealed class AttendanceService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService) : IAttendanceService { private static readonly Action LogExceptionWithParams = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured. Params = {Parameters}"); @@ -41,13 +38,14 @@ public async Task> CreateAsync(AttendanceCreateRequest request, if (entity is not null) return AttendanceServiceErrors.CreateConflict(request.Date); - AttendanceEntity newEntity = mapper.Map(request); - newEntity.UserId = userService.UserId; + AttendanceEntity newEntity = request.ToEntity(userService.UserId); - await repositoryService.AttendanceRepository.CreateAsync(newEntity, token) + await repositoryService.AttendanceRepository + .CreateAsync(newEntity, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -64,26 +62,27 @@ public async Task> CreateAsync(IEnumerable entities = await repositoryService.AttendanceRepository + IReadOnlyList entities = await repositoryService.AttendanceRepository .GetManyByConditionAsync(expression: x => requests.Select(x => x.Date).Contains(x.Date), token: token) .ConfigureAwait(false); - if (entities.Any()) + if (entities.Count > 0) return AttendanceServiceErrors.CreateMultipleConflict(entities.Select(x => x.Date)); List newEntities = []; foreach (AttendanceCreateRequest request in requests) { - AttendanceEntity newAttendance = mapper.Map(request); - newAttendance.UserId = userService.UserId; + AttendanceEntity newAttendance = request.ToEntity(userService.UserId); newEntities.Add(newAttendance); } - await repositoryService.AttendanceRepository.CreateAsync(newEntities, token) + await repositoryService.AttendanceRepository + .CreateAsync(newEntities, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -127,11 +126,11 @@ public async Task> DeleteAsync(IEnumerable ids, Cancellat { try { - IEnumerable entities = await repositoryService.AttendanceRepository + IReadOnlyList entities = await repositoryService.AttendanceRepository .GetByIdsAsync(ids, token: token) .ConfigureAwait(false); - if (entities.Any().IsFalse()) + if (entities.Count.Equals(0)) return AttendanceServiceErrors.GetByIdsNotFound(ids); await repositoryService.AttendanceRepository @@ -155,7 +154,7 @@ public async Task>> GetPagedByParametersA { try { - IEnumerable attendances = await repositoryService.AttendanceRepository + IReadOnlyList attendances = await repositoryService.AttendanceRepository .GetManyByConditionAsync( expression: x => x.Id != Guid.Empty, queryFilter: x => x.FilterByParameters(parameters), @@ -172,7 +171,7 @@ public async Task>> GetPagedByParametersA token: token) .ConfigureAwait(false); - IEnumerable result = mapper.Map>(attendances); + IEnumerable result = attendances.Select(x => x.ToResponse()); return new PagedList(result, totalCount, parameters.PageNumber, parameters.PageSize); } @@ -194,7 +193,7 @@ public async Task> GetByDateAsync(DateTime date, Can if (attendanceEntry is null) return AttendanceServiceErrors.GetByDateNotFound(date); - AttendanceResponse result = mapper.Map(attendanceEntry); + AttendanceResponse result = attendanceEntry.ToResponse(); return result; } @@ -217,7 +216,7 @@ public async Task> UpdateAsync(AttendanceUpdateRequest request, if (entity is null) return AttendanceServiceErrors.GetByIdNotFound(request.Id); - _ = mapper.Map(request, entity); + entity = request.ToEntity(entity); _ = await repositoryService.CommitChangesAsync(token) .ConfigureAwait(false); @@ -243,7 +242,7 @@ public async Task> UpdateAsync(IEnumerable x.Id)); foreach (AttendanceEntity entity in entities) - _ = mapper.Map(requests.Single(x => x.Id.Equals(entity.Id)), entity); + _ = requests.Single(x => x.Id.Equals(entity.Id)).ToEntity(entity); _ = await repositoryService.CommitChangesAsync(token) .ConfigureAwait(false); diff --git a/src/BB84.Home.Application/Services/Common/CalendarService.cs b/src/BB84.Home.Application/Services/Common/CalendarService.cs index 5f739a82..690404de 100644 --- a/src/BB84.Home.Application/Services/Common/CalendarService.cs +++ b/src/BB84.Home.Application/Services/Common/CalendarService.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Responses.Common; +using BB84.Home.Application.Contracts.Responses.Common; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Extensions; using BB84.Home.Application.Features.Requests; @@ -21,8 +19,7 @@ namespace BB84.Home.Application.Services.Common; /// /// The date time service instance to use. /// The logger service instance to use. -/// The auto mapper instance to use. -internal sealed class CalendarService(IDateTimeProvider dateTimeService, ILoggerService loggerService, IMapper mapper) : ICalendarService +internal sealed class CalendarService(IDateTimeProvider dateTimeService, ILoggerService loggerService) : ICalendarService { private readonly IQueryable _dateTimes = GetPossibleDates(); @@ -36,9 +33,9 @@ public ErrorOr GetByDate(DateTime date) { try { - DateTime? calendarDay = _dateTimes.Single(x => x.Date.Equals(date.Date)); + DateTime calendarDay = _dateTimes.Single(x => x.Date.Equals(date.Date)); - CalendarResponse respone = mapper.Map(calendarDay); + CalendarResponse respone = calendarDay.ToResponse(); return respone; } @@ -61,7 +58,7 @@ public ErrorOr> GetPagedByParameters(CalendarParame int totalCount = _dateTimes.FilterByParameters(parameters) .Count(); - IEnumerable result = mapper.Map>(calendarDays); + IEnumerable result = calendarDays.Select(x => x.ToResponse()); return new PagedList(result, totalCount, parameters.PageNumber, parameters.PageSize); } @@ -76,9 +73,9 @@ public ErrorOr GetCurrent() { try { - DateTime? calendarDay = _dateTimes.Single(x => x.Date.Equals(dateTimeService.Today)); + DateTime calendarDay = _dateTimes.Single(x => x.Date.Equals(dateTimeService.Today)); - CalendarResponse respone = mapper.Map(calendarDay); + CalendarResponse respone = calendarDay.ToResponse(); return respone; } diff --git a/src/BB84.Home.Application/Services/Common/EnumeratorService.cs b/src/BB84.Home.Application/Services/Common/EnumeratorService.cs index 3eacf374..258cc76c 100644 --- a/src/BB84.Home.Application/Services/Common/EnumeratorService.cs +++ b/src/BB84.Home.Application/Services/Common/EnumeratorService.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Extensions; +using BB84.Extensions; using BB84.Home.Application.Contracts.Responses.Common; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Application.Services.Common; @@ -20,8 +18,7 @@ namespace BB84.Home.Application.Services.Common; /// The enumerator service class. /// /// The logger service instance to use. -/// The auto mapper instance to use. -internal sealed class EnumeratorService(ILoggerService loggerService, IMapper mapper) : IEnumeratorService +internal sealed class EnumeratorService(ILoggerService loggerService) : IEnumeratorService { private static readonly Action LogException = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured."); @@ -32,7 +29,7 @@ public ErrorOr> GetAccountTypes() { IEnumerable accountTypes = AccountType.Checking.GetValues(); - return mapper.Map>(accountTypes).ToList(); + return accountTypes.Select(x => new AccountTypeResponse(x)).ToList(); } catch (Exception ex) { @@ -47,7 +44,7 @@ public ErrorOr> GetAttendanceTypes() { IEnumerable attendanceTypes = AttendanceType.Holiday.GetValues(); - return mapper.Map>(attendanceTypes).ToList(); + return attendanceTypes.Select(x => new AttendanceTypeResponse(x)).ToList(); } catch (Exception ex) { @@ -62,7 +59,7 @@ public ErrorOr> GetCardTypes() { IEnumerable cardTypes = CardType.Credit.GetValues(); - return mapper.Map>(cardTypes).ToList(); + return cardTypes.Select(x => new CardTypeResponse(x)).ToList(); } catch (Exception ex) { @@ -77,7 +74,7 @@ public ErrorOr> GetDocumentTypes() { IEnumerable documentTypes = DocumentTypes.None.GetValues(); - return mapper.Map>(documentTypes).ToList(); + return documentTypes.Select(x => new DocumentTypeResponse(x)).ToList(); } catch (Exception ex) { @@ -92,7 +89,7 @@ public ErrorOr> GetPriorityLevelTypes() { IEnumerable priorityLevelTypes = PriorityLevelType.None.GetValues(); - return mapper.Map>(priorityLevelTypes).ToList(); + return priorityLevelTypes.Select(x => new PriorityLevelTypeResponse(x)).ToList(); } catch (Exception ex) { @@ -107,7 +104,7 @@ public ErrorOr> GetRoleTypes() { IEnumerable roleTypes = RoleType.Administrator.GetValues(); - return mapper.Map>(roleTypes).ToList(); + return roleTypes.Select(x => new RoleTypeResponse(x)).ToList(); } catch (Exception ex) { @@ -122,7 +119,7 @@ public ErrorOr> GetWorkDayTypes() { IEnumerable workDayTypes = WorkDayTypes.Sunday.GetValues(); - return mapper.Map>(workDayTypes).ToList(); + return workDayTypes.Select(x => new WorkDayTypeResponse(x)).ToList(); } catch (Exception ex) { diff --git a/src/BB84.Home.Application/Services/Documents/DocumentService.cs b/src/BB84.Home.Application/Services/Documents/DocumentService.cs index d7fb4fe6..ac07141e 100644 --- a/src/BB84.Home.Application/Services/Documents/DocumentService.cs +++ b/src/BB84.Home.Application/Services/Documents/DocumentService.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Extensions; +using BB84.Extensions; using BB84.Extensions.Serialization; using BB84.Home.Application.Common; using BB84.Home.Application.Contracts.Requests.Documents; @@ -27,8 +25,7 @@ namespace BB84.Home.Application.Services.Documents; /// The logger service for logging errors and information. /// The service providing information about the current user. /// The repository service for accessing data repositories. -/// The mapper for converting between domain entities and data transfer objects. -internal sealed class DocumentService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService, IMapper mapper) : IDocumentService +internal sealed class DocumentService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService) : IDocumentService { private static readonly Action LogExceptionWithParams = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured. Params = {Parameters}"); @@ -40,10 +37,12 @@ public async Task> CreateAsync(DocumentCreateRequest request, C DocumentEntity document = await PrepareDocumentForCreate(request, token) .ConfigureAwait(false); - await repositoryService.DocumentRepository.CreateAsync(document, token) + await repositoryService.DocumentRepository + .CreateAsync(document, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -75,10 +74,12 @@ public async Task> CreateAsync(IEnumerable> DeleteAsync(Guid id, CancellationToken token if (document is null) return DocumentServiceErrors.DeleteByIdNotFound(id); - await repositoryService.DocumentRepository.DeleteAsync(document, token) + await repositoryService.DocumentRepository + .DeleteAsync(document, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Deleted; @@ -132,10 +135,12 @@ public async Task> DeleteAsync(IEnumerable ids, Cancellat if (documents.Any().IsFalse()) return DocumentServiceErrors.DeleteByIdsNotFound(ids); - await repositoryService.DocumentRepository.DeleteAsync(documents, token) + await repositoryService.DocumentRepository + .DeleteAsync(documents, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Deleted; @@ -158,7 +163,7 @@ public async Task> GetByIdAsync(Guid id, CancellationT if (document is null) return DocumentServiceErrors.GetByIdNotFound(id); - DocumentResponse response = mapper.Map(document); + DocumentResponse response = document.ToResponse(); return response; } @@ -190,7 +195,7 @@ public async Task>> GetPagedByParametersAsy token: token) .ConfigureAwait(false); - IEnumerable result = mapper.Map>(documents); + IEnumerable result = documents.Select(x => x.ToResponse()); return new PagedList(result, totalCount, parameters.PageNumber, parameters.PageSize); } @@ -216,7 +221,8 @@ public async Task> UpdateAsync(DocumentUpdateRequest request, C document = await PrepareDocumentForUpdate(document, request, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Updated; @@ -255,7 +261,8 @@ public async Task> UpdateAsync(IEnumerable PrepareDocumentForCreate(DocumentCreateReques ExtensionEntity extension = await PrepareDocumentExtension(request, token) .ConfigureAwait(false); - DocumentEntity document = mapper.Map(request); + DocumentEntity document = request.ToEntity(); document.UserId = userService.UserId; document.Extension = extension; document.Data = data; @@ -286,7 +293,7 @@ private async Task PrepareDocumentForCreate(DocumentCreateReques private async Task PrepareDocumentForUpdate(DocumentEntity document, DocumentUpdateRequest request, CancellationToken token) { - _ = mapper.Map(request, document); + _ = request.ToEntity(document); DataEntity data = await PrepareDocumentData(request, token) .ConfigureAwait(false); diff --git a/src/BB84.Home.Application/Services/Finance/AccountService.cs b/src/BB84.Home.Application/Services/Finance/AccountService.cs index 9236cba1..459df513 100644 --- a/src/BB84.Home.Application/Services/Finance/AccountService.cs +++ b/src/BB84.Home.Application/Services/Finance/AccountService.cs @@ -1,8 +1,7 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Finance; +using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; +using BB84.Home.Application.Extensions; using BB84.Home.Application.Interfaces.Application.Services.Finance; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; @@ -20,8 +19,7 @@ namespace BB84.Home.Application.Services.Finance; /// The logger service to use. /// The repository service to use. /// The service providing information about the current user. -/// The auto mapper to use. -internal sealed class AccountService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService, IMapper mapper) : IAccountService +internal sealed class AccountService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService) : IAccountService { private static readonly Action LogExceptionWithParams = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured. Params = {Parameters}"); @@ -50,7 +48,7 @@ public async Task> CreateAsync(AccountCreateRequest request, Ca } } - AccountEntity account = mapper.Map(request); + AccountEntity account = request.ToEntity(); if (account.Cards is not null && account.Cards.Count > 0) { @@ -60,10 +58,12 @@ public async Task> CreateAsync(AccountCreateRequest request, Ca account.AccountUsers = [new() { UserId = userService.UserId, Account = account }]; - await repositoryService.AccountRepository.CreateAsync(account, token) + await repositoryService.AccountRepository + .CreateAsync(account, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -79,18 +79,19 @@ public async Task> DeleteAsync(Guid id, CancellationToken token { try { - AccountEntity? accountEntity = await repositoryService.AccountRepository + AccountEntity? entity = await repositoryService.AccountRepository .GetByIdAsync(id, token: token) .ConfigureAwait(false); - if (accountEntity is null) + if (entity is null) return AccountServiceErrors.DeleteAccountNotFound(id); await repositoryService.AccountRepository - .DeleteAsync(accountEntity, token) + .DeleteAsync(entity, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Deleted; @@ -106,14 +107,14 @@ public async Task> GetByIdAsync(Guid id, CancellationTo { try { - AccountEntity? accountEntity = await repositoryService.AccountRepository + AccountEntity? entity = await repositoryService.AccountRepository .GetByIdAsync(id, token: token, includeProperties: nameof(AccountEntity.Cards)) .ConfigureAwait(false); - if (accountEntity is null) + if (entity is null) return AccountServiceErrors.GetByIdNotFound(id); - AccountResponse response = mapper.Map(accountEntity); + AccountResponse response = entity.ToResponse(); return response; } @@ -128,11 +129,11 @@ public async Task>> GetAllAsync(Cancellatio { try { - IEnumerable accountEntities = await repositoryService.AccountRepository + IReadOnlyList entities = await repositoryService.AccountRepository .GetAllAsync(token: token) .ConfigureAwait(false); - IEnumerable result = mapper.Map>(accountEntities); + IEnumerable result = entities.Select(x => x.ToResponse()); return result.ToList(); } @@ -147,16 +148,17 @@ public async Task> UpdateAsync(Guid id, AccountUpdateRequest re { try { - AccountEntity? account = await repositoryService.AccountRepository + AccountEntity? entity = await repositoryService.AccountRepository .GetByIdAsync(id, trackChanges: true, token: token) .ConfigureAwait(false); - if (account is null) + if (entity is null) return AccountServiceErrors.UpdateAccountNotFound(id); - _ = mapper.Map(request, account); + entity = request.ToEntity(entity); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Updated; diff --git a/src/BB84.Home.Application/Services/Finance/CardService.cs b/src/BB84.Home.Application/Services/Finance/CardService.cs index e6d25e0d..18b12233 100644 --- a/src/BB84.Home.Application/Services/Finance/CardService.cs +++ b/src/BB84.Home.Application/Services/Finance/CardService.cs @@ -1,8 +1,7 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Finance; +using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; +using BB84.Home.Application.Extensions; using BB84.Home.Application.Interfaces.Application.Services.Finance; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; @@ -20,8 +19,7 @@ namespace BB84.Home.Application.Services.Finance; /// The logger service to use. /// The repository service to use. /// The service providing information about the current user. -/// The auto mapper to use. -internal sealed class CardService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService, IMapper mapper) : ICardService +internal sealed class CardService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService) : ICardService { private static readonly Action LogExceptionWithParams = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured. Params = {Parameters}"); @@ -44,15 +42,14 @@ public async Task> CreateAsync(Guid accountId, CardCreateReques if (cardEntity is not null) return CardServiceErrors.CreateNumberConflict(request.PAN); - CardEntity newCard = mapper.Map(request); - - newCard.UserId = userService.UserId; - newCard.AccountId = accountId; + CardEntity newCard = request.ToEntity(userService.UserId, accountId); - await repositoryService.CardRepository.CreateAsync(newCard, token) + await repositoryService.CardRepository + .CreateAsync(newCard, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -69,17 +66,19 @@ public async Task> DeleteAsync(Guid id, CancellationToken token { try { - CardEntity? cardEntity = await repositoryService.CardRepository + CardEntity? entity = await repositoryService.CardRepository .GetByIdAsync(id, token: token) .ConfigureAwait(false); - if (cardEntity is null) + if (entity is null) return CardServiceErrors.DeleteNotFound(id); - await repositoryService.CardRepository.DeleteAsync(cardEntity, token) + await repositoryService.CardRepository + .DeleteAsync(entity, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Deleted; @@ -95,14 +94,14 @@ public async Task> GetByIdAsync(Guid id, CancellationToken { try { - CardEntity? cardEntity = await repositoryService.CardRepository + CardEntity? entity = await repositoryService.CardRepository .GetByIdAsync(id, token: token) .ConfigureAwait(false); - if (cardEntity is null) + if (entity is null) return CardServiceErrors.GetByIdNotFound(id); - CardResponse response = mapper.Map(cardEntity); + CardResponse response = entity.ToResponse(); return response; } @@ -117,11 +116,11 @@ public async Task>> GetAllAsync(CancellationTo { try { - IEnumerable cardEntries = await repositoryService.CardRepository + IReadOnlyList entities = await repositoryService.CardRepository .GetAllAsync(token: token) .ConfigureAwait(false); - IEnumerable response = mapper.Map>(cardEntries); + IEnumerable response = entities.Select(x => x.ToResponse()); return response.ToList(); } @@ -136,14 +135,14 @@ public async Task> UpdateAsync(Guid id, CardUpdateRequest reque { try { - CardEntity? cardEntity = await repositoryService.CardRepository + CardEntity? entity = await repositoryService.CardRepository .GetByIdAsync(id, trackChanges: true, token: token) .ConfigureAwait(false); - if (cardEntity is null) + if (entity is null) return CardServiceErrors.UpdateNotFound(id); - _ = mapper.Map(request, cardEntity); + entity = request.ToEntity(entity); _ = await repositoryService.CommitChangesAsync(token) .ConfigureAwait(false); diff --git a/src/BB84.Home.Application/Services/Finance/TransactionService.cs b/src/BB84.Home.Application/Services/Finance/TransactionService.cs index cd90bb33..4b9c9781 100644 --- a/src/BB84.Home.Application/Services/Finance/TransactionService.cs +++ b/src/BB84.Home.Application/Services/Finance/TransactionService.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Finance; +using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Extensions; @@ -21,8 +19,7 @@ namespace BB84.Home.Application.Services.Finance; /// /// The logger service to use. /// The repository service to use. -/// The auto mapper to use. -internal sealed class TransactionService(ILoggerService loggerService, IRepositoryService repositoryService, IMapper mapper) : ITransactionService +internal sealed class TransactionService(ILoggerService loggerService, IRepositoryService repositoryService) : ITransactionService { private static readonly Action LogExceptionWithParams = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured. Params = {Parameters}"); @@ -38,14 +35,16 @@ public async Task> CreateByAccountId(Guid accountId, Transactio if (accountEntity is null) return TransactionServiceErrors.CreateByAccountIdNotFound(accountId); - TransactionEntity transaction = mapper.Map(request); + TransactionEntity transaction = request.ToEntity(); transaction.AccountTransactions = [new() { Account = accountEntity, Transaction = transaction }]; - await repositoryService.TransactionRepository.CreateAsync(transaction, token) + await repositoryService.TransactionRepository + .CreateAsync(transaction, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -68,14 +67,16 @@ public async Task> CreateByCardId(Guid cardId, TransactionCreat if (cardEntity is null) return TransactionServiceErrors.CreateByCardIdNotFound(cardId); - TransactionEntity transaction = mapper.Map(request); + TransactionEntity transaction = request.ToEntity(); transaction.CardTransactions = [new() { Card = cardEntity, Transaction = transaction }]; - await repositoryService.TransactionRepository.CreateAsync(transaction, token) + await repositoryService.TransactionRepository + .CreateAsync(transaction, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -102,7 +103,8 @@ await repositoryService.TransactionRepository .DeleteAsync(entity, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Deleted; @@ -130,7 +132,8 @@ await repositoryService.TransactionRepository .DeleteAsync(entity, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Deleted; @@ -154,7 +157,7 @@ public async Task> GetByAccountId(Guid accountId, G if (entity is null) return TransactionServiceErrors.GetByIdNotFound(id); - TransactionResponse response = mapper.Map(entity); + TransactionResponse response = entity.ToResponse(); return response; } @@ -177,7 +180,7 @@ public async Task> GetByCardId(Guid cardId, Guid id if (entity is null) return TransactionServiceErrors.GetByIdNotFound(id); - TransactionResponse response = mapper.Map(entity); + TransactionResponse response = entity.ToResponse(); return response; } @@ -193,7 +196,7 @@ public async Task>> GetPagedByAccountId( { try { - IEnumerable entities = await repositoryService.TransactionRepository + IReadOnlyList entities = await repositoryService.TransactionRepository .GetManyByConditionAsync( expression: x => x.AccountTransactions.Select(x => x.AccountId).Contains(id), queryFilter: x => x.FilterByParameters(parameters), @@ -210,7 +213,7 @@ public async Task>> GetPagedByAccountId( token: token) .ConfigureAwait(false); - IEnumerable result = mapper.Map>(entities); + IEnumerable result = entities.Select(x => x.ToResponse()); return new PagedList(result, totalCount, parameters.PageNumber, parameters.PageSize); } @@ -225,7 +228,7 @@ public async Task>> GetPagedByCardId(Gui { try { - IEnumerable entities = await repositoryService.TransactionRepository + IReadOnlyList entities = await repositoryService.TransactionRepository .GetManyByConditionAsync( expression: x => x.CardTransactions.Select(x => x.CardId).Contains(id), queryFilter: x => x.FilterByParameters(parameters), @@ -242,7 +245,7 @@ public async Task>> GetPagedByCardId(Gui token: token) .ConfigureAwait(false); - IEnumerable result = mapper.Map>(entities); + IEnumerable result = entities.Select(x => x.ToResponse()); return new PagedList(result, totalCount, parameters.PageNumber, parameters.PageSize); } @@ -264,9 +267,10 @@ public async Task> UpdateByAccountId(Guid accountId, Guid id, T if (entity is null) return TransactionServiceErrors.UpdateByAccountIdNotFound(id); - _ = mapper.Map(request, entity); + entity = request.ToEntity(entity); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Updated; @@ -290,9 +294,10 @@ public async Task> UpdateByCardId(Guid cardId, Guid id, Transac if (entity is null) return TransactionServiceErrors.UpdateByCardIdNotFound(id); - _ = mapper.Map(request, entity); + entity = request.ToEntity(entity); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Updated; diff --git a/src/BB84.Home.Application/Services/Identity/AuthenticationService.cs b/src/BB84.Home.Application/Services/Identity/AuthenticationService.cs index ebb5469a..fd259225 100644 --- a/src/BB84.Home.Application/Services/Identity/AuthenticationService.cs +++ b/src/BB84.Home.Application/Services/Identity/AuthenticationService.cs @@ -1,11 +1,10 @@ using System.Security.Claims; -using AutoMapper; - using BB84.Extensions; using BB84.Home.Application.Contracts.Requests.Identity; using BB84.Home.Application.Contracts.Responses.Identity; using BB84.Home.Application.Errors.Services; +using BB84.Home.Application.Extensions; using BB84.Home.Application.Interfaces.Application.Services.Identity; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Domain.Entities.Identity; @@ -26,8 +25,7 @@ namespace BB84.Home.Application.Services.Identity; /// The token service instance to use. /// The role service instance to use. /// The user service instance to use. -/// The auto mapper instance to use. -internal sealed class AuthenticationService(ILoggerService logger, ITokenService tokenService, IRoleService roleService, IUserService userService, IMapper mapper) : IAuthenticationService +internal sealed class AuthenticationService(ILoggerService logger, ITokenService tokenService, IRoleService roleService, IUserService userService) : IAuthenticationService { private static readonly Action LogException = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured."); @@ -129,7 +127,7 @@ public async Task> CreateUser(UserCreateRequest request) { try { - UserEntity user = mapper.Map(request); + UserEntity user = request.ToEntity(); IdentityResult result = await userService.CreateAsync(user, request.Password) .ConfigureAwait(false); @@ -169,7 +167,7 @@ public async Task>> GetAllUser() IList userEntities = await userService.GetUsersInRoleAsync(RoleType.User.GetName()) .ConfigureAwait(false); - IEnumerable response = mapper.Map>(userEntities); + IEnumerable response = userEntities.Select(x => x.ToResponse()); return response.ToList(); } @@ -190,8 +188,7 @@ public async Task> GetUserById(Guid userId) if (user is null) return AuthenticationServiceErrors.UserByIdNotFound(userId); - UserResponse response = - mapper.Map(user); + UserResponse response = user.ToResponse(); return response; } @@ -212,7 +209,7 @@ public async Task> GetUserByName(string userName) if (user is null) return AuthenticationServiceErrors.UserByNameNotFound(userName); - UserResponse response = mapper.Map(user); + UserResponse response = user.ToResponse(); return response; } @@ -340,7 +337,7 @@ public async Task> UpdateUser(Guid userId, UserUpdateRequest re if (user is null) return AuthenticationServiceErrors.UserByIdNotFound(userId); - _ = mapper.Map(request, user); + user = request.ToEntity(user); IdentityResult result = await userService.UpdateAsync(user) .ConfigureAwait(false); diff --git a/src/BB84.Home.Application/Services/Todo/TodoService.cs b/src/BB84.Home.Application/Services/Todo/TodoService.cs index 1bfe06c5..41b8bc31 100644 --- a/src/BB84.Home.Application/Services/Todo/TodoService.cs +++ b/src/BB84.Home.Application/Services/Todo/TodoService.cs @@ -1,8 +1,7 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Requests.Todo; +using BB84.Home.Application.Contracts.Requests.Todo; using BB84.Home.Application.Contracts.Responses.Todo; using BB84.Home.Application.Errors.Services; +using BB84.Home.Application.Extensions; using BB84.Home.Application.Interfaces.Application.Services.Todo; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; @@ -10,6 +9,7 @@ using BB84.Home.Domain.Errors; using BB84.Home.Domain.Results; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; namespace BB84.Home.Application.Services.Todo; @@ -21,8 +21,7 @@ namespace BB84.Home.Application.Services.Todo; /// The logger service for logging errors and information. /// The service providing information about the current user. /// The repository service for accessing data repositories. -/// The mapper for converting between domain entities and data transfer objects. -internal sealed class TodoService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService, IMapper mapper) : ITodoService +internal sealed class TodoService(ILoggerService loggerService, ICurrentUserService userService, IRepositoryService repositoryService) : ITodoService { private static readonly Action LogExceptionWithParams = LoggerMessage.Define(LogLevel.Error, 0, "Exception occured. Params = {Parameters}"); @@ -31,13 +30,14 @@ public async Task> CreateListAsync(ListCreateRequest request, C { try { - ListEntity list = MapFromRequest(request); - list.UserId = userService.UserId; + ListEntity entity = request.ToEntity(userService.UserId); - await repositoryService.TodoListRepository.CreateAsync(list, token) + await repositoryService.TodoListRepository + .CreateAsync(entity, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -60,13 +60,14 @@ public async Task> CreateItemAsync(Guid listId, ItemCreateReque if (list is null) return TodoServiceErrors.GetListByIdNotFound(listId); - ItemEntity item = MapFromRequest(request); - item.ListId = listId; + ItemEntity item = request.ToEntity(listId); - await repositoryService.TodoItemRepository.CreateAsync(item, token) + await repositoryService.TodoItemRepository + .CreateAsync(item, token) .ConfigureAwait(false); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Created; @@ -136,16 +137,18 @@ public async Task> GetListAsync(Guid listId, CancellationT { try { - ListEntity? todoList = await repositoryService.TodoListRepository - .GetByIdAsync(listId, token: token, includeProperties: nameof(ListEntity.Items)) + ListResponse? listResponse = await repositoryService.TodoListRepository + .GetByConditionAsync( + expression: x => x.Id == listId, + selector: listEntity => listEntity.ToResponse(), + queryFilter: qf => qf.Include(x => x.Items), + token: token) .ConfigureAwait(false); - if (todoList is null) + if (listResponse is null) return TodoServiceErrors.GetListByIdNotFound(listId); - ListResponse response = MapToResponse(todoList); - - return response; + return listResponse; } catch (Exception ex) { @@ -158,11 +161,11 @@ public async Task>> GetAllListsAsync(Cancellat { try { - IEnumerable todoLists = await repositoryService.TodoListRepository + IReadOnlyList entities = await repositoryService.TodoListRepository .GetAllAsync(token: token) .ConfigureAwait(false); - IEnumerable response = MapToResponse(todoLists); + IEnumerable response = entities.Select(x => x.ToResponse()); return response.ToList(); } @@ -184,9 +187,10 @@ public async Task> UpdateListAsync(Guid listId, ListUpdateReque if (list is null) return TodoServiceErrors.GetListByIdNotFound(listId); - _ = MapFromRequest(request, list); + list = request.ToEntity(list); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Updated; @@ -209,9 +213,10 @@ public async Task> UpdateItemAsync(Guid itemId, ItemUpdateReque if (item is null) return TodoServiceErrors.GetItemByIdNotFound(itemId); - _ = MapFromRequest(request, item); + item = request.ToEntity(item); - _ = await repositoryService.CommitChangesAsync(token) + _ = await repositoryService + .CommitChangesAsync(token) .ConfigureAwait(false); return Result.Updated; @@ -222,22 +227,4 @@ public async Task> UpdateItemAsync(Guid itemId, ItemUpdateReque return TodoServiceErrors.UpdateItemByIdFailed(itemId); } } - - private ListEntity MapFromRequest(ListCreateRequest request) - => mapper.Map(request); - - private ItemEntity MapFromRequest(ItemCreateRequest request) - => mapper.Map(request); - - private ListResponse MapToResponse(ListEntity list) - => mapper.Map(list); - - private IEnumerable MapToResponse(IEnumerable lists) - => lists.Select(MapToResponse); - - private ListEntity MapFromRequest(ListUpdateRequest request, ListEntity list) - => mapper.Map(request, list); - - private ItemEntity MapFromRequest(ItemUpdateRequest request, ItemEntity item) - => mapper.Map(request, item); } diff --git a/src/BB84.Home.Domain/Entities/Todo/ListEntity.cs b/src/BB84.Home.Domain/Entities/Todo/ListEntity.cs index c25d94de..d37cf596 100644 --- a/src/BB84.Home.Domain/Entities/Todo/ListEntity.cs +++ b/src/BB84.Home.Domain/Entities/Todo/ListEntity.cs @@ -28,7 +28,7 @@ public class ListEntity : AuditedEntity /// /// The items within the todo list. /// - public virtual ICollection Items { get; set; } = default!; + public virtual ICollection Items { get; } = []; /// /// The navigational property. diff --git a/src/BB84.Home.Infrastructure/BB84.Home.Infrastructure.csproj b/src/BB84.Home.Infrastructure/BB84.Home.Infrastructure.csproj index 07c1f7ab..4c340de6 100644 --- a/src/BB84.Home.Infrastructure/BB84.Home.Infrastructure.csproj +++ b/src/BB84.Home.Infrastructure/BB84.Home.Infrastructure.csproj @@ -3,6 +3,7 @@ + diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/AttendanceRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/AttendanceRepository.cs index a879d0b1..74bda410 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/AttendanceRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/AttendanceRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; using BB84.Home.Domain.Entities.Attendance; namespace BB84.Home.Infrastructure.Persistence.Repositories; /// -/// The attendance repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class AttendanceRepository(IDbContext dbContext) : IdentityRepository(dbContext), IAttendanceRepository +internal sealed class AttendanceRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IAttendanceRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentDataRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentDataRepository.cs index 6479280c..da3c5475 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentDataRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentDataRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Documents; using BB84.Home.Domain.Entities.Documents; namespace BB84.Home.Infrastructure.Persistence.Repositories.Documents; /// -/// The document data repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class DocumentDataRepository(IDbContext dbContext) : IdentityRepository(dbContext), IDocumentDataRepository +internal sealed class DocumentDataRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IDocumentDataRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentExtensionRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentExtensionRepository.cs index 27307669..c06b3226 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentExtensionRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentExtensionRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Documents; using BB84.Home.Domain.Entities.Documents; namespace BB84.Home.Infrastructure.Persistence.Repositories.Documents; /// -/// The document extension repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class DocumentExtensionRepository(IDbContext dbContext) : IdentityRepository(dbContext), IDocumentExtensionRepository +internal sealed class DocumentExtensionRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IDocumentExtensionRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentRepository.cs index c20e10f0..46f6d564 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Documents/DocumentRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Documents; using BB84.Home.Domain.Entities.Documents; namespace BB84.Home.Infrastructure.Persistence.Repositories.Documents; /// -/// The document repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class DocumentRepository(IDbContext dbContext) : IdentityRepository(dbContext), IDocumentRepository +internal sealed class DocumentRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IDocumentRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/AccountRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/AccountRepository.cs index e7e97d25..ddaf7338 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/AccountRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/AccountRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Domain.Entities.Finance; namespace BB84.Home.Infrastructure.Persistence.Repositories.Finance; /// -/// The account repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class AccountRepository(IDbContext dbContext) : IdentityRepository(dbContext), IAccountRepository +internal sealed class AccountRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IAccountRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/CardRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/CardRepository.cs index aaaac41d..20044ea0 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/CardRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/CardRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Domain.Entities.Finance; namespace BB84.Home.Infrastructure.Persistence.Repositories.Finance; /// -/// The card repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class CardRepository(IDbContext dbContext) : IdentityRepository(dbContext), ICardRepository +internal sealed class CardRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), ICardRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/TransactionRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/TransactionRepository.cs index f9e3ca2b..a7349f50 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/TransactionRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Finance/TransactionRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Domain.Entities.Finance; namespace BB84.Home.Infrastructure.Persistence.Repositories.Finance; /// -/// The transaction repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class TransactionRepository(IDbContext dbContext) : IdentityRepository(dbContext), ITransactionRepository +internal sealed class TransactionRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), ITransactionRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ItemRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ItemRepository.cs index 20b8faae..aebf396f 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ItemRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ItemRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; using BB84.Home.Domain.Entities.Todo; namespace BB84.Home.Infrastructure.Persistence.Repositories.Todo; /// -/// The item repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class ItemRepository(IDbContext dbContext) : IdentityRepository(dbContext), IItemRepository +internal sealed class ItemRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IItemRepository { } diff --git a/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ListRepository.cs b/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ListRepository.cs index 8c74e7b4..63f2faf5 100644 --- a/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ListRepository.cs +++ b/src/BB84.Home.Infrastructure/Persistence/Repositories/Todo/ListRepository.cs @@ -1,13 +1,13 @@ using BB84.EntityFrameworkCore.Repositories; -using BB84.EntityFrameworkCore.Repositories.Abstractions; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; using BB84.Home.Domain.Entities.Todo; namespace BB84.Home.Infrastructure.Persistence.Repositories.Todo; /// -/// The list repository class. +/// Represents the repository for the entity. /// -/// -internal sealed class ListRepository(IDbContext dbContext) : IdentityRepository(dbContext), IListRepository +internal sealed class ListRepository(IRepositoryContext repositoryContext) + : IdentityRepository(repositoryContext), IListRepository { } diff --git a/src/BB84.Home.Infrastructure/Services/RepositoryService.cs b/src/BB84.Home.Infrastructure/Services/RepositoryService.cs index ad55adf0..aa15922f 100644 --- a/src/BB84.Home.Infrastructure/Services/RepositoryService.cs +++ b/src/BB84.Home.Infrastructure/Services/RepositoryService.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Interfaces.Infrastructure.Persistence; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Documents; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; using BB84.Home.Application.Interfaces.Infrastructure.Services; diff --git a/src/BB84.Home.Presentation/BB84.Home.Presentation.csproj b/src/BB84.Home.Presentation/BB84.Home.Presentation.csproj index 492e72ad..3528e2d8 100644 --- a/src/BB84.Home.Presentation/BB84.Home.Presentation.csproj +++ b/src/BB84.Home.Presentation/BB84.Home.Presentation.csproj @@ -7,5 +7,6 @@ + diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateAsync.cs index eae8e5ce..b9c1a5d0 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Requests.Attendance; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; @@ -19,6 +20,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.CreateAsync))] public async Task CreateAsyncShouldReturnConflictWhenExistingEntryFound() { Guid id = Guid.NewGuid(); @@ -46,6 +48,7 @@ public async Task CreateAsyncShouldReturnConflictWhenExistingEntryFound() } [TestMethod] + [TestCategory(nameof(AttendanceService.CreateAsync))] public async Task CreateAsyncShouldReturnCreatedWhenSuccessful() { Guid id = Guid.NewGuid(); @@ -77,6 +80,7 @@ public async Task CreateAsyncShouldReturnCreatedWhenSuccessful() } [TestMethod] + [TestCategory(nameof(AttendanceService.CreateAsync))] public async Task CreateAsyncShouldReturnFailedWhenExceptionIsThrown() { Guid userId = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateMultipleAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateMultipleAsync.cs index c165e590..7b963329 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateMultipleAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.CreateMultipleAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Requests.Attendance; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; @@ -19,6 +20,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.CreateAsync))] public async Task CreateMultipleAsyncShouldReturnConflictWhenExistingEntriesFound() { IReadOnlyList requests = [RequestHelper.GetAttendanceCreateRequest()]; @@ -44,6 +46,7 @@ public async Task CreateMultipleAsyncShouldReturnConflictWhenExistingEntriesFoun } [TestMethod] + [TestCategory(nameof(AttendanceService.CreateAsync))] public async Task CreateMultipleAsyncShouldReturnCreatedWhenSuccessful() { IReadOnlyList requests = [RequestHelper.GetAttendanceCreateRequest()]; @@ -72,6 +75,7 @@ public async Task CreateMultipleAsyncShouldReturnCreatedWhenSuccessful() } [TestMethod] + [TestCategory(nameof(AttendanceService.CreateAsync))] public async Task CreateMultipleAsyncShouldReturnFailedWhenExceptionIsThrown() { Guid userId = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteAsync.cs index 4c4857e1..d069e65c 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteAsync.cs @@ -1,5 +1,6 @@ using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; using BB84.Home.Domain.Errors; @@ -17,6 +18,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.DeleteAsync))] public async Task DeleteByIdShouldReturnFailedWhenExceptionIsThrown() { Guid id = Guid.NewGuid(); @@ -35,6 +37,7 @@ public async Task DeleteByIdShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] + [TestCategory(nameof(AttendanceService.DeleteAsync))] public async Task DeleteByIdShouldReturnNotFoundWhenNotFound() { Guid id = Guid.NewGuid(); @@ -59,6 +62,7 @@ public async Task DeleteByIdShouldReturnNotFoundWhenNotFound() } [TestMethod] + [TestCategory(nameof(AttendanceService.DeleteAsync))] public async Task DeleteByIdShouldReturnDeletedWhenSuccessful() { Guid id = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteMultipleAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteMultipleAsync.cs index 371caa0f..4cfc22a4 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteMultipleAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.DeleteMultipleAsync.cs @@ -1,5 +1,6 @@ using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; using BB84.Home.Domain.Errors; @@ -17,6 +18,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.DeleteAsync))] public async Task DeleteMultipleAsyncShouldReturnFailedWhenExceptionIsThrown() { IReadOnlyList ids = [Guid.NewGuid(), Guid.NewGuid()]; @@ -36,6 +38,7 @@ public async Task DeleteMultipleAsyncShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] + [TestCategory(nameof(AttendanceService.DeleteAsync))] public async Task DeleteMultipleAsyncShouldReturnNotFoundWhenNotFound() { IReadOnlyList ids = [Guid.NewGuid(), Guid.NewGuid()]; @@ -60,6 +63,7 @@ public async Task DeleteMultipleAsyncShouldReturnNotFoundWhenNotFound() } [TestMethod] + [TestCategory(nameof(AttendanceService.DeleteAsync))] public async Task DeleteMultipleAsyncShouldReturnDeletedWhenSuccessful() { IReadOnlyList ids = [Guid.NewGuid(), Guid.NewGuid()]; diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetByDateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetByDateAsync.cs index a606eff0..f18277f9 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetByDateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetByDateAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Responses.Attendance; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; using BB84.Home.Domain.Enumerators.Attendance; @@ -18,6 +19,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.GetByDateAsync))] public async Task GetByDateShouldReturnFailedWhenExceptionIsThrown() { Guid userId = Guid.NewGuid(); @@ -40,6 +42,7 @@ public async Task GetByDateShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] + [TestCategory(nameof(AttendanceService.GetByDateAsync))] public async Task GetByDateShouldReturnNotFoundWhenNotFound() { Guid userId = Guid.NewGuid(); @@ -65,6 +68,7 @@ public async Task GetByDateShouldReturnNotFoundWhenNotFound() } [TestMethod] + [TestCategory(nameof(AttendanceService.GetByDateAsync))] public async Task GetByDateShouldReturnValidResultWhenSuccessful() { Guid userId = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetPagedByParametersAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetPagedByParametersAsync.cs index 82a79b7e..bd0ef2e5 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetPagedByParametersAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.GetPagedByParametersAsync.cs @@ -5,6 +5,7 @@ using BB84.Home.Application.Features.Requests; using BB84.Home.Application.Features.Responses; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; using BB84.Home.Domain.Errors; @@ -21,6 +22,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.GetPagedByParametersAsync))] public async Task GetPagedByParametersShouldReturnFailedWhenExceptionIsThrown() { Guid userId = Guid.NewGuid(); @@ -40,6 +42,7 @@ public async Task GetPagedByParametersShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] + [TestCategory(nameof(AttendanceService.GetPagedByParametersAsync))] public async Task GetPagedByParametersShouldReturnResultWhenSuccessful() { Guid userId = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateAsync.cs index bf1c24aa..e171a79f 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Requests.Attendance; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; @@ -20,6 +21,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.UpdateAsync))] public async Task UpdateAsyncShouldReturnNotFoundWhenNotFound() { AttendanceUpdateRequest request = RequestHelper.GetAttendanceUpdateRequest(); @@ -43,6 +45,7 @@ public async Task UpdateAsyncShouldReturnNotFoundWhenNotFound() } [TestMethod] + [TestCategory(nameof(AttendanceService.UpdateAsync))] public async Task UpdateAsyncShouldReturnCreatedWhenSuccessful() { AttendanceUpdateRequest request = RequestHelper.GetAttendanceUpdateRequest(); @@ -73,6 +76,7 @@ public async Task UpdateAsyncShouldReturnCreatedWhenSuccessful() } [TestMethod] + [TestCategory(nameof(AttendanceService.UpdateAsync))] public async Task UpdateAsyncShouldReturnFailedWhenExceptionIsThrown() { AttendanceUpdateRequest request = RequestHelper.GetAttendanceUpdateRequest(); diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateMultipleAsync.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateMultipleAsync.cs index f01e7411..c97c55f3 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateMultipleAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.UpdateMultipleAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Requests.Attendance; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Services.Attendance; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Attendance; @@ -20,6 +21,7 @@ namespace ApplicationTests.Services.Attendance; public sealed partial class AttendanceServiceTests { [TestMethod] + [TestCategory(nameof(AttendanceService.UpdateAsync))] public async Task UpdateMultipleAsyncShouldReturnNotFoundWhenNotFound() { IReadOnlyList emptyList = []; @@ -44,6 +46,7 @@ public async Task UpdateMultipleAsyncShouldReturnNotFoundWhenNotFound() } [TestMethod] + [TestCategory(nameof(AttendanceService.UpdateAsync))] public async Task UpdateMultipleAsyncShouldReturnCreatedWhenSuccessful() { IEnumerable requests = [RequestHelper.GetAttendanceUpdateRequest()]; @@ -74,6 +77,7 @@ public async Task UpdateMultipleAsyncShouldReturnCreatedWhenSuccessful() } [TestMethod] + [TestCategory(nameof(AttendanceService.UpdateAsync))] public async Task UpdateMultipleAsyncShouldReturnFailedWhenExceptionIsThrown() { IEnumerable requests = [RequestHelper.GetAttendanceUpdateRequest()]; diff --git a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.cs index 3b83b19c..e08f8531 100644 --- a/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Attendance/AttendanceServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Interfaces.Infrastructure.Services; +using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; using BB84.Home.Application.Services.Attendance; using BB84.Home.Application.Tests; @@ -15,7 +13,6 @@ public sealed partial class AttendanceServiceTests : ApplicationTestBase { private readonly CancellationToken _cancellationToken; private readonly AttendanceService _sut; - private readonly IMapper _mapper = GetService(); private readonly Mock> _loggerServiceMock = new(); private readonly Mock _repositoryServiceMock = new(); private readonly Mock _currentUserServiceMock = new(); @@ -23,6 +20,6 @@ public sealed partial class AttendanceServiceTests : ApplicationTestBase public AttendanceServiceTests() { _cancellationToken = CancellationToken.None; - _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object, _mapper); + _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object); } } \ No newline at end of file diff --git a/tests/BB84.Home.Application.Tests/Services/Common/CalendarServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Common/CalendarServiceTests.cs index 040c0c3f..19ddfb58 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/CalendarServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/CalendarServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Contracts.Responses.Common; +using BB84.Home.Application.Contracts.Responses.Common; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Features.Requests; using BB84.Home.Application.Features.Responses; @@ -19,7 +17,6 @@ namespace BB84.Home.Application.Tests.Services.Common; [SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, unit testing.")] public sealed class CalendarServiceTests : ApplicationTestBase { - private readonly IMapper _mapper = GetService(); private Mock _dateTimeServiceMock = default!; private Mock> _loggerServiceMock = default!; @@ -115,6 +112,6 @@ private CalendarService CreateMockedInstance() _dateTimeServiceMock = new(); _loggerServiceMock = new(); - return new(_dateTimeServiceMock.Object, _loggerServiceMock.Object, _mapper); + return new(_dateTimeServiceMock.Object, _loggerServiceMock.Object); } } \ No newline at end of file diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAccountTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAccountTypes.cs index 1d36cfe9..98cc2c8f 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAccountTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAccountTypes.cs @@ -14,7 +14,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetAccountTypes))] public void GetAccountTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetAccountTypes(); @@ -31,16 +31,16 @@ public void GetAccountTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetAccountTypes))] public void GetAccountTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetAccountTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetAccountTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Should().BeEmpty(); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAttendanceTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAttendanceTypes.cs index f83c66c8..e6b6c740 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAttendanceTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetAttendanceTypes.cs @@ -1,5 +1,4 @@ using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Errors; @@ -14,7 +13,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetAttendanceTypes))] public void GetAttendanceTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetAttendanceTypes(); @@ -31,16 +30,16 @@ public void GetAttendanceTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetAttendanceTypes))] public void GetAttendanceTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetAttendanceTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetAttendanceTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Count.Should().Be(0); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetCardTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetCardTypes.cs index 0fd8cde4..8b0cf5c7 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetCardTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetCardTypes.cs @@ -1,5 +1,4 @@ using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Errors; @@ -14,7 +13,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetCardTypes))] public void GetCardTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetCardTypes(); @@ -31,16 +30,16 @@ public void GetCardTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetCardTypes))] public void GetCardTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetCardTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetCardTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Count.Should().Be(0); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetDocumentTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetDocumentTypes.cs index 16a96f53..ae7f93d3 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetDocumentTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetDocumentTypes.cs @@ -1,5 +1,4 @@ using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Errors; @@ -14,7 +13,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetDocumentTypes))] public void GetDocumentTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetDocumentTypes(); @@ -31,16 +30,16 @@ public void GetDocumentTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetDocumentTypes))] public void GetDocumentTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetDocumentTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetDocumentTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Count.Should().Be(0); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetPriorityLevelTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetPriorityLevelTypes.cs index f8a68672..75082199 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetPriorityLevelTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetPriorityLevelTypes.cs @@ -1,5 +1,4 @@ using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Errors; @@ -14,7 +13,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetPriorityLevelTypes))] public void GetPriorityLevelTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetPriorityLevelTypes(); @@ -31,16 +30,16 @@ public void GetPriorityLevelTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetPriorityLevelTypes))] public void GetPriorityLevelTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetPriorityLevelTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetPriorityLevelTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Count.Should().Be(0); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetRoleTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetRoleTypes.cs index d3aa0400..8841e3b3 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetRoleTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetRoleTypes.cs @@ -1,5 +1,4 @@ using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Errors; @@ -13,7 +12,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetRoleTypes))] public void GetRoleTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetRoleTypes(); @@ -30,16 +29,16 @@ public void GetRoleTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetRoleTypes))] public void GetRoleTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetRoleTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetRoleTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Count.Should().Be(0); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetWorkDayTypes.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetWorkDayTypes.cs index e4f3fca7..6ec51669 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetWorkDayTypes.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.GetWorkDayTypes.cs @@ -1,5 +1,4 @@ using BB84.Home.Application.Contracts.Responses.Common; -using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Errors; @@ -14,7 +13,7 @@ public sealed partial class EnumeratorServiceTests [TestCategory(nameof(EnumeratorService.GetWorkDayTypes))] public void GetWorkDayTypesShouldReturnResultWhenSuccessful() { - EnumeratorService sut = CreateMockedInstance(_mapper); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetWorkDayTypes(); @@ -31,16 +30,16 @@ public void GetWorkDayTypesShouldReturnResultWhenSuccessful() [TestCategory(nameof(EnumeratorService.GetWorkDayTypes))] public void GetWorkDayTypesShouldReturnFailedWhenExceptionGetThrown() { - EnumeratorService sut = CreateMockedInstance(null!); + EnumeratorService sut = CreateMockedInstance(); ErrorOr> result = sut.GetWorkDayTypes(); AssertionHelper.AssertInScope(() => { result.Should().NotBeNull(); - result.IsError.Should().BeTrue(); - result.Errors.First().Should().Be(EnumeratorServiceErrors.GetWorkDayTypesFailed); - result.Value.Should().BeNullOrEmpty(); + result.IsError.Should().BeFalse(); + result.Errors.Count.Should().Be(0); + result.Value.Should().NotBeNullOrEmpty(); }); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.cs index 6e8bc0f0..a16911b2 100644 --- a/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Common/EnumeratorServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Interfaces.Infrastructure.Services; +using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Services.Common; using BB84.Home.Application.Tests; @@ -12,13 +10,12 @@ namespace ApplicationTests.Services.Common; [SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, unit testing.")] public sealed partial class EnumeratorServiceTests : ApplicationTestBase { - private readonly IMapper _mapper = GetService(); private Mock> _loggerServiceMock = default!; - private EnumeratorService CreateMockedInstance(IMapper mapper) + private EnumeratorService CreateMockedInstance() { _loggerServiceMock = new(); - return new(_loggerServiceMock.Object, mapper); + return new(_loggerServiceMock.Object); } } \ No newline at end of file diff --git a/tests/BB84.Home.Application.Tests/Services/Documents/DocumentServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Documents/DocumentServiceTests.cs index c2425762..c303308b 100644 --- a/tests/BB84.Home.Application.Tests/Services/Documents/DocumentServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Documents/DocumentServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Extensions; +using BB84.Extensions; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; using BB84.Home.Application.Services.Documents; @@ -22,12 +20,11 @@ public sealed partial class DocumentServiceTests : ApplicationTestBase private readonly Mock> _loggerServiceMock = new(); private readonly Mock _currentUserService = new(); private readonly Mock _repositoryServiceMock = new(); - private readonly IMapper _mapper = GetService(); public DocumentServiceTests() { _cancellationToken = CancellationToken.None; - _sut = new(_loggerServiceMock.Object, _currentUserService.Object, _repositoryServiceMock.Object, _mapper); + _sut = new(_loggerServiceMock.Object, _currentUserService.Object, _repositoryServiceMock.Object); } private static DocumentEntity CreateDocument(Guid? id = null) diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.CreateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.CreateAsync.cs index 04a2e703..30d0b206 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.CreateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.CreateAsync.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.DeleteAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.DeleteAsync.cs index 70f0e411..867695bd 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.DeleteAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.DeleteAsync.cs @@ -1,5 +1,5 @@ using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Finance; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetAllAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetAllAsync.cs index 55852d1f..4e23c5ef 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetAllAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetAllAsync.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Finance; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetByIdAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetByIdAsync.cs index 297fa74a..56499ebd 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetByIdAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.GetByIdAsync.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Finance; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.UpdateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.UpdateAsync.cs index c6c637c8..2b691d0e 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.UpdateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.UpdateAsync.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.cs index 1f1e32f1..c62468dc 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/AccountServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Interfaces.Infrastructure.Services; +using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; @@ -14,7 +12,6 @@ namespace ApplicationTests.Services.Finance; public sealed partial class AccountServiceTests : ApplicationTestBase { private readonly CancellationToken _cancellationToken; - private readonly IMapper _mapper; private readonly AccountService _sut; private readonly Mock> _loggerServiceMock = new(); private readonly Mock _currentUserServiceMock = new(); @@ -23,7 +20,6 @@ public sealed partial class AccountServiceTests : ApplicationTestBase public AccountServiceTests() { _cancellationToken = CancellationToken.None; - _mapper = GetService(); - _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object, _mapper); + _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object); } } \ No newline at end of file diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.CreateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.CreateAsync.cs index 79072cf2..39528136 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.CreateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.CreateAsync.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.DeleteAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.DeleteAsync.cs index 30278b50..55fb70af 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.DeleteAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.DeleteAsync.cs @@ -1,5 +1,5 @@ using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Finance; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetById.cs b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetById.cs index a79d876b..332e2123 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetById.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetById.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetByUserId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetByUserId.cs index e60a2596..1473ff22 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetByUserId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.GetByUserId.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Finance; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.UpdateAsync.cs b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.UpdateAsync.cs index 9058fcb9..37147a60 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.UpdateAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.UpdateAsync.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.cs index 4516391d..bebcc31e 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/CardServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; using BB84.Home.Application.Services.Finance; @@ -15,7 +13,6 @@ namespace ApplicationTests.Services.Finance; public sealed partial class CardServiceTests : ApplicationTestBase { private readonly CancellationToken _cancellationToken; - private readonly IMapper _mapper; private readonly CardService _sut; private readonly Mock> _loggerServiceMock = new(); private readonly Mock _currentUserServiceMock = new(); @@ -24,8 +21,7 @@ public sealed partial class CardServiceTests : ApplicationTestBase public CardServiceTests() { _cancellationToken = CancellationToken.None; - _mapper = GetService(); - _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object, _mapper); + _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object); } private CardService CreateMockedInstance(IAccountRepository? accountRepository = null, ICardRepository? cardRepository = null) @@ -36,6 +32,6 @@ private CardService CreateMockedInstance(IAccountRepository? accountRepository = if (cardRepository is not null) _repositoryServiceMock.Setup(x => x.CardRepository).Returns(cardRepository); - return new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object, _mapper); + return new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object); } } \ No newline at end of file diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByAccountId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByAccountId.cs index 69a4b27f..592f464a 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByAccountId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByAccountId.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByCardId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByCardId.cs index 826858b7..dcf59e51 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByCardId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.CreateByCardId.cs @@ -1,6 +1,6 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByAccountId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByAccountId.cs index 178ff6d2..f33e9cbc 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByAccountId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByAccountId.cs @@ -1,5 +1,5 @@ using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByCardId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByCardId.cs index 36bdc4c0..982981d4 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByCardId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.DeleteByCardId.cs @@ -1,5 +1,5 @@ using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByAccountId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByAccountId.cs index cbb9f4a4..21f0c8e5 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByAccountId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByAccountId.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByCardId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByCardId.cs index 7d139401..09b34228 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByCardId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetByCardId.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Responses.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByAccountId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByAccountId.cs index 29c870b1..01e85a55 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByAccountId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByAccountId.cs @@ -4,7 +4,7 @@ using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Features.Requests; using BB84.Home.Application.Features.Responses; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByCardId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByCardId.cs index d437fb75..a88b669d 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByCardId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.GetPagedByCardId.cs @@ -4,7 +4,7 @@ using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Features.Requests; using BB84.Home.Application.Features.Responses; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Base.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByAccountId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByAccountId.cs index 48059d0a..8a3ddcbe 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByAccountId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByAccountId.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByCardId.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByCardId.cs index 01ada41a..1a132db5 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByCardId.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.UpdateByCardId.cs @@ -2,7 +2,7 @@ using BB84.Home.Application.Contracts.Requests.Finance; using BB84.Home.Application.Errors.Services; -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; using BB84.Home.Application.Tests.Helpers; diff --git a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.cs index 7a7f1627..53d8d6c1 100644 --- a/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Finance/TransactionServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories; +using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Finance; using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Services.Finance; using BB84.Home.Application.Tests; @@ -14,14 +12,12 @@ namespace ApplicationTests.Services.Finance; public sealed partial class TransactionServiceTests : ApplicationTestBase { private readonly CancellationToken _cancellationToken; - private readonly IMapper _mapper; private Mock> _loggerServiceMock = default!; private Mock _repositoryServiceMock = default!; public TransactionServiceTests() { _cancellationToken = CancellationToken.None; - _mapper = GetService(); } private TransactionService CreateMockedInstance(IAccountRepository? accountRepository = null, ICardRepository? cardRepository = null, ITransactionRepository? transactionRepository = null) @@ -38,6 +34,6 @@ private TransactionService CreateMockedInstance(IAccountRepository? accountRepos if (transactionRepository is not null) _repositoryServiceMock.Setup(x => x.TransactionRepository).Returns(transactionRepository); - return new(_loggerServiceMock.Object, _repositoryServiceMock.Object, _mapper); + return new(_loggerServiceMock.Object, _repositoryServiceMock.Object); } } diff --git a/tests/BB84.Home.Application.Tests/Services/Identity/AuthenticationServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Identity/AuthenticationServiceTests.cs index eb35033f..451ec1fa 100644 --- a/tests/BB84.Home.Application.Tests/Services/Identity/AuthenticationServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Identity/AuthenticationServiceTests.cs @@ -1,8 +1,6 @@ using System.Security.Claims; using System.Security.Principal; -using AutoMapper; - using BB84.Home.Application.Contracts.Requests.Identity; using BB84.Home.Application.Interfaces.Application.Services.Identity; using BB84.Home.Application.Interfaces.Infrastructure.Services; @@ -22,7 +20,6 @@ namespace ApplicationTests.Services.Identity; [SuppressMessage("Style", "IDE0058", Justification = "Not relevant here, unit testing.")] public sealed partial class AuthenticationServiceTests : ApplicationTestBase { - private readonly IMapper _mapper = GetService(); private Mock> _bearerSettingsMock = default!; private Mock _tokenServiceMock = default!; private Mock> _loggerServiceMock = default!; @@ -53,10 +50,8 @@ private AuthenticationService CreateMockedInstance(BearerSettingsOption? setting logger: _loggerServiceMock.Object, tokenService: _tokenServiceMock.Object, roleService: _roleServiceMock.Object, - userService: _userServiceMock.Object, - mapper: _mapper + userService: _userServiceMock.Object ); - return authenticationService; } diff --git a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateItemAsync.cs b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateItemAsync.cs index eb45f20f..bbcb8ee5 100644 --- a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateItemAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateItemAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Requests.Todo; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; +using BB84.Home.Application.Services.Todo; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Todo; @@ -19,6 +20,7 @@ namespace ApplicationTests.Services.Todo; public sealed partial class TodoServiceTests { [TestMethod] + [TestCategory(nameof(TodoService.CreateItemAsync))] public async Task CreateItemAsyncShouldReturnFailedWhenExceptionIsThrown() { Guid listId = Guid.NewGuid(); @@ -38,6 +40,7 @@ public async Task CreateItemAsyncShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] + [TestCategory(nameof(TodoService.CreateItemAsync))] public async Task CreateItemAsyncShouldReturnNotFoundWhenNotFound() { Guid listId = Guid.NewGuid(); @@ -63,6 +66,7 @@ public async Task CreateItemAsyncShouldReturnNotFoundWhenNotFound() } [TestMethod] + [TestCategory(nameof(TodoService.CreateItemAsync))] public async Task CreateItemAsyncShouldReturnCreatedWhenSuccessful() { Guid listId = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateListAsync.cs b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateListAsync.cs index 25602f3d..36892669 100644 --- a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateListAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.CreateListAsync.cs @@ -1,6 +1,7 @@ using BB84.Home.Application.Contracts.Requests.Todo; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; +using BB84.Home.Application.Services.Todo; using BB84.Home.Application.Tests.Helpers; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Todo; @@ -19,6 +20,7 @@ namespace ApplicationTests.Services.Todo; public sealed partial class TodoServiceTests { [TestMethod] + [TestCategory(nameof(TodoService.CreateListAsync))] public async Task CreateListAsyncShouldReturnFailedWhenExceptionIsThrown() { Guid userId = Guid.NewGuid(); @@ -40,6 +42,7 @@ public async Task CreateListAsyncShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] + [TestCategory(nameof(TodoService.CreateListAsync))] public async Task CreateListAsyncShouldReturnCreatedWhenSuccessful() { Guid userId = Guid.NewGuid(); diff --git a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetAllListsAsync.cs b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetAllListsAsync.cs index 57ef1414..be56c7ce 100644 --- a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetAllListsAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetAllListsAsync.cs @@ -4,6 +4,7 @@ using BB84.Home.Application.Contracts.Responses.Todo; using BB84.Home.Application.Errors.Services; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; +using BB84.Home.Application.Services.Todo; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Todo; using BB84.Home.Domain.Errors; @@ -20,7 +21,7 @@ namespace ApplicationTests.Services.Todo; public sealed partial class TodoServiceTests { [TestMethod] - [TestCategory("Methods")] + [TestCategory(nameof(TodoService.GetAllListsAsync))] public async Task GetAllListsAsyncShouldReturnFailedWhenExceptionIsThrown() { Guid userId = Guid.NewGuid(); @@ -41,7 +42,7 @@ public async Task GetAllListsAsyncShouldReturnFailedWhenExceptionIsThrown() } [TestMethod] - [TestCategory("Methods")] + [TestCategory(nameof(TodoService.GetAllListsAsync))] public async Task GetAllListsAsyncShouldReturnValidResultWhenSuccessful() { Guid userId = Guid.NewGuid(); @@ -65,7 +66,7 @@ public async Task GetAllListsAsyncShouldReturnValidResultWhenSuccessful() result.Errors.Should().BeEmpty(); result.Value.First().Title.Should().Be(list.Title); result.Value.First().Color.Should().Be(list.Color?.ToRGBHexString()); - result.Value.First().Items.Should().BeNull(); + result.Value.First().Items.Should().BeEmpty(); listMock.Verify(x => x.GetAllAsync(false, false, _cancellationToken), Times.Once); _loggerServiceMock.Verify(x => x.Log(It.IsAny>(), userId, It.IsAny()), Times.Never); }); diff --git a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetListAsync.cs b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetListAsync.cs index b3ef07bb..9f6b4302 100644 --- a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetListAsync.cs +++ b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.GetListAsync.cs @@ -1,8 +1,10 @@ using System.Drawing; +using System.Linq.Expressions; using BB84.Extensions; using BB84.Home.Application.Contracts.Responses.Todo; using BB84.Home.Application.Errors.Services; +using BB84.Home.Application.Extensions; using BB84.Home.Application.Interfaces.Infrastructure.Persistence.Repositories.Todo; using BB84.Home.Base.Tests.Helpers; using BB84.Home.Domain.Entities.Todo; @@ -44,8 +46,12 @@ public async Task GetListAsyncShouldReturnNotFoundWhenNotFound() Guid listId = Guid.NewGuid(); CancellationToken token = CancellationToken.None; Mock listMock = new(); - listMock.Setup(x => x.GetByIdAsync(listId, default, default, _cancellationToken, nameof(ListEntity.Items))) - .Returns(Task.FromResult(null)); + listMock.Setup(x => x.GetByConditionAsync( + It.IsAny>>(), + It.IsAny>>(), + null, It.IsAny, IQueryable>?>(), + false, _cancellationToken) + ).Returns(Task.FromResult(null)); _repositoryServiceMock.Setup(x => x.TodoListRepository) .Returns(listMock.Object); @@ -58,7 +64,7 @@ public async Task GetListAsyncShouldReturnNotFoundWhenNotFound() result.Should().NotBeNull(); result.IsError.Should().BeTrue(); result.Errors.First().Should().Be(TodoServiceErrors.GetListByIdNotFound(listId)); - listMock.Verify(x => x.GetByIdAsync(listId, default, default, _cancellationToken, nameof(ListEntity.Items)), Times.Once); + listMock.Verify(x => x.GetByConditionAsync(It.IsAny>>(), It.IsAny>>(), null, It.IsAny, IQueryable>?>(), false, _cancellationToken), Times.Once); _loggerServiceMock.Verify(x => x.Log(It.IsAny>(), listId, It.IsAny()), Times.Never); }); } @@ -69,10 +75,16 @@ public async Task GetListAsyncShouldReturnValidResultWhenSuccessful() Guid listId = Guid.NewGuid(); CancellationToken token = CancellationToken.None; ItemEntity item = new() { Id = Guid.NewGuid(), Title = "UnitTest", Note = "UnitTest", Priority = PriorityLevelType.Medium, Reminder = DateTime.Today, Done = true }; - ListEntity list = new() { Id = listId, Title = "UnitTest", Color = Color.Black, Items = [item] }; + ListEntity list = new() { Id = listId, Title = "UnitTest", Color = Color.Black }; + list.Items.Add(item); + ListResponse listResponse = list.ToResponse(); Mock listMock = new(); - listMock.Setup(x => x.GetByIdAsync(listId, default, default, _cancellationToken, nameof(ListEntity.Items))) - .Returns(Task.FromResult(list)); + listMock.Setup(x => x.GetByConditionAsync( + It.IsAny>>(), + It.IsAny>>(), + null, It.IsAny, IQueryable>?>(), + false, _cancellationToken) + ).Returns(Task.FromResult(listResponse)); _repositoryServiceMock.Setup(x => x.TodoListRepository) .Returns(listMock.Object); @@ -94,7 +106,7 @@ public async Task GetListAsyncShouldReturnValidResultWhenSuccessful() result.Value.Items?.First().Priority.Should().Be(item.Priority); result.Value.Items?.First().Reminder.Should().Be(item.Reminder); result.Value.Items?.First().Done.Should().Be(item.Done); - listMock.Verify(x => x.GetByIdAsync(listId, default, default, _cancellationToken, nameof(ListEntity.Items)), Times.Once); + listMock.Verify(x => x.GetByConditionAsync(It.IsAny>>(), It.IsAny>>(), null, It.IsAny, IQueryable>?>(), false, _cancellationToken), Times.Once); _loggerServiceMock.Verify(x => x.Log(It.IsAny>(), listId, It.IsAny()), Times.Never); }); } diff --git a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.cs b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.cs index 30db9abd..11892034 100644 --- a/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.cs +++ b/tests/BB84.Home.Application.Tests/Services/Todo/TodoServiceTests.cs @@ -1,6 +1,4 @@ -using AutoMapper; - -using BB84.Home.Application.Interfaces.Infrastructure.Services; +using BB84.Home.Application.Interfaces.Infrastructure.Services; using BB84.Home.Application.Interfaces.Presentation.Services; using BB84.Home.Application.Services.Todo; using BB84.Home.Application.Tests; @@ -15,7 +13,6 @@ public sealed partial class TodoServiceTests : ApplicationTestBase { private readonly CancellationToken _cancellationToken; private readonly TodoService _sut; - private readonly IMapper _mapper = GetService(); private readonly Mock> _loggerServiceMock = new(); private readonly Mock _repositoryServiceMock = new(); private readonly Mock _currentUserServiceMock = new(); @@ -23,6 +20,6 @@ public sealed partial class TodoServiceTests : ApplicationTestBase public TodoServiceTests() { _cancellationToken = CancellationToken.None; - _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object, _mapper); + _sut = new(_loggerServiceMock.Object, _currentUserServiceMock.Object, _repositoryServiceMock.Object); } } \ No newline at end of file