aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDanail Dimitrov <danaildimitrov321@gmail.com>2021-01-11 22:17:07 +0200
committerDanail Dimitrov <danaildimitrov321@gmail.com>2021-01-11 22:17:07 +0200
commit4f838ea0411445f6d7757273515062f2faac1ee7 (patch)
treeba6bbd08464e1c84a9b648d33f159dbb1acc3caa /src
parent66c18934c0bfe375b906da1b591e8cb02292f85f (diff)
downloadDevHive-4f838ea0411445f6d7757273515062f2faac1ee7.tar
DevHive-4f838ea0411445f6d7757273515062f2faac1ee7.tar.gz
DevHive-4f838ea0411445f6d7757273515062f2faac1ee7.zip
Added Interfaces for all repository classes
Diffstat (limited to 'src')
-rw-r--r--src/DevHive.Data/Repositories/Contracts/ILanguageRepository.cs13
-rw-r--r--src/DevHive.Data/Repositories/Contracts/IPostRepository.cs21
-rw-r--r--src/DevHive.Data/Repositories/Contracts/IRepository.cs (renamed from src/DevHive.Data/Repositories/IRepository.cs)2
-rw-r--r--src/DevHive.Data/Repositories/Contracts/IRoleRepository.cs15
-rw-r--r--src/DevHive.Data/Repositories/Contracts/ITechnologyRepository.cs13
-rw-r--r--src/DevHive.Data/Repositories/Contracts/IUserRepository.cs26
-rw-r--r--src/DevHive.Data/Repositories/LanguageRepository.cs4
-rw-r--r--src/DevHive.Data/Repositories/PostRepository.cs4
-rw-r--r--src/DevHive.Data/Repositories/RoleRepository.cs4
-rw-r--r--src/DevHive.Data/Repositories/TechnologyRepository.cs6
-rw-r--r--src/DevHive.Data/Repositories/UserRepository.cs4
-rw-r--r--src/DevHive.Services/Services/LanguageService.cs6
-rw-r--r--src/DevHive.Services/Services/PostService.cs8
-rw-r--r--src/DevHive.Services/Services/RoleService.cs6
-rw-r--r--src/DevHive.Services/Services/TechnologyService.cs6
-rw-r--r--src/DevHive.Services/Services/UserService.cs8
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs1
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/DevHive.Services.Tests.csproj2
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs64
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/UnitTest1.cs18
20 files changed, 183 insertions, 48 deletions
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<Language>
+ {
+ public Task<bool> DoesLanguageNameExist(string languageName);
+
+ public Task<bool> 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<Post>
+ {
+ public Task<bool> AddCommentAsync(Comment entity);
+
+ public Task<Comment> GetCommentByIdAsync(Guid id);
+
+ public Task<bool> EditCommentAsync(Comment newEntity);
+
+ public Task<bool> DeleteCommentAsync(Comment entity);
+
+ public Task<bool> DoesPostExist(Guid postId);
+
+ public Task<bool> DoesCommentExist(Guid id);
+ }
+}
diff --git a/src/DevHive.Data/Repositories/IRepository.cs b/src/DevHive.Data/Repositories/Contracts/IRepository.cs
index 96762b9..37c5170 100644
--- a/src/DevHive.Data/Repositories/IRepository.cs
+++ b/src/DevHive.Data/Repositories/Contracts/IRepository.cs
@@ -1,7 +1,7 @@
using System;
using System.Threading.Tasks;
-namespace Data.Models.Interfaces.Database
+namespace DevHive.Data.Repositories.Contracts
{
public interface IRepository<TEntity>
where TEntity : class
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<Role>
+ {
+ public Task<Role> GetByNameAsync(string name);
+
+ public Task<bool> DoesNameExist(string name);
+
+ public Task<bool> 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<Technology>
+ {
+ public Task<bool> DoesTechnologyNameExist(string technologyName);
+
+ public Task<bool> 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<User>
+ {
+ public Task<bool> AddFriendAsync(User user, User friend);
+
+ public IEnumerable<User> QueryAll();
+
+ public Task<User> GetByUsername(string username);
+
+ public Task<bool> RemoveFriendAsync(User user, User friend);
+
+ public bool DoesUserExist(Guid id);
+
+ public bool DoesUserHaveThisUsername(Guid id, string username);
+
+ public Task<bool> DoesUsernameExist(string username);
+
+ public Task<bool> DoesEmailExist(string email);
+ }
+}
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<Language>
+ 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<Post>
+ 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<Role>
+ 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<Technology>
+ 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<User>
+ 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 @@
</PropertyGroup>
<ItemGroup>
+ <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="5.0.1" />
+ <PackageReference Include="Moq" Version="4.15.2" />
<PackageReference Include="NUnit" Version="3.13.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.17.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
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<ITechnologyRepository> TechnologyRepositoryMock { get; set; }
+ protected Mock<IMapper> MapperMock { get; set; }
+ protected TechnologyService TechnologyService { get; set; }
+
+ [SetUp]
+ public void Setup()
+ {
+ this.TechnologyRepositoryMock = new Mock<ITechnologyRepository>();
+ this.MapperMock = new Mock<IMapper>();
+ 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<string>())).Returns(Task.FromResult(false));
+ this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny<Technology>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<Technology>(It.IsAny<TechnologyServiceModel>())).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