diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs | 146 |
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 } } |
