aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Tests
diff options
context:
space:
mode:
authortranstrike <transtrike@gmail.com>2021-01-17 11:49:48 +0200
committertranstrike <transtrike@gmail.com>2021-01-17 11:49:48 +0200
commite037d611c7ba00d0126a8f954cdc56d7bfeb979e (patch)
treeb12ce7a32cfe33d2bab26726fff784c5ce548d4e /src/DevHive.Tests
parent005ce8562bc644568f33ef1013f8665be57ebfdc (diff)
downloadDevHive-e037d611c7ba00d0126a8f954cdc56d7bfeb979e.tar
DevHive-e037d611c7ba00d0126a8f954cdc56d7bfeb979e.tar.gz
DevHive-e037d611c7ba00d0126a8f954cdc56d7bfeb979e.zip
Added more tests in UserRepo
Diffstat (limited to 'src/DevHive.Tests')
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs259
1 files changed, 182 insertions, 77 deletions
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<Language> _dummyLanguageList;
- private List<Technology> _dummyTechnologyList;
- private List<Role> _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<User> 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<Language> dummyUserLanguages = dummyUser.Langauges;
+
+ //Act
+ IList<Language> 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<Language> languages = this._userRepository.GetUserLanguage(dummyUser, dummyLang);
+
+ // //Assert
+ // Assert.AreEqual(dummyUserLanguages, languages, "Method doesn't query languages properly");
+ }
+ #endregion
+
+ #region HelperMethods
+ private User CreateDummyUser()
+ {
+ List<Language> languages = new()
+ {
+ new Language()
+ {
+ Id = Guid.NewGuid(),
+ Name = "csharp"
+ },
+ };
+
+ List<Technology> technologies = new()
+ {
+ new Technology()
+ {
+ Id = Guid.NewGuid(),
+ Name = "ASP.NET Core"
+ },
+ };
+
+ List<Role> 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<Language> languages = new()
+ {
+ new Language()
+ {
+ Id = Guid.NewGuid(),
+ Name = "typescript"
+ },
+ };
+
+ List<Technology> technologies = new()
+ {
+ new Technology()
+ {
+ Id = Guid.NewGuid(),
+ Name = "Angular"
+ },
+ };
+
+ List<Role> 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
}