From 1001c3d5c6f979c56daf98e7ed82cee2ff09ab7f Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Thu, 21 Jan 2021 17:28:42 +0200 Subject: Fixed TechnologyService.Tests after refactoring of TechnologyService --- .../DevHive.Web.Tests/TechnologyController.Tests.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs') diff --git a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs index 2709c9a..7e6b3a2 100644 --- a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs +++ b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs @@ -73,7 +73,7 @@ namespace DevHive.Web.Tests [Test] public void GetById_ReturnsTheThecnology_WhenItExists() { - Guid id = new Guid(); + Guid id = Guid.NewGuid(); CreateTechnologyServiceModel createTechnologyServiceModel = new CreateTechnologyServiceModel { @@ -102,7 +102,7 @@ namespace DevHive.Web.Tests [Test] public void Update_ShouldReturnOkResult_WhenTechnologyIsUpdatedSuccessfully() { - Guid id = new Guid(); + Guid id = Guid.NewGuid(); UpdateTechnologyWebModel updateTechnologyWebModel = new UpdateTechnologyWebModel { Name = NAME @@ -123,7 +123,7 @@ namespace DevHive.Web.Tests [Test] public void Update_ShouldReturnOkResult_WhenTechnologyIsNotUpdatedSuccessfully () { - Guid id = new Guid(); + Guid id = Guid.NewGuid(); string message = "Could not update Technology"; UpdateTechnologyWebModel updateTechnologyWebModel = new UpdateTechnologyWebModel { @@ -151,7 +151,7 @@ namespace DevHive.Web.Tests [Test] public void Delete_ReturnsOkResult_When_TechnologyIsDeletedSuccessfully() { - Guid id = new Guid(); + Guid id = Guid.NewGuid(); this.TechnologyServiceMock.Setup(p => p.DeleteTechnology(It.IsAny())).Returns(Task.FromResult(true)); @@ -164,7 +164,7 @@ namespace DevHive.Web.Tests public void Delet_ReturnsBadRequestObjectResult_WhenTechnologyIsNotDeletedSuccessfully() { string message = "Could not delete Technology"; - Guid id = new Guid(); + Guid id = Guid.NewGuid(); this.TechnologyServiceMock.Setup(p => p.DeleteTechnology(It.IsAny())).Returns(Task.FromResult(false)); -- cgit v1.2.3 From 4417b86ccd570f1f5637afc7460ef70fcf1c47c2 Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Thu, 21 Jan 2021 19:30:25 +0200 Subject: Refactored technology layer tests to be async --- src/DevHive.Services/Services/TechnologyService.cs | 5 +- .../TechnologyRepository.Tests.cs | 147 +++++++---------- .../TechnologyServices.Tests.cs | 179 +++++++++------------ .../TechnologyController.Tests.cs | 35 +++- 4 files changed, 164 insertions(+), 202 deletions(-) (limited to 'src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs') diff --git a/src/DevHive.Services/Services/TechnologyService.cs b/src/DevHive.Services/Services/TechnologyService.cs index 1b2f0ff..88ed702 100644 --- a/src/DevHive.Services/Services/TechnologyService.cs +++ b/src/DevHive.Services/Services/TechnologyService.cs @@ -20,7 +20,6 @@ namespace DevHive.Services.Services } #region Create - public async Task Create(CreateTechnologyServiceModel technologyServiceModel) { if (await this._technologyRepository.DoesTechnologyNameExistAsync(technologyServiceModel.Name)) @@ -29,7 +28,7 @@ namespace DevHive.Services.Services Technology technology = this._technologyMapper.Map(technologyServiceModel); bool success = await this._technologyRepository.AddAsync(technology); - if(success) + if (success) { Technology newTechnology = await this._technologyRepository.GetByNameAsync(technologyServiceModel.Name); return newTechnology.Id; @@ -40,7 +39,6 @@ namespace DevHive.Services.Services #endregion #region Read - public async Task GetTechnologyById(Guid id) { Technology technology = await this._technologyRepository.GetByIdAsync(id); @@ -53,7 +51,6 @@ namespace DevHive.Services.Services #endregion #region Update - public async Task UpdateTechnology(UpdateTechnologyServiceModel updateTechnologyServiceModel) { if (!await this._technologyRepository.DoesTechnologyExistAsync(updateTechnologyServiceModel.Id)) diff --git a/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs b/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs index 98f2b2f..9c95c6d 100644 --- a/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs +++ b/src/DevHive.Tests/DevHive.Data.Tests/TechnologyRepository.Tests.cs @@ -4,7 +4,6 @@ using Microsoft.EntityFrameworkCore; using NUnit.Framework; using System; using System.Linq; -using System.Threading.Tasks; namespace DevHive.Data.Tests { @@ -35,7 +34,6 @@ namespace DevHive.Data.Tests } #region AddAsync - [Test] public void AddAsync_AddsTheGivenTechnologyToTheDatabase() { @@ -50,153 +48,122 @@ namespace DevHive.Data.Tests #region GetByIdAsync [Test] - public void GetByIdAsync_ReturnsTheCorrectTechnology_IfIdExists() + public async void GetByIdAsync_ReturnsTheCorrectTechnology_IfIdExists() { - Task.Run(async () => - { - AddEntity(); - Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault(); - Guid id = technology.Id; + AddEntity(); + Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault(); + Guid id = technology.Id; - Technology technologyReturned = await this.TechnologyRepository.GetByIdAsync(id); + Technology technologyReturned = await this.TechnologyRepository.GetByIdAsync(id); - Assert.AreEqual(TECHNOLOGY_NAME, technologyReturned.Name, "GetByIdAsync does not return the correct Technology when id is valid"); - }).GetAwaiter().GetResult(); + Assert.AreEqual(TECHNOLOGY_NAME, technologyReturned.Name, "GetByIdAsync does not return the correct Technology when id is valid"); } [Test] - public void GetByIdAsync_ReturnsNull_IfIdDoesNotExists() + public async void GetByIdAsync_ReturnsNull_IfIdDoesNotExists() { - Task.Run(async () => - { - Guid id = Guid.NewGuid(); - Technology technologyReturned = await this.TechnologyRepository.GetByIdAsync(id); + Guid id = Guid.NewGuid(); + + Technology technologyReturned = await this.TechnologyRepository.GetByIdAsync(id); + + Assert.IsNull(technologyReturned, "GetByIdAsync returns Technology when it should be null"); - Assert.IsNull(technologyReturned, "GetByIdAsync returns Technology when it should be null"); - }).GetAwaiter().GetResult(); } #endregion #region DoesTechnologyExistAsync [Test] - public void DoesTechnologyExist_ReturnsTrue_IfIdExists() + public async void DoesTechnologyExist_ReturnsTrue_IfIdExists() { - Task.Run(async () => - { - AddEntity(); - Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault(); - Guid id = technology.Id; + AddEntity(); + Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault(); + Guid id = technology.Id; - bool result = await this.TechnologyRepository.DoesTechnologyExistAsync(id); + bool result = await this.TechnologyRepository.DoesTechnologyExistAsync(id); - Assert.IsTrue(result, "DoesTechnologyExistAsync returns flase hwen technology exists"); - }).GetAwaiter().GetResult(); + Assert.IsTrue(result, "DoesTechnologyExistAsync returns flase hwen technology exists"); } [Test] - public void DoesTechnologyExist_ReturnsFalse_IfIdDoesNotExists() + public async void DoesTechnologyExist_ReturnsFalse_IfIdDoesNotExists() { - Task.Run(async () => - { - Guid id = Guid.NewGuid(); + Guid id = Guid.NewGuid(); - bool result = await this.TechnologyRepository.DoesTechnologyExistAsync(id); + bool result = await this.TechnologyRepository.DoesTechnologyExistAsync(id); - Assert.IsFalse(result, "DoesTechnologyExistAsync returns true when technology does not exist"); - }).GetAwaiter().GetResult(); + Assert.IsFalse(result, "DoesTechnologyExistAsync returns true when technology does not exist"); } #endregion #region DoesTechnologyNameExistAsync [Test] - public void DoesTechnologyNameExist_ReturnsTrue_IfTechnologyExists() + public async void DoesTechnologyNameExist_ReturnsTrue_IfTechnologyExists() { - Task.Run(async () => - { - AddEntity(); + AddEntity(); - bool result = await this.TechnologyRepository.DoesTechnologyNameExistAsync(TECHNOLOGY_NAME); + bool result = await this.TechnologyRepository.DoesTechnologyNameExistAsync(TECHNOLOGY_NAME); - Assert.IsTrue(result, "DoesTechnologyNameExists returns true when technology name does not exist"); - }).GetAwaiter().GetResult(); + Assert.IsTrue(result, "DoesTechnologyNameExists returns true when technology name does not exist"); } [Test] - public void DoesTechnologyNameExist_ReturnsFalse_IfTechnologyDoesNotExists() + public async void DoesTechnologyNameExist_ReturnsFalse_IfTechnologyDoesNotExists() { - Task.Run(async () => - { - bool result = await this.TechnologyRepository.DoesTechnologyNameExistAsync(TECHNOLOGY_NAME); + bool result = await this.TechnologyRepository.DoesTechnologyNameExistAsync(TECHNOLOGY_NAME); - Assert.False(result, "DoesTechnologyNameExistAsync returns true when technology name does not exist"); - }).GetAwaiter().GetResult(); + Assert.False(result, "DoesTechnologyNameExistAsync returns true when technology name does not exist"); } #endregion #region EditAsync - //TO DO fix + //TO DO fix: check UserRepo [Test] - public void EditAsync_UpdatesEntity() + public async void EditAsync_UpdatesEntity() { - Task.Run(async () => + string newName = "New name"; + Guid id = Guid.NewGuid(); + Technology technology = new Technology + { + Name = TECHNOLOGY_NAME, + Id = id + }; Technology newTechnology = new Technology { - string newName = "New name"; - Guid id = Guid.NewGuid(); - Technology technology = new Technology - { - Name = TECHNOLOGY_NAME, - Id = id - }; Technology newTechnology = new Technology - { - Name = newName, - Id = id - }; - - await this.TechnologyRepository.AddAsync(technology); - - bool result = await this.TechnologyRepository.EditAsync(newTechnology); - - Assert.IsTrue(result); - }).GetAwaiter().GetResult(); + Name = newName, + Id = id + }; + + await this.TechnologyRepository.AddAsync(technology); + + bool result = await this.TechnologyRepository.EditAsync(newTechnology); + + Assert.IsTrue(result); } #endregion #region DeleteAsync [Test] - public void DeleteAsync_ReturnsTrue_IfDeletionIsSuccesfull() + public async void DeleteAsync_ReturnsTrue_IfDeletionIsSuccesfull() { - Task.Run(async () => - { - AddEntity(); - Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault(); - - bool result = await this.TechnologyRepository.DeleteAsync(technology); + AddEntity(); + Technology technology = this.Context.Technologies.Where(x => x.Name == TECHNOLOGY_NAME).ToList().FirstOrDefault(); - Assert.IsTrue(result, "DeleteAsync returns false when deletion is successfull"); + bool result = await this.TechnologyRepository.DeleteAsync(technology); - }).GetAwaiter().GetResult(); + Assert.IsTrue(result, "DeleteAsync returns false when deletion is successfull"); } #endregion #region HelperMethods - private void AddEntity(string name = TECHNOLOGY_NAME) + private async void AddEntity(string name = TECHNOLOGY_NAME) { - Task.Run(async () => + Technology technology = new Technology { - Technology technology = new Technology - { - Name = name - }; + Name = name + }; - await this.TechnologyRepository.AddAsync(technology); - }).GetAwaiter().GetResult(); + await this.TechnologyRepository.AddAsync(technology); } #endregion - - //Task.Run(async () => - //{ - // - //}).GetAwaiter().GetResult(); } } diff --git a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs index 9a780c1..20aceb5 100644 --- a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs +++ b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs @@ -26,62 +26,54 @@ namespace DevHive.Services.Tests } #region Create - [Test] - public void Create_ReturnsNonEmptyGuid_WhenEntityIsAddedSuccessfully() + public async void Create_ReturnsNonEmptyGuid_WhenEntityIsAddedSuccessfully() { - Task.Run(async () => + string technologyName = "Gosho Trapov"; + Guid id = Guid.NewGuid(); + CreateTechnologyServiceModel createTechnologyServiceModel = new() { - string technologyName = "Gosho Trapov"; - Guid id = Guid.NewGuid(); - CreateTechnologyServiceModel createTechnologyServiceModel = new() - { - Name = technologyName - }; - Technology technology = new() - { - Name = technologyName, - Id = id - }; - - this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); - this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(true)); - this.TechnologyRepositoryMock.Setup(p => p.GetByNameAsync(It.IsAny())).Returns(Task.FromResult(technology)); - this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); - - Guid result = await this.TechnologyService.Create(createTechnologyServiceModel); - - Assert.AreEqual(id, result); - }).GetAwaiter().GetResult(); + Name = technologyName + }; + Technology technology = new() + { + Name = technologyName, + Id = id + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); + this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyRepositoryMock.Setup(p => p.GetByNameAsync(It.IsAny())).Returns(Task.FromResult(technology)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); + + Guid result = await this.TechnologyService.Create(createTechnologyServiceModel); + + Assert.AreEqual(id, result); } [Test] - public void Create_ReturnsEmptyGuid_WhenEntityIsNotAddedSuccessfully() + public async void Create_ReturnsEmptyGuid_WhenEntityIsNotAddedSuccessfully() { - Task.Run(async () => - { - string technologyName = "Gosho Trapov"; + string technologyName = "Gosho Trapov"; - CreateTechnologyServiceModel createTechnologyServiceModel = new() - { - Name = technologyName - }; - Technology technology = new() - { - Name = technologyName - }; + CreateTechnologyServiceModel createTechnologyServiceModel = new() + { + Name = technologyName + }; + Technology technology = new() + { + Name = technologyName + }; - this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); - this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(false)); - this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); + this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(false)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); - Guid result = await this.TechnologyService.Create(createTechnologyServiceModel); + Guid result = await this.TechnologyService.Create(createTechnologyServiceModel); - Assert.IsTrue(result == Guid.Empty); - }).GetAwaiter().GetResult(); + Assert.IsTrue(result == Guid.Empty); } - [Test] public void Create_ThrowsArgumentException_WhenEntityAlreadyExists() { @@ -106,30 +98,26 @@ namespace DevHive.Services.Tests #endregion #region Read - [Test] - public void GetTechnologyById_ReturnsTheTechnology_WhenItExists() + public async void GetTechnologyById_ReturnsTheTechnology_WhenItExists() { - Task.Run(async () => + Guid id = new Guid(); + string name = "Gosho Trapov"; + Technology technology = new() + { + Name = name + }; + CreateTechnologyServiceModel createTechnologyServiceModel = new() { - Guid id = new Guid(); - string name = "Gosho Trapov"; - Technology technology = new() - { - Name = name - }; - CreateTechnologyServiceModel createTechnologyServiceModel = new() - { - Name = name - }; - - this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(technology)); - this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(createTechnologyServiceModel); - - CreateTechnologyServiceModel result = await this.TechnologyService.GetTechnologyById(id); - - Assert.AreEqual(name, result.Name); - }).GetAwaiter().GetResult(); + Name = name + }; + + this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(technology)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(createTechnologyServiceModel); + + CreateTechnologyServiceModel result = await this.TechnologyService.GetTechnologyById(id); + + Assert.AreEqual(name, result.Name); } [Test] @@ -146,33 +134,29 @@ namespace DevHive.Services.Tests #endregion #region Update - [Test] [TestCase(true)] [TestCase(false)] - public void UpdateTechnology_ReturnsIfUpdateIsSuccessfull_WhenTechnologyExistsy(bool shouldPass) + public async void UpdateTechnology_ReturnsIfUpdateIsSuccessfull_WhenTechnologyExistsy(bool shouldPass) { - Task.Run(async () => + string name = "Gosho Trapov"; + Technology technology = new Technology { - string name = "Gosho Trapov"; - Technology technology = new Technology - { - Name = name - }; - UpdateTechnologyServiceModel updatetechnologyServiceModel = new UpdateTechnologyServiceModel - { - Name = name, - }; - - this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny())).Returns(Task.FromResult(true)); - this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); - this.TechnologyRepositoryMock.Setup(p => p.EditAsync(It.IsAny())).Returns(Task.FromResult(shouldPass)); - this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); - - bool result = await this.TechnologyService.UpdateTechnology(updatetechnologyServiceModel); - - Assert.AreEqual(shouldPass, result); - }).GetAwaiter().GetResult(); + Name = name + }; + UpdateTechnologyServiceModel updatetechnologyServiceModel = new UpdateTechnologyServiceModel + { + Name = name, + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); + this.TechnologyRepositoryMock.Setup(p => p.EditAsync(It.IsAny())).Returns(Task.FromResult(shouldPass)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); + + bool result = await this.TechnologyService.UpdateTechnology(updatetechnologyServiceModel); + + Assert.AreEqual(shouldPass, result); } [Test] @@ -212,21 +196,18 @@ namespace DevHive.Services.Tests [Test] [TestCase(true)] [TestCase(false)] - public void DeleteTechnology_ShouldReturnIfDeletionIsSuccessfull_WhenTechnologyExists(bool shouldPass) + public async void DeleteTechnology_ShouldReturnIfDeletionIsSuccessfull_WhenTechnologyExists(bool shouldPass) { - Task.Run(async () => - { - Guid id = new Guid(); - Technology technology = new Technology(); + Guid id = new Guid(); + Technology technology = new Technology(); - this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny())).Returns(Task.FromResult(true)); - this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(technology)); - this.TechnologyRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny())).Returns(Task.FromResult(shouldPass)); + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExistAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(technology)); + this.TechnologyRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny())).Returns(Task.FromResult(shouldPass)); - bool result = await this.TechnologyService.DeleteTechnology(id); + bool result = await this.TechnologyService.DeleteTechnology(id); - Assert.AreEqual(shouldPass, result); - }).GetAwaiter().GetResult(); + Assert.AreEqual(shouldPass, result); } [Test] @@ -242,9 +223,5 @@ namespace DevHive.Services.Tests Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message"); } #endregion - //Task.Run(async () => - //{ - // - //}).GetAwaiter().GetResult(); } } diff --git a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs index 7e6b3a2..3087f5d 100644 --- a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs +++ b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs @@ -1,12 +1,15 @@ using AutoMapper; +using DevHive.Common.Models.Misc; using DevHive.Services.Interfaces; using DevHive.Services.Models.Technology; using DevHive.Web.Controllers; using DevHive.Web.Models.Technology; using Microsoft.AspNetCore.Mvc; using Moq; +using Newtonsoft.Json; using NUnit.Framework; using System; +using System.Linq; using System.Threading.Tasks; namespace DevHive.Web.Tests @@ -30,7 +33,7 @@ namespace DevHive.Web.Tests #region Create [Test] public void Create_ReturnsOkObjectResult_WhenTechnologyIsSuccessfullyCreated() - { + { CreateTechnologyWebModel createTechnologyWebModel = new CreateTechnologyWebModel { Name = NAME @@ -39,13 +42,24 @@ namespace DevHive.Web.Tests { Name = NAME }; + Guid id = Guid.NewGuid(); this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(createTechnologyServiceModel); - this.TechnologyServiceMock.Setup(p => p.Create(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyServiceMock.Setup(p => p.Create(It.IsAny())).Returns(Task.FromResult(id)); IActionResult result = this.TechnologyController.Create(createTechnologyWebModel).Result; - Assert.IsInstanceOf(result); + Assert.IsInstanceOf(result); + + var splitted = (result as OkObjectResult).Value + .ToString() + .Split('{', '}', '=', ' ') + .Where(x => !string.IsNullOrEmpty(x)) + .ToArray(); + + Guid resultId = Guid.Parse(splitted[1]); + + Assert.AreEqual(id, resultId); } [Test] @@ -59,13 +73,20 @@ namespace DevHive.Web.Tests { Name = NAME }; + Guid id = Guid.Empty; + string errorMessage = $"Could not create technology {NAME}"; this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(createTechnologyServiceModel); - this.TechnologyServiceMock.Setup(p => p.Create(It.IsAny())).Returns(Task.FromResult(false)); + this.TechnologyServiceMock.Setup(p => p.Create(It.IsAny())).Returns(Task.FromResult(id)); IActionResult result = this.TechnologyController.Create(createTechnologyWebModel).Result; Assert.IsInstanceOf(result); + + BadRequestObjectResult badRequsetObjectResult = result as BadRequestObjectResult; + string resultMessage = badRequsetObjectResult.Value.ToString(); + + Assert.AreEqual(errorMessage, resultMessage); } #endregion @@ -112,7 +133,7 @@ namespace DevHive.Web.Tests Name = NAME }; - this.TechnologyServiceMock.Setup(p => p.UpdateTechnology(It.IsAny(), It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyServiceMock.Setup(p => p.UpdateTechnology(It.IsAny())).Returns(Task.FromResult(true)); this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(updateTechnologyServiceModel); IActionResult result = this.TechnologyController.Update(id, updateTechnologyWebModel).Result; @@ -121,7 +142,7 @@ namespace DevHive.Web.Tests } [Test] - public void Update_ShouldReturnOkResult_WhenTechnologyIsNotUpdatedSuccessfully () + public void Update_ShouldReturnOkResult_WhenTechnologyIsNotUpdatedSuccessfully() { Guid id = Guid.NewGuid(); string message = "Could not update Technology"; @@ -134,7 +155,7 @@ namespace DevHive.Web.Tests Name = NAME }; - this.TechnologyServiceMock.Setup(p => p.UpdateTechnology(It.IsAny(), It.IsAny())).Returns(Task.FromResult(false)); + this.TechnologyServiceMock.Setup(p => p.UpdateTechnology(It.IsAny())).Returns(Task.FromResult(false)); this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(updateTechnologyServiceModel); IActionResult result = this.TechnologyController.Update(id, updateTechnologyWebModel).Result; -- cgit v1.2.3 From fb527cbfb94e2723113d67b83ed8f24e32422e56 Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Thu, 21 Jan 2021 22:03:50 +0200 Subject: Adding Language layer unit test(Note: Data is to be refactored no data layer tests are added) --- src/DevHive.Services/Services/LanguageService.cs | 4 +- .../LanguageService.Tests.cs | 142 ++++++++++++++- .../DevHive.Web.Tests/LanguageController.Tests.cs | 201 +++++++++++++++++++++ .../DevHive.Web.Tests/PostController.Tests.cs | 12 ++ .../TechnologyController.Tests.cs | 1 - 5 files changed, 348 insertions(+), 12 deletions(-) create mode 100644 src/DevHive.Tests/DevHive.Web.Tests/LanguageController.Tests.cs create mode 100644 src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs (limited to 'src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs') diff --git a/src/DevHive.Services/Services/LanguageService.cs b/src/DevHive.Services/Services/LanguageService.cs index e9c401e..89df654 100644 --- a/src/DevHive.Services/Services/LanguageService.cs +++ b/src/DevHive.Services/Services/LanguageService.cs @@ -29,7 +29,7 @@ namespace DevHive.Services.Services Language language = this._languageMapper.Map(createLanguageServiceModel); bool success = await this._languageRepository.AddAsync(language); - if(success) + if (success) { Language newLanguage = await this._languageRepository.GetByNameAsync(createLanguageServiceModel.Name); return newLanguage.Id; @@ -63,7 +63,7 @@ namespace DevHive.Services.Services throw new ArgumentException("Language does not exist!"); if (newLangNameExists) - throw new ArgumentException("This name is already in our datbase!"); + throw new ArgumentException("Language name already exists in our data base!"); Language lang = this._languageMapper.Map(languageServiceModel); return await this._languageRepository.EditAsync(lang); diff --git a/src/DevHive.Tests/DevHive.Services.Tests/LanguageService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/LanguageService.Tests.cs index 6366cc6..67f1284 100644 --- a/src/DevHive.Tests/DevHive.Services.Tests/LanguageService.Tests.cs +++ b/src/DevHive.Tests/DevHive.Services.Tests/LanguageService.Tests.cs @@ -27,15 +27,15 @@ namespace DevHive.Services.Tests #region Create [Test] - public async Task Create_ReturnsNonEmptyGuid_WhenEntityIsAddedSuccessfully() + public async Task CreateLanguage_ReturnsNonEmptyGuid_WhenEntityIsAddedSuccessfully() { string technologyName = "Gosho Trapov"; Guid id = Guid.NewGuid(); - CreateLanguageServiceModel createLanguageServiceModel = new() + CreateLanguageServiceModel createLanguageServiceModel = new CreateLanguageServiceModel { Name = technologyName }; - Language language = new() + Language language = new Language { Name = technologyName, Id = id @@ -52,15 +52,15 @@ namespace DevHive.Services.Tests } [Test] - public async Task Create_ReturnsEmptyGuid_WhenEntityIsNotAddedSuccessfully() + public async Task CreateLanguage_ReturnsEmptyGuid_WhenEntityIsNotAddedSuccessfully() { string languageName = "Gosho Trapov"; - CreateLanguageServiceModel createLanguageServiceModel = new() + CreateLanguageServiceModel createLanguageServiceModel = new CreateLanguageServiceModel { Name = languageName }; - Language language = new() + Language language = new Language { Name = languageName }; @@ -76,16 +76,16 @@ namespace DevHive.Services.Tests } [Test] - public void Create_ThrowsArgumentException_WhenEntityAlreadyExists() + public void CreateLanguage_ThrowsArgumentException_WhenEntityAlreadyExists() { string exceptionMessage = "Language already exists!"; string languageName = "Gosho Trapov"; - CreateLanguageServiceModel createLanguageServiceModel = new() + CreateLanguageServiceModel createLanguageServiceModel = new CreateLanguageServiceModel { Name = languageName }; - Language language = new() + Language language = new Language { Name = languageName }; @@ -98,7 +98,131 @@ namespace DevHive.Services.Tests } #endregion + #region Read + [Test] + public async Task GetLanguageById_ReturnsTheLanguage_WhenItExists() + { + Guid id = new Guid(); + string name = "Gosho Trapov"; + Language language = new Language() + { + Name = name + }; + ReadLanguageServiceModel readLanguageServiceModel = new ReadLanguageServiceModel + { + Name = name + }; + + this.LanguageRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(language)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(readLanguageServiceModel); + + ReadLanguageServiceModel result = await this.LanguageService.GetLanguageById(id); + + Assert.AreEqual(name, result.Name); + } + + [Test] + public void GetLanguageById_ThrowsException_WhenLanguageDoesNotExist() + { + string exceptionMessage = "The language does not exist"; + Guid id = new Guid(); + this.LanguageRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(null)); + + Exception ex = Assert.ThrowsAsync(() => this.LanguageService.GetLanguageById(id)); + + Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message"); + } + #endregion + #region Update + [Test] + [TestCase(true)] + [TestCase(false)] + public async Task UpdateLanguage_ReturnsIfUpdateIsSuccessfull_WhenLanguageExistsy(bool shouldPass) + { + string name = "Gosho Trapov"; + Language language = new Language + { + Name = name + }; + UpdateLanguageServiceModel updateLanguageServiceModel = new UpdateLanguageServiceModel + { + Name = name, + }; + + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageExistAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageNameExistAsync(It.IsAny())).Returns(Task.FromResult(false)); + this.LanguageRepositoryMock.Setup(p => p.EditAsync(It.IsAny())).Returns(Task.FromResult(shouldPass)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(language); + + bool result = await this.LanguageService.UpdateLanguage(updateLanguageServiceModel); + + Assert.AreEqual(shouldPass, result); + } + + [Test] + public void UpdateLanguage_ReturnsIfUpdateIsSuccessfull_WhenLanguageExistsy() + { + string exceptionMessage = "Language does not exist!"; + UpdateLanguageServiceModel updateTechnologyServiceModel = new UpdateLanguageServiceModel + { + }; + + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageExistAsync(It.IsAny())).Returns(Task.FromResult(false)); + + Exception ex = Assert.ThrowsAsync(() => this.LanguageService.UpdateLanguage(updateTechnologyServiceModel)); + + Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message"); + } + + [Test] + public void UpdateLanguage_ThrowsException_WhenLanguageNameAlreadyExists() + { + string exceptionMessage = "Language name already exists in our data base!"; + UpdateLanguageServiceModel updateTechnologyServiceModel = new UpdateLanguageServiceModel + { + }; + + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageExistAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageNameExistAsync(It.IsAny())).Returns(Task.FromResult(true)); + + Exception ex = Assert.ThrowsAsync(() => this.LanguageService.UpdateLanguage(updateTechnologyServiceModel)); + + Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message"); + } + #endregion + + #region Delete + [Test] + [TestCase(true)] + [TestCase(false)] + public async Task DeleteLanguage_ShouldReturnIfDeletionIsSuccessfull_WhenLanguageExists(bool shouldPass) + { + Guid id = new Guid(); + Language language = new Language(); + + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageExistAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.LanguageRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(language)); + this.LanguageRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny())).Returns(Task.FromResult(shouldPass)); + + bool result = await this.LanguageService.DeleteLanguage(id); + + Assert.AreEqual(shouldPass, result); + } + + [Test] + public void DeleteLanguage_ThrowsException_WhenLanguageDoesNotExist() + { + string exceptionMessage = "Language does not exist!"; + Guid id = new Guid(); + + this.LanguageRepositoryMock.Setup(p => p.DoesLanguageExistAsync(It.IsAny())).Returns(Task.FromResult(false)); + + Exception ex = Assert.ThrowsAsync(() => this.LanguageService.DeleteLanguage(id)); + + Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message"); + } + #endregion //Task.Run(async () => //{ diff --git a/src/DevHive.Tests/DevHive.Web.Tests/LanguageController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/LanguageController.Tests.cs new file mode 100644 index 0000000..913d9df --- /dev/null +++ b/src/DevHive.Tests/DevHive.Web.Tests/LanguageController.Tests.cs @@ -0,0 +1,201 @@ +using System; +using System.Linq; +using System.Threading.Tasks; +using AutoMapper; +using DevHive.Services.Interfaces; +using DevHive.Services.Models.Language; +using DevHive.Web.Controllers; +using DevHive.Web.Models.Language; +using Microsoft.AspNetCore.Mvc; +using Moq; +using NUnit.Framework; + +namespace DevHive.Web.Tests +{ + [TestFixture] + public class LanguageControllerTests + { + const string NAME = "Gosho Trapov"; + private Mock LanguageServiceMock { get; set; } + private Mock MapperMock { get; set; } + private LanguageController LanguageController { get; set; } + + [SetUp] + public void SetUp() + { + this.LanguageServiceMock = new Mock(); + this.MapperMock = new Mock(); + this.LanguageController = new LanguageController(this.LanguageServiceMock.Object, this.MapperMock.Object); + } + + #region Create + [Test] + public void CreateLanguage_ReturnsOkObjectResult_WhenLanguageIsSuccessfullyCreated() + { + CreateLanguageWebModel createLanguageWebModel = new CreateLanguageWebModel + { + Name = NAME + }; + CreateLanguageServiceModel createLanguageServiceModel = new CreateLanguageServiceModel + { + Name = NAME + }; + Guid id = Guid.NewGuid(); + + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(createLanguageServiceModel); + this.LanguageServiceMock.Setup(p => p.CreateLanguage(It.IsAny())).Returns(Task.FromResult(id)); + + IActionResult result = this.LanguageController.Create(createLanguageWebModel).Result; + + Assert.IsInstanceOf(result); + + var splitted = (result as OkObjectResult).Value + .ToString() + .Split('{', '}', '=', ' ') + .Where(x => !string.IsNullOrEmpty(x)) + .ToArray(); + + Guid resultId = Guid.Parse(splitted[1]); + + Assert.AreEqual(id, resultId); + } + + [Test] + public void CreateLanguage_ReturnsBadRequestObjectResult_WhenLanguageIsNotCreatedSuccessfully() + { + CreateLanguageWebModel createTechnologyWebModel = new CreateLanguageWebModel + { + Name = NAME + }; + CreateLanguageServiceModel createTechnologyServiceModel = new CreateLanguageServiceModel + { + Name = NAME + }; + Guid id = Guid.Empty; + string errorMessage = $"Could not create language {NAME}"; + + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(createTechnologyServiceModel); + this.LanguageServiceMock.Setup(p => p.CreateLanguage(It.IsAny())).Returns(Task.FromResult(id)); + + IActionResult result = this.LanguageController.Create(createTechnologyWebModel).Result; + + Assert.IsInstanceOf(result); + + BadRequestObjectResult badRequsetObjectResult = result as BadRequestObjectResult; + string resultMessage = badRequsetObjectResult.Value.ToString(); + + Assert.AreEqual(errorMessage, resultMessage); + } + #endregion + + #region Read + [Test] + public void GetById_ReturnsTheLanguage_WhenItExists() + { + Guid id = Guid.NewGuid(); + + ReadLanguageServiceModel readLanguageServiceModel = new ReadLanguageServiceModel + { + Name = NAME + }; + ReadLanguageWebModel readLanguageWebModel = new ReadLanguageWebModel + { + Name = NAME + }; + + this.LanguageServiceMock.Setup(p => p.GetLanguageById(It.IsAny())).Returns(Task.FromResult(readLanguageServiceModel)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(readLanguageWebModel); + + IActionResult result = this.LanguageController.GetById(id).Result; + + Assert.IsInstanceOf(result); + + OkObjectResult okObjectResult = result as OkObjectResult; + ReadLanguageWebModel resultModel = okObjectResult.Value as Models.Language.ReadLanguageWebModel; + + Assert.AreEqual(NAME, resultModel.Name); + } + #endregion + + #region Update + [Test] + public void Update_ShouldReturnOkResult_WhenLanguageIsUpdatedSuccessfully() + { + Guid id = Guid.NewGuid(); + UpdateLanguageWebModel updateLanguageWebModel = new UpdateLanguageWebModel + { + Name = NAME + }; + UpdateLanguageServiceModel updateLanguageServiceModel = new UpdateLanguageServiceModel + { + Name = NAME + }; + + this.LanguageServiceMock.Setup(p => p.UpdateLanguage(It.IsAny())).Returns(Task.FromResult(true)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(updateLanguageServiceModel); + + IActionResult result = this.LanguageController.Update(id, updateLanguageWebModel).Result; + + Assert.IsInstanceOf(result); + } + + [Test] + public void Update_ShouldReturnOkResult_WhenLanguageIsNotUpdatedSuccessfully() + { + Guid id = Guid.NewGuid(); + string message = "Could not update Language"; + UpdateLanguageWebModel updateLanguageWebModel = new UpdateLanguageWebModel + { + Name = NAME + }; + UpdateLanguageServiceModel updateLanguageServiceModel = new UpdateLanguageServiceModel + { + Name = NAME + }; + + this.LanguageServiceMock.Setup(p => p.UpdateLanguage(It.IsAny())).Returns(Task.FromResult(false)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(updateLanguageServiceModel); + + IActionResult result = this.LanguageController.Update(id, updateLanguageWebModel).Result; + Assert.IsInstanceOf(result); + + BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; + string resultModel = badRequestObjectResult.Value.ToString(); + + Assert.AreEqual(message, resultModel); + } + #endregion + + #region Delete + [Test] + public void Delete_ReturnsOkResult_When_LanguageIsDeletedSuccessfully() + { + Guid id = Guid.NewGuid(); + + this.LanguageServiceMock.Setup(p => p.DeleteLanguage(It.IsAny())).Returns(Task.FromResult(true)); + + IActionResult result = this.LanguageController.Delete(id).Result; + + Assert.IsInstanceOf(result); + } + + [Test] + public void Delet_ReturnsBadRequestObjectResult_WhenLanguageIsNotDeletedSuccessfully() + { + string message = "Could not delete Language"; + Guid id = Guid.NewGuid(); + + this.LanguageServiceMock.Setup(p => p.DeleteLanguage(It.IsAny())).Returns(Task.FromResult(false)); + + IActionResult result = this.LanguageController.Delete(id).Result; + + Assert.IsInstanceOf(result); + + BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult; + string resultModel = badRequestObjectResult.Value.ToString(); + + Assert.AreEqual(message, resultModel); + } + #endregion + } +} diff --git a/src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs new file mode 100644 index 0000000..18ed1b9 --- /dev/null +++ b/src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DevHive.Web.Tests +{ + class PostController + { + } +} diff --git a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs index 3087f5d..40434d6 100644 --- a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs +++ b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs @@ -6,7 +6,6 @@ using DevHive.Web.Controllers; using DevHive.Web.Models.Technology; using Microsoft.AspNetCore.Mvc; using Moq; -using Newtonsoft.Json; using NUnit.Framework; using System; using System.Linq; -- cgit v1.2.3