From e037d611c7ba00d0126a8f954cdc56d7bfeb979e Mon Sep 17 00:00:00 2001 From: transtrike Date: Sun, 17 Jan 2021 11:49:48 +0200 Subject: Added more tests in UserRepo --- .../DevHive.Data.Tests/UserRepositoryTests.cs | 259 +++++++++++++++------ 1 file changed, 182 insertions(+), 77 deletions(-) (limited to 'src/DevHive.Tests/DevHive.Data.Tests') diff --git a/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs b/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs index d171460..46f8aaf 100644 --- a/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs +++ b/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs @@ -14,13 +14,10 @@ namespace DevHive.Data.Tests { private DevHiveContext _context; private UserRepository _userRepository; + private LanguageRepository _languageRepository; + private TechnologyRepository _technologyRepository; - private List _dummyLanguageList; - private List _dummyTechnologyList; - private List _dummyRoleList; - private User _dummyUser; - private User _dummyUserTwo; - + #region Setups [SetUp] public void Setup() { @@ -30,130 +27,85 @@ namespace DevHive.Data.Tests this._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() - { - 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 - }; + this._languageRepository = new LanguageRepository(_context); + this._technologyRepository = new TechnologyRepository(_context); } [TearDown] - public void Teardown() + public async Task Teardown() { - this._context.Database.EnsureDeleted(); + await this._context.Database.EnsureDeletedAsync(); } + #endregion #region Create [Test] public async Task AddAsync_ShouldAddUserToDatabase() { //Arrange + User dummyUser = CreateDummyUser(); //Act - bool result = await _userRepository.AddAsync(this._dummyUser); + bool result = await _userRepository.AddAsync(dummyUser); //Assert - Assert.True(result, "User does not insert into database properly"); + Assert.True(result, "User int' inserted properly into the database"); } [Test] public async Task AddFriendToUserAsync_ShouldAddFriendToUsersList() { //Arrange - await this._userRepository.AddAsync(this._dummyUser); - await this._userRepository.AddAsync(this._dummyUserTwo); + User dummyUserOne = CreateDummyUser(); + User dummyUserTwo = CreateAnotherDummyUser(); + + await this._userRepository.AddAsync(dummyUserOne); + await this._userRepository.AddAsync(dummyUserTwo); //Act - bool result = await this._userRepository.AddFriendToUserAsync(this._dummyUser, _dummyUserTwo); + bool result = await this._userRepository.AddFriendToUserAsync(dummyUserOne, dummyUserTwo); //Assert Assert.True(result, "Friend didn't save properly in the database"); - Assert.True(this._dummyUser.Friends.Contains(_dummyUserTwo), "Friend doesn't get added to user properly"); + Assert.True(dummyUserOne.Friends.Contains(dummyUserTwo), "Friend doesn't get added to user properly"); } [Test] public async Task AddLanguageToUserAsync_ShouldAddLanguageToUser() { //Arrange - bool added = await this._userRepository.AddAsync(this._dummyUser); - Assert.True(added, "User not inserted properly!"); + User dummyUser = CreateDummyUser(); + await this._userRepository.AddAsync(dummyUser); Language language = new() { - Id = Guid.NewGuid(), Name = "typescript" }; //Act - bool result = await this._userRepository.AddLanguageToUserAsync(this._dummyUser, language); + bool result = await this._userRepository.AddLanguageToUserAsync(dummyUser, language); //Assert Assert.True(result, "The language isn't inserted properly to the database"); - Assert.True(this._dummyUser.Langauges.Contains(language), "The language doesn't get added properly to the user"); + Assert.True(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); + User dummyUser = CreateDummyUser(); + await this._userRepository.AddAsync(dummyUser); Technology technology = new() { - Id = Guid.NewGuid(), Name = "Angular" }; //Act - bool result = await this._userRepository.AddTechnologyToUserAsync(this._dummyUser, technology); + bool result = await this._userRepository.AddTechnologyToUserAsync(dummyUser, technology); //Assert Assert.True(result, "The technology isn't inserted properly to the database"); - Assert.True(this._dummyUser.Technologies.Contains(technology), "The technology doesn't get added properly to the user"); + Assert.True(dummyUser.Technologies.Contains(technology), "The technology doesn't get added properly to the user"); } #endregion @@ -162,14 +114,167 @@ namespace DevHive.Data.Tests public async Task QueryAll_ShouldReturnAllUsersFromDatabase() { //Arrange - await this._userRepository.AddAsync(this._dummyUser); - await this._userRepository.AddAsync(this._dummyUserTwo); + User dummyUserOne = CreateDummyUser(); + User dummyUserTwo = CreateAnotherDummyUser(); + + await this._userRepository.AddAsync(dummyUserOne); + await this._userRepository.AddAsync(dummyUserTwo); //Act IEnumerable users = this._userRepository.QueryAll(); + foreach (var item in users) + System.Console.WriteLine(item); + + //Assert + Assert.GreaterOrEqual(users.Count(), 1, "Method doesn't return all instances of user"); + } + + [Test] + public async Task GetById_ShouldReturnUserFromDatabase() + { + //Arrange + User dummyUser = CreateDummyUser(); + await this._userRepository.AddAsync(dummyUser); + Guid id = dummyUser.Id; + + //Act + User user = await this._userRepository.GetByIdAsync(id); + + //Assert + Assert.AreEqual(dummyUser, user, "Method doesn't get the proper user from database"); + } + + [Test] + public async Task GetByUsernameAsync_ShouldReturnUserFromDatabase() + { + //Arrange + User dummyUser = CreateDummyUser(); + await this._userRepository.AddAsync(dummyUser); + string username = dummyUser.UserName; + + //Act + User user = await this._userRepository.GetByUsernameAsync(username); + + //Assert + Assert.AreEqual(dummyUser, user, "Method doesn't get the proper user from database"); + } + + [Test] + public async Task GetUserLanguages_ShouldReturnAllSavedUserLanguages() + { + //Arrange + User dummyUser = CreateDummyUser(); + await this._userRepository.AddAsync(dummyUser); + IList dummyUserLanguages = dummyUser.Langauges; + + //Act + IList languages = this._userRepository.GetUserLanguages(dummyUser); //Assert - Assert.GreaterOrEqual(users.Count(), 1, "Query all does not return all instances of user"); + Assert.AreEqual(dummyUserLanguages, languages, "Method doesn't query languages properly"); + } + + [Test] + [TestCase] + public async Task GetUserLanguage_ShouldReturnAllSavedUserLanguages() + { + Assert.Pass(); + // //Arrange + // User dummyUser = CreateDummyUser(); + // await this._userRepository.AddAsync(dummyUser); + // Language dummyLang = await this._languageRepository.GetByNameAsync("csharp"); + + // //Act + // IList languages = this._userRepository.GetUserLanguage(dummyUser, dummyLang); + + // //Assert + // Assert.AreEqual(dummyUserLanguages, languages, "Method doesn't query languages properly"); + } + #endregion + + #region HelperMethods + private User CreateDummyUser() + { + List languages = new() + { + new Language() + { + Id = Guid.NewGuid(), + Name = "csharp" + }, + }; + + List technologies = new() + { + new Technology() + { + Id = Guid.NewGuid(), + Name = "ASP.NET Core" + }, + }; + + List roles = new() + { + new Role() + { + Id = Guid.NewGuid(), + Name = Role.DefaultRole + }, + }; + + return new() + { + Id = Guid.NewGuid(), + UserName = "pioneer10", + FirstName = "Spas", + LastName = "Spasov", + Email = "abv@abv.bg", + Langauges = languages, + Technologies = technologies, + Roles = roles + }; + } + + private User CreateAnotherDummyUser() + { + List languages = new() + { + new Language() + { + Id = Guid.NewGuid(), + Name = "typescript" + }, + }; + + List technologies = new() + { + new Technology() + { + Id = Guid.NewGuid(), + Name = "Angular" + }, + }; + + List roles = new() + { + new Role() + { + Id = Guid.NewGuid(), + Name = Role.DefaultRole + }, + }; + + return new() + { + Id = Guid.NewGuid(), + UserName = "pioneer10", + FirstName = "Alex", + LastName = "Spiridonov", + Email = "a_spiridonov@abv.bg", + Langauges = languages, + Technologies = technologies, + Roles = roles + }; } #endregion } -- cgit v1.2.3