From ce2e6c609cdb736131a6de9af33844a58f1dad84 Mon Sep 17 00:00:00 2001 From: Danail Dimitrov Date: Tue, 12 Jan 2021 00:11:33 +0200 Subject: Added tests for TechnologyService --- .../TechnologyService.Tests.cs | 223 ++++++++++++++++++++- 1 file changed, 216 insertions(+), 7 deletions(-) (limited to 'src/DevHive.Tests') diff --git a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs index d38146f..3e26201 100644 --- a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs +++ b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyService.Tests.cs @@ -8,6 +8,7 @@ using DevHive.Services.Services; using Microsoft.EntityFrameworkCore; using Moq; using NUnit.Framework; +using System; using System.Threading.Tasks; namespace DevHive.Services.Tests @@ -29,36 +30,244 @@ namespace DevHive.Services.Tests #region Create [Test] - public void Create_ReturnsTrue_WhenEntityIsAddedSuccessfully() + [TestCase(true)] + [TestCase(false)] + public void Create_ReturnsTrue_WhenEntityIsAddedSuccessfully(bool shouldFail) { Task.Run(async () => { + string technologyName = "Gosho Trapov"; + TechnologyServiceModel technologyServiceModel = new TechnologyServiceModel { - Name = "Some name" + Name = technologyName }; Technology technology = new Technology { - Name = "Some name" + Name = technologyName }; this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(It.IsAny())).Returns(Task.FromResult(false)); - this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyRepositoryMock.Setup(p => p.AddAsync(It.IsAny())).Returns(Task.FromResult(shouldFail)); this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technology); bool result = await this.TechnologyService.Create(technologyServiceModel); - Assert.IsTrue(result, "Create returns false when entity is created successfully"); + Assert.AreEqual(shouldFail, result); + }).GetAwaiter().GetResult(); + } + + [Test] + public void Create_ThrowsArgumentException_WhenEntityAlreadyExists() + { + Task.Run(async () => + { + string expectedExceptionMessage = "Technology already exists!"; + string technologyName = "Gosho Trapov"; + + TechnologyServiceModel technologyServiceModel = new TechnologyServiceModel + { + Name = technologyName + }; + Technology technology = new Technology + { + Name = technologyName + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(It.IsAny())).Returns(Task.FromResult(true)); + + try + { + await this.TechnologyService.Create(technologyServiceModel); + Assert.Fail("Create does not throw exception when technology already exists"); + } + catch(ArgumentException ex) + { + Assert.AreEqual(expectedExceptionMessage, ex.Message); + } + }).GetAwaiter().GetResult(); + } + #endregion + + #region GetById + [Test] + public void GetTechnologyById_ReturnsTheTechnology_WhenItExists() + { + Task.Run(async () => + { + Guid id = new Guid(); + string name = "Gosho Trapov"; + Technology technology = new Technology + { + Name = name + }; + TechnologyServiceModel technologyServiceModel = new TechnologyServiceModel + { + Name = name + }; + + this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(technology)); + this.MapperMock.Setup(p => p.Map(It.IsAny())).Returns(technologyServiceModel); + + TechnologyServiceModel result = await this.TechnologyService.GetTechnologyById(id); + + Assert.AreEqual(name, result.Name); }).GetAwaiter().GetResult(); } + [Test] + public void GetTechnologyById_ThrowsException_WhenTechnologyDoesNotExist() + { + Task.Run(async () => + { + string exceptionMessage = "The technology does not exist"; + Guid id = new Guid(); + this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny())).Returns(Task.FromResult(null)); + try + { + await this.TechnologyService.GetTechnologyById(id); + Assert.Fail("GetTechnologyById does not throw exception when technology does not exist"); + } + catch(ArgumentException ex) + { + Assert.AreEqual(exceptionMessage, ex.Message, "Exception messege is nto correct"); + } + }).GetAwaiter().GetResult(); + } #endregion + #region Update [Test] - public void Test() + [TestCase(true)] + [TestCase(false)] + public void UpdateTechnology_ReturnsIfUpdateIsSuccessfull_WhenTechnologyExistsy(bool shouldPass) { - Assert.IsTrue(true); + Task.Run(async () => + { + Guid id = new Guid(); + string name = "Gosho Trapov"; + Technology technology = new Technology + { + Name = name + }; + UpdateTechnologyServiceModel updatetechnologyServiceModel = new UpdateTechnologyServiceModel + { + Name = name, + Id = id + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(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(); + } + + [Test] + public void UpdateTechnology_ThrowsException_WhenTechnologyDoesNotExist() + { + Task.Run(async () => + { + string exceptionMessage = "Technology does not exist!"; + Guid id = new Guid(); + UpdateTechnologyServiceModel updateTechnologyServiceModel = new UpdateTechnologyServiceModel + { + Id = id + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny())).Returns(Task.FromResult(false)); + + try + { + await this.TechnologyService.UpdateTechnology(updateTechnologyServiceModel); + Assert.Fail("UpdateTechnology does not throw exception when technology does not exist"); + } + catch(ArgumentException ex) + { + Assert.AreEqual(exceptionMessage, ex.Message, "Exception Message is not correct"); + } + }).GetAwaiter().GetResult(); } + + [Test] + public void UpdateTechnology_ThrowsException_WhenTechnologyNameAlreadyExists() + { + Task.Run(async () => + { + string exceptionMessage = "Technology name already exists!"; + Guid id = new Guid(); + UpdateTechnologyServiceModel updateTechnologyServiceModel = new UpdateTechnologyServiceModel + { + Id = id + }; + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny())).Returns(Task.FromResult(true)); + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyNameExist(It.IsAny())).Returns(Task.FromResult(true)); + + try + { + await this.TechnologyService.UpdateTechnology(updateTechnologyServiceModel); + Assert.Fail("UpdateTechnology does not throw exception when technology name already exist"); + } + catch(ArgumentException ex) + { + Assert.AreEqual(exceptionMessage, ex.Message, "Exception Message is not correct"); + } + }).GetAwaiter().GetResult(); + } + #endregion + + #region Delete + [Test] + [TestCase(true)] + [TestCase(false)] + public void DeleteTechnology_ShouldReturnIfDeletionIsSuccessfull_WhenTechnologyExists(bool shouldPass) + { + Task.Run(async () => + { + Guid id = new Guid(); + Technology technology = new Technology(); + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(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); + + Assert.AreEqual(shouldPass, result); + }).GetAwaiter().GetResult(); + } + + [Test] + public void DeleteTechnology_ThrowsException_WhenTechnologyDoesNotExist() + { + Task.Run(async () => + { + string exceptionMessage = "Technology does not exist!"; + Guid id = new Guid(); + + this.TechnologyRepositoryMock.Setup(p => p.DoesTechnologyExist(It.IsAny())).Returns(Task.FromResult(false)); + + try + { + await this.TechnologyService.DeleteTechnology(id); + Assert.Fail("DeleteTechnology does not throw exception when technology does not exist"); + } + catch(ArgumentException ex) + { + Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message"); + } + }).GetAwaiter().GetResult(); + } + #endregion + //Task.Run(async () => + //{ + // + //}).GetAwaiter().GetResult(); } } -- cgit v1.2.3