aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs146
1 files changed, 136 insertions, 10 deletions
diff --git a/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs b/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs
index 81f62db..f520426 100644
--- a/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs
+++ b/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs
@@ -1,10 +1,10 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading.Tasks;
using DevHive.Data.Models;
using DevHive.Data.Repositories;
using Microsoft.EntityFrameworkCore;
-using Moq;
using NUnit.Framework;
namespace DevHive.Data.Tests
@@ -12,9 +12,13 @@ namespace DevHive.Data.Tests
[TestFixture]
public class UserRepositoryTests
{
- private DevHiveContext _context;
private UserRepository _userRepository;
+
+ private List<Language> _dummyLanguageList;
+ private List<Technology> _dummyTechnologyList;
+ private List<Role> _dummyRoleList;
private User _dummyUser;
+ private User _dummyUserTwo;
[SetUp]
public void Setup()
@@ -23,22 +27,144 @@ namespace DevHive.Data.Tests
var options = new DbContextOptionsBuilder<DevHiveContext>()
.UseInMemoryDatabase("DevHive_UserRepository_Database");
- this._context = new DevHiveContext(options.Options);
- this._userRepository = new UserRepository(_context);
+ var context = new DevHiveContext(options.Options);
+ this._userRepository = new UserRepository(context);
+
+ this._dummyLanguageList = new()
+ {
+ new Language()
+ {
+ Id = Guid.NewGuid(),
+ Name = "csharp"
+ },
+ };
+
+ this._dummyTechnologyList = new()
+ {
+ new Technology()
+ {
+ Id = Guid.NewGuid(),
+ Name = "ASP.NET Core"
+ },
+ };
+
+ this._dummyRoleList = new()
+ {
+ new Role()
+ {
+ Id = Guid.NewGuid(),
+ Name = Role.DefaultRole
+ },
+ };
- this._dummyUser = new Mock<User>().Object;
+ this._dummyUser = new()
+ {
+ Id = Guid.NewGuid(),
+ UserName = "pioneer10",
+ FirstName = "Spas",
+ LastName = "Spasov",
+ Email = "abv@abv.bg",
+ Langauges = this._dummyLanguageList,
+ Technologies = this._dummyTechnologyList,
+ Roles = this._dummyRoleList
+ };
+
+ this._dummyUserTwo = new()
+ {
+ Id = Guid.NewGuid(),
+ UserName = "pioneer10",
+ FirstName = "Alex",
+ LastName = "Spiridonov",
+ Email = "a_spiridonov@abv.bg",
+ Langauges = this._dummyLanguageList,
+ Technologies = this._dummyTechnologyList,
+ Roles = this._dummyRoleList
+ };
+ }
+
+ #region Create
+ [Test]
+ public async Task AddAsync_ShouldAddUserToDatabase()
+ {
+ //Arrange
+
+ //Act
+ bool result = await _userRepository.AddAsync(this._dummyUser);
+
+ //Assert
+ Assert.AreEqual(true, result, "User does not insert into database properly");
+ }
+
+ [Test]
+ public async Task AddFriendToUserAsync_ShouldAddFriendToUsersList()
+ {
+ //Arrange
+ await this._userRepository.AddAsync(this._dummyUser);
+ await this._userRepository.AddAsync(this._dummyUserTwo);
- foreach (var item in _dummyUser.Langauges)
- System.Console.WriteLine(item);
+ //Act
+ bool result = await this._userRepository.AddFriendToUserAsync(this._dummyUser, _dummyUserTwo);
- foreach (var item in _dummyUser.Technologies)
- System.Console.WriteLine(item);
+ //Assert
+ Assert.AreEqual(true, result, "Friend didn't save properly in the database");
+ Assert.AreEqual(true, this._dummyUser.Friends.Contains(_dummyUserTwo), "Friend doesn't get added to user properly");
}
[Test]
- public void AddAsync_ShouldAddUserToDatabase()
+ public async Task AddLanguageToUserAsync_ShouldAddLanguageToUser()
{
+ //Arrange
+ Language language = new()
+ {
+ Id = Guid.NewGuid(),
+ Name = "typescript"
+ };
+
+ foreach (var user in this._userRepository.QueryAll())
+ Console.WriteLine(user);
+
+ //Act
+ bool result = await this._userRepository.AddLanguageToUserAsync(this._dummyUser, language);
+
+ //Assert
+ Assert.AreEqual(true, result, "The language isn't inserted properly to the database");
+ Assert.AreEqual(true, this._dummyUser.Langauges.Contains(language), "The language doesn't get added properly to the user");
+ }
+
+ [Test]
+ public async Task AddTechnologyToUserAsync_ShouldAddTechnologyToUser()
+ {
+ //Arrange
+ await this._userRepository.AddAsync(this._dummyUser);
+ Technology technology = new()
+ {
+ Id = Guid.NewGuid(),
+ Name = "Angular"
+ };
+
+ //Act
+ bool result = await this._userRepository.AddTechnologyToUserAsync(this._dummyUser, technology);
+
+ //Assert
+ Assert.AreEqual(true, result, "The technology isn't inserted properly to the database");
+ Assert.AreEqual(true, this._dummyUser.Technologies.Contains(technology), "The technology doesn't get added properly to the user");
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public async Task QueryAll_ShouldReturnAllUsersFromDatabase()
+ {
+ //Arrange
+ await this._userRepository.AddAsync(this._dummyUser);
+ await this._userRepository.AddAsync(this._dummyUserTwo);
+
+ //Act
+ IEnumerable<User> users = this._userRepository.QueryAll();
+ //Assert
+ Assert.GreaterOrEqual(users.Count(), 1, "Query all does not return all instances of user");
}
+ #endregion
}
}