From 4f838ea0411445f6d7757273515062f2faac1ee7 Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Mon, 11 Jan 2021 22:17:07 +0200 Subject: Added Interfaces for all repository classes --- .../Repositories/Contracts/ILanguageRepository.cs | 13 +++++ .../Repositories/Contracts/IPostRepository.cs | 21 +++++++ .../Repositories/Contracts/IRepository.cs | 21 +++++++ .../Repositories/Contracts/IRoleRepository.cs | 15 +++++ .../Contracts/ITechnologyRepository.cs | 13 +++++ .../Repositories/Contracts/IUserRepository.cs | 26 +++++++++ src/DevHive.Data/Repositories/IRepository.cs | 21 ------- .../Repositories/LanguageRepository.cs | 4 +- src/DevHive.Data/Repositories/PostRepository.cs | 4 +- src/DevHive.Data/Repositories/RoleRepository.cs | 4 +- .../Repositories/TechnologyRepository.cs | 6 +- src/DevHive.Data/Repositories/UserRepository.cs | 4 +- src/DevHive.Services/Services/LanguageService.cs | 6 +- src/DevHive.Services/Services/PostService.cs | 8 +-- src/DevHive.Services/Services/RoleService.cs | 6 +- src/DevHive.Services/Services/TechnologyService.cs | 6 +- src/DevHive.Services/Services/UserService.cs | 8 +-- .../TechnologyRepository.Tests.cs | 1 - .../DevHive.Services.Tests.csproj | 2 + .../TechnologyService.Tests.cs | 64 ++++++++++++++++++++++ .../DevHive.Services.Tests/UnitTest1.cs | 18 ------ 21 files changed, 203 insertions(+), 68 deletions(-) create mode 100644 src/DevHive.Data/Repositories/Contracts/ILanguageRepository.cs create mode 100644 src/DevHive.Data/Repositories/Contracts/IPostRepository.cs create mode 100644 src/DevHive.Data/Repositories/Contracts/IRepository.cs create mode 100644 src/DevHive.Data/Repositories/Contracts/IRoleRepository.cs create mode 100644 src/DevHive.Data/Repositories/Contracts/ITechnologyRepository.cs create mode 100644 src/DevHive.Data/Repositories/Contracts/IUserRepository.cs delete mode 100644 src/DevHive.Data/Repositories/IRepository.cs create mode 100644 src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs delete mode 100644 src/DevHive.Tests/DevHive.Services.Tests/UnitTest1.cs (limited to 'src') diff --git a/src/DevHive.Data/Repositories/Contracts/ILanguageRepository.cs b/src/DevHive.Data/Repositories/Contracts/ILanguageRepository.cs new file mode 100644 index 0000000..e44d27b --- /dev/null +++ b/src/DevHive.Data/Repositories/Contracts/ILanguageRepository.cs @@ -0,0 +1,13 @@ +using DevHive.Data.Models; +using System; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Contracts +{ + public interface ILanguageRepository : IRepository + { + public Task DoesLanguageNameExist(string languageName); + + public Task DoesLanguageExist(Guid id); + } +} diff --git a/src/DevHive.Data/Repositories/Contracts/IPostRepository.cs b/src/DevHive.Data/Repositories/Contracts/IPostRepository.cs new file mode 100644 index 0000000..930138a --- /dev/null +++ b/src/DevHive.Data/Repositories/Contracts/IPostRepository.cs @@ -0,0 +1,21 @@ +using DevHive.Data.Models; +using System; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Contracts +{ + public interface IPostRepository : IRepository + { + public Task AddCommentAsync(Comment entity); + + public Task GetCommentByIdAsync(Guid id); + + public Task EditCommentAsync(Comment newEntity); + + public Task DeleteCommentAsync(Comment entity); + + public Task DoesPostExist(Guid postId); + + public Task DoesCommentExist(Guid id); + } +} diff --git a/src/DevHive.Data/Repositories/Contracts/IRepository.cs b/src/DevHive.Data/Repositories/Contracts/IRepository.cs new file mode 100644 index 0000000..37c5170 --- /dev/null +++ b/src/DevHive.Data/Repositories/Contracts/IRepository.cs @@ -0,0 +1,21 @@ +using System; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Contracts +{ + public interface IRepository + where TEntity : class + { + //Add Entity to database + Task AddAsync(TEntity entity); + + //Find entity by id + Task GetByIdAsync(Guid id); + + //Modify Entity from database + Task EditAsync(TEntity newEntity); + + //Delete Entity from database + Task DeleteAsync(TEntity entity); + } +} \ No newline at end of file diff --git a/src/DevHive.Data/Repositories/Contracts/IRoleRepository.cs b/src/DevHive.Data/Repositories/Contracts/IRoleRepository.cs new file mode 100644 index 0000000..6cb8a4e --- /dev/null +++ b/src/DevHive.Data/Repositories/Contracts/IRoleRepository.cs @@ -0,0 +1,15 @@ +using DevHive.Data.Models; +using System; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Contracts +{ + public interface IRoleRepository : IRepository + { + public Task GetByNameAsync(string name); + + public Task DoesNameExist(string name); + + public Task DoesRoleExist(Guid id); + } +} diff --git a/src/DevHive.Data/Repositories/Contracts/ITechnologyRepository.cs b/src/DevHive.Data/Repositories/Contracts/ITechnologyRepository.cs new file mode 100644 index 0000000..3c4a6b6 --- /dev/null +++ b/src/DevHive.Data/Repositories/Contracts/ITechnologyRepository.cs @@ -0,0 +1,13 @@ +using DevHive.Data.Models; +using System; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Contracts +{ + public interface ITechnologyRepository : IRepository + { + public Task DoesTechnologyNameExist(string technologyName); + + public Task DoesTechnologyExist(Guid id); + } +} diff --git a/src/DevHive.Data/Repositories/Contracts/IUserRepository.cs b/src/DevHive.Data/Repositories/Contracts/IUserRepository.cs new file mode 100644 index 0000000..74c4486 --- /dev/null +++ b/src/DevHive.Data/Repositories/Contracts/IUserRepository.cs @@ -0,0 +1,26 @@ +using DevHive.Data.Models; +using System; +using System.Collections.Generic; +using System.Threading.Tasks; + +namespace DevHive.Data.Repositories.Contracts +{ + public interface IUserRepository : IRepository + { + public Task AddFriendAsync(User user, User friend); + + public IEnumerable QueryAll(); + + public Task GetByUsername(string username); + + public Task RemoveFriendAsync(User user, User friend); + + public bool DoesUserExist(Guid id); + + public bool DoesUserHaveThisUsername(Guid id, string username); + + public Task DoesUsernameExist(string username); + + public Task DoesEmailExist(string email); + } +} diff --git a/src/DevHive.Data/Repositories/IRepository.cs b/src/DevHive.Data/Repositories/IRepository.cs deleted file mode 100644 index 96762b9..0000000 --- a/src/DevHive.Data/Repositories/IRepository.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Threading.Tasks; - -namespace Data.Models.Interfaces.Database -{ - public interface IRepository - where TEntity : class - { - //Add Entity to database - Task AddAsync(TEntity entity); - - //Find entity by id - Task GetByIdAsync(Guid id); - - //Modify Entity from database - Task EditAsync(TEntity newEntity); - - //Delete Entity from database - Task DeleteAsync(TEntity entity); - } -} \ No newline at end of file diff --git a/src/DevHive.Data/Repositories/LanguageRepository.cs b/src/DevHive.Data/Repositories/LanguageRepository.cs index 1ab870a..243192a 100644 --- a/src/DevHive.Data/Repositories/LanguageRepository.cs +++ b/src/DevHive.Data/Repositories/LanguageRepository.cs @@ -1,13 +1,13 @@ using System; using System.Threading.Tasks; -using Data.Models.Interfaces.Database; using DevHive.Common.Models.Misc; using DevHive.Data.Models; +using DevHive.Data.Repositories.Contracts; using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class LanguageRepository : IRepository + public class LanguageRepository : ILanguageRepository { private readonly DevHiveContext _context; diff --git a/src/DevHive.Data/Repositories/PostRepository.cs b/src/DevHive.Data/Repositories/PostRepository.cs index 5dfee0b..0acfc23 100644 --- a/src/DevHive.Data/Repositories/PostRepository.cs +++ b/src/DevHive.Data/Repositories/PostRepository.cs @@ -1,13 +1,13 @@ using System; using System.Threading.Tasks; -using Data.Models.Interfaces.Database; using DevHive.Common.Models.Misc; using DevHive.Data.Models; +using DevHive.Data.Repositories.Contracts; using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class PostRepository : IRepository + public class PostRepository : IPostRepository { private readonly DevHiveContext _context; diff --git a/src/DevHive.Data/Repositories/RoleRepository.cs b/src/DevHive.Data/Repositories/RoleRepository.cs index fd04866..d6f83a8 100644 --- a/src/DevHive.Data/Repositories/RoleRepository.cs +++ b/src/DevHive.Data/Repositories/RoleRepository.cs @@ -1,13 +1,13 @@ using System; using System.Threading.Tasks; -using Data.Models.Interfaces.Database; using DevHive.Common.Models.Misc; using DevHive.Data.Models; +using DevHive.Data.Repositories.Contracts; using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class RoleRepository : IRepository + public class RoleRepository : IRoleRepository { private readonly DevHiveContext _context; diff --git a/src/DevHive.Data/Repositories/TechnologyRepository.cs b/src/DevHive.Data/Repositories/TechnologyRepository.cs index 492c6d2..27918ca 100644 --- a/src/DevHive.Data/Repositories/TechnologyRepository.cs +++ b/src/DevHive.Data/Repositories/TechnologyRepository.cs @@ -1,16 +1,16 @@ using System; using System.Threading.Tasks; -using Data.Models.Interfaces.Database; using DevHive.Common.Models.Misc; using DevHive.Data.Models; +using DevHive.Data.Repositories.Contracts; using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class TechnologyRepository : IRepository + public abstract class TechnologyRepository : ITechnologyRepository { - private readonly DevHiveContext _context; + private DevHiveContext _context; public TechnologyRepository(DevHiveContext context) { diff --git a/src/DevHive.Data/Repositories/UserRepository.cs b/src/DevHive.Data/Repositories/UserRepository.cs index 5600451..5142b82 100644 --- a/src/DevHive.Data/Repositories/UserRepository.cs +++ b/src/DevHive.Data/Repositories/UserRepository.cs @@ -2,14 +2,14 @@ using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using Data.Models.Interfaces.Database; using DevHive.Common.Models.Misc; using DevHive.Data.Models; +using DevHive.Data.Repositories.Contracts; using Microsoft.EntityFrameworkCore; namespace DevHive.Data.Repositories { - public class UserRepository : IRepository + public class UserRepository : IUserRepository { private readonly DevHiveContext _context; diff --git a/src/DevHive.Services/Services/LanguageService.cs b/src/DevHive.Services/Services/LanguageService.cs index 3493292..3c011c6 100644 --- a/src/DevHive.Services/Services/LanguageService.cs +++ b/src/DevHive.Services/Services/LanguageService.cs @@ -2,17 +2,17 @@ using System; using System.Threading.Tasks; using AutoMapper; using DevHive.Data.Models; -using DevHive.Data.Repositories; +using DevHive.Data.Repositories.Contracts; using DevHive.Services.Models.Language; namespace DevHive.Services.Services { public class LanguageService { - private readonly LanguageRepository _languageRepository; + private readonly ILanguageRepository _languageRepository; private readonly IMapper _languageMapper; - public LanguageService(LanguageRepository languageRepository, IMapper mapper) + public LanguageService(ILanguageRepository languageRepository, IMapper mapper) { this._languageRepository = languageRepository; this._languageMapper = mapper; diff --git a/src/DevHive.Services/Services/PostService.cs b/src/DevHive.Services/Services/PostService.cs index b2ea694..e0a2be9 100644 --- a/src/DevHive.Services/Services/PostService.cs +++ b/src/DevHive.Services/Services/PostService.cs @@ -3,21 +3,21 @@ using System.Collections.Generic; using System.Threading.Tasks; using AutoMapper; using DevHive.Data.Models; -using DevHive.Data.Repositories; using DevHive.Services.Models.Post.Comment; using DevHive.Services.Models.Post.Post; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; +using DevHive.Data.Repositories.Contracts; namespace DevHive.Services.Services { public class PostService { - private readonly PostRepository _postRepository; - private readonly UserRepository _userRepository; + private readonly IPostRepository _postRepository; + private readonly IUserRepository _userRepository; private readonly IMapper _postMapper; - public PostService(PostRepository postRepository, UserRepository userRepository , IMapper postMapper) + public PostService(IPostRepository postRepository, IUserRepository userRepository , IMapper postMapper) { this._postRepository = postRepository; this._userRepository = userRepository; diff --git a/src/DevHive.Services/Services/RoleService.cs b/src/DevHive.Services/Services/RoleService.cs index 7ba0a98..372984d 100644 --- a/src/DevHive.Services/Services/RoleService.cs +++ b/src/DevHive.Services/Services/RoleService.cs @@ -3,16 +3,16 @@ using System.Threading.Tasks; using AutoMapper; using DevHive.Common.Models.Identity; using DevHive.Data.Models; -using DevHive.Data.Repositories; +using DevHive.Data.Repositories.Contracts; namespace DevHive.Services.Services { public class RoleService { - private readonly RoleRepository _roleRepository; + private readonly IRoleRepository _roleRepository; private readonly IMapper _roleMapper; - public RoleService(RoleRepository roleRepository, IMapper mapper) + public RoleService(IRoleRepository roleRepository, IMapper mapper) { this._roleRepository = roleRepository; this._roleMapper = mapper; diff --git a/src/DevHive.Services/Services/TechnologyService.cs b/src/DevHive.Services/Services/TechnologyService.cs index 2913a55..e03d4d1 100644 --- a/src/DevHive.Services/Services/TechnologyService.cs +++ b/src/DevHive.Services/Services/TechnologyService.cs @@ -2,17 +2,17 @@ using System; using System.Threading.Tasks; using AutoMapper; using DevHive.Data.Models; -using DevHive.Data.Repositories; +using DevHive.Data.Repositories.Contracts; using DevHive.Services.Models.Technology; namespace DevHive.Services.Services { public class TechnologyService { - private readonly TechnologyRepository _technologyRepository; + private readonly ITechnologyRepository _technologyRepository; private readonly IMapper _technologyMapper; - public TechnologyService(TechnologyRepository technologyRepository, IMapper technologyMapper) + public TechnologyService(ITechnologyRepository technologyRepository, IMapper technologyMapper) { this._technologyRepository = technologyRepository; this._technologyMapper = technologyMapper; diff --git a/src/DevHive.Services/Services/UserService.cs b/src/DevHive.Services/Services/UserService.cs index 7fd0682..c8bcab9 100644 --- a/src/DevHive.Services/Services/UserService.cs +++ b/src/DevHive.Services/Services/UserService.cs @@ -1,5 +1,4 @@ using AutoMapper; -using DevHive.Data.Repositories; using DevHive.Services.Options; using DevHive.Services.Models.Identity.User; using System.Threading.Tasks; @@ -12,17 +11,18 @@ using System.Security.Cryptography; using System.Text; using System.Collections.Generic; using DevHive.Common.Models.Identity; +using DevHive.Data.Repositories.Contracts; namespace DevHive.Services.Services { public class UserService { - private readonly UserRepository _userRepository; - private readonly RoleRepository _roleRepository; + private readonly IUserRepository _userRepository; + private readonly IRoleRepository _roleRepository; private readonly IMapper _userMapper; private readonly JWTOptions _jwtOptions; - public UserService(UserRepository userRepository, RoleRepository roleRepository, IMapper mapper, JWTOptions jwtOptions) + public UserService(IUserRepository userRepository, IRoleRepository roleRepository, IMapper mapper, JWTOptions jwtOptions) { this._userRepository = userRepository; this._roleRepository = roleRepository; diff --git a/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs b/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs index fcec727..ee0ca4b 100644 --- a/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs +++ b/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs @@ -132,7 +132,6 @@ namespace DevHive.Data.Tests } #endregion - //TO DO #region EditAsync [Test] public void EditAsync_UpdatesEntity() diff --git a/src/DevHive.Tests/DevHive.Services.Tests/DevHive.Services.Tests.csproj b/src/DevHive.Tests/DevHive.Services.Tests/DevHive.Services.Tests.csproj index 7cc8473..fb94b61 100644 --- a/src/DevHive.Tests/DevHive.Services.Tests/DevHive.Services.Tests.csproj +++ b/src/DevHive.Tests/DevHive.Services.Tests/DevHive.Services.Tests.csproj @@ -7,6 +7,8 @@ + + diff --git a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs new file mode 100644 index 0000000..d38146f --- /dev/null +++ b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs @@ -0,0 +1,64 @@ +using AutoMapper; +using DevHive.Data; +using DevHive.Data.Models; +using DevHive.Data.Repositories; +using DevHive.Data.Repositories.Contracts; +using DevHive.Services.Models.Technology; +using DevHive.Services.Services; +using Microsoft.EntityFrameworkCore; +using Moq; +using NUnit.Framework; +using System.Threading.Tasks; + +namespace DevHive.Services.Tests +{ + [TestFixture] + public class TechnologyServiceTests + { + protected Mock TechnologyRepositoryMock { get; set; } + protected Mock MapperMock { get; set; } + protected TechnologyService TechnologyService { get; set; } + + [SetUp] + public void Setup() + { + this.TechnologyRepositoryMock = new Mock(); + this.MapperMock = new Mock(); + this.TechnologyService = new TechnologyService(this.TechnologyRepositoryMock.Object, this.MapperMock.Object); + } + + #region Create + [Test] + public void Create_ReturnsTrue_WhenEntityIsAddedSuccessfully() + { + Task.Run(async () => + { + TechnologyServiceModel technologyServiceModel = new TechnologyServiceModel + { + Name = "Some name" + }; + Technology technology = new Technology + { + Name = "Some name" + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(It.IsAny())).Returns(Task.FromResult(false)); + this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); + + bool result = await this.TechnologyService.Create(technologyServiceModel); + + Assert.IsTrue(result, "Create returns false when entity is created successfully"); + }).GetAwaiter().GetResult(); + } + + + #endregion + + [Test] + public void Test() + { + Assert.IsTrue(true); + } + } +} diff --git a/src/DevHive.Tests/DevHive.Services.Tests/UnitTest1.cs b/src/DevHive.Tests/DevHive.Services.Tests/UnitTest1.cs deleted file mode 100644 index b6681da..0000000 --- a/src/DevHive.Tests/DevHive.Services.Tests/UnitTest1.cs +++ /dev/null @@ -1,18 +0,0 @@ -using NUnit.Framework; - -namespace DevHive.Services.Tests -{ - public class Tests - { - [SetUp] - public void Setup() - { - } - - [Test] - public void Test1() - { - Assert.Pass(); - } - } -} \ No newline at end of file -- cgit v1.2.3