aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDanail Dimitrov <danaildimitrov321@gmail.com>2021-01-21 22:03:50 +0200
committerDanail Dimitrov <danaildimitrov321@gmail.com>2021-01-21 22:03:50 +0200
commitfb527cbfb94e2723113d67b83ed8f24e32422e56 (patch)
treedd8635b63e6bee7c0cbf3612e26dce93d5465147 /src
parent6b15673c61d3b1d94012c449c243f98bc3ff13fc (diff)
downloadDevHive-fb527cbfb94e2723113d67b83ed8f24e32422e56.tar
DevHive-fb527cbfb94e2723113d67b83ed8f24e32422e56.tar.gz
DevHive-fb527cbfb94e2723113d67b83ed8f24e32422e56.zip
Adding Language layer unit test(Note: Data is to be refactored no data layer tests are added)
Diffstat (limited to 'src')
-rw-r--r--src/DevHive.Services/Services/LanguageService.cs4
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/LanguageService.Tests.cs142
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/LanguageController.Tests.cs201
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs12
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs1
5 files changed, 348 insertions, 12 deletions
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<Language>(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<Language>(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<Guid>())).Returns(Task.FromResult(language));
+ this.MapperMock.Setup(p => p.Map<ReadLanguageServiceModel>(It.IsAny<Language>())).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<Guid>())).Returns(Task.FromResult<Language>(null));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => 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<Guid>())).Returns(Task.FromResult(true));
+ this.LanguageRepositoryMock.Setup(p => p.DoesLanguageNameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(false));
+ this.LanguageRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Language>())).Returns(Task.FromResult(shouldPass));
+ this.MapperMock.Setup(p => p.Map<Language>(It.IsAny<UpdateLanguageServiceModel>())).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<Guid>())).Returns(Task.FromResult(false));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => 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<Guid>())).Returns(Task.FromResult(true));
+ this.LanguageRepositoryMock.Setup(p => p.DoesLanguageNameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => 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<Guid>())).Returns(Task.FromResult(true));
+ this.LanguageRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(language));
+ this.LanguageRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny<Language>())).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<Guid>())).Returns(Task.FromResult(false));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => 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<ILanguageService> LanguageServiceMock { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private LanguageController LanguageController { get; set; }
+
+ [SetUp]
+ public void SetUp()
+ {
+ this.LanguageServiceMock = new Mock<ILanguageService>();
+ this.MapperMock = new Mock<IMapper>();
+ 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<CreateLanguageServiceModel>(It.IsAny<CreateLanguageWebModel>())).Returns(createLanguageServiceModel);
+ this.LanguageServiceMock.Setup(p => p.CreateLanguage(It.IsAny<CreateLanguageServiceModel>())).Returns(Task.FromResult(id));
+
+ IActionResult result = this.LanguageController.Create(createLanguageWebModel).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(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<CreateLanguageServiceModel>(It.IsAny<CreateLanguageWebModel>())).Returns(createTechnologyServiceModel);
+ this.LanguageServiceMock.Setup(p => p.CreateLanguage(It.IsAny<CreateLanguageServiceModel>())).Returns(Task.FromResult(id));
+
+ IActionResult result = this.LanguageController.Create(createTechnologyWebModel).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(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<Guid>())).Returns(Task.FromResult(readLanguageServiceModel));
+ this.MapperMock.Setup(p => p.Map<ReadLanguageWebModel>(It.IsAny<ReadLanguageServiceModel>())).Returns(readLanguageWebModel);
+
+ IActionResult result = this.LanguageController.GetById(id).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(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<UpdateLanguageServiceModel>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<UpdateLanguageServiceModel>(It.IsAny<UpdateLanguageWebModel>())).Returns(updateLanguageServiceModel);
+
+ IActionResult result = this.LanguageController.Update(id, updateLanguageWebModel).Result;
+
+ Assert.IsInstanceOf<OkResult>(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<UpdateLanguageServiceModel>())).Returns(Task.FromResult(false));
+ this.MapperMock.Setup(p => p.Map<UpdateLanguageServiceModel>(It.IsAny<UpdateLanguageWebModel>())).Returns(updateLanguageServiceModel);
+
+ IActionResult result = this.LanguageController.Update(id, updateLanguageWebModel).Result;
+ Assert.IsInstanceOf<BadRequestObjectResult>(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<Guid>())).Returns(Task.FromResult(true));
+
+ IActionResult result = this.LanguageController.Delete(id).Result;
+
+ Assert.IsInstanceOf<OkResult>(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<Guid>())).Returns(Task.FromResult(false));
+
+ IActionResult result = this.LanguageController.Delete(id).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(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;