aboutsummaryrefslogtreecommitdiff
path: root/src/Web/DevHive.Web.Tests
diff options
context:
space:
mode:
authorKamen Mladenov <kamen.d.mladenov@protonmail.com>2021-04-09 19:51:35 +0300
committerGitHub <noreply@github.com>2021-04-09 19:51:35 +0300
commit233f38915ba0079079233eff55434ef349c05c45 (patch)
tree6c5f69017865bcab87355e910c87339453da1406 /src/Web/DevHive.Web.Tests
parentf4a70c6430db923af9fa9958a11c2d6612cb52cc (diff)
parenta992357efcf1bc1ece81b95ecee5e05a0b73bfdc (diff)
downloadDevHive-233f38915ba0079079233eff55434ef349c05c45.tar
DevHive-233f38915ba0079079233eff55434ef349c05c45.tar.gz
DevHive-233f38915ba0079079233eff55434ef349c05c45.zip
Merge pull request #28 from Team-Kaleidoscope/devHEADv0.2mainheroku/main
Second stage: Complete
Diffstat (limited to 'src/Web/DevHive.Web.Tests')
-rw-r--r--src/Web/DevHive.Web.Tests/CommentController.Tests.cs325
-rw-r--r--src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj22
-rw-r--r--src/Web/DevHive.Web.Tests/FeedController.Tests.cs110
-rw-r--r--src/Web/DevHive.Web.Tests/LanguageController.Tests.cs224
-rw-r--r--src/Web/DevHive.Web.Tests/PostController.Tests.cs309
-rw-r--r--src/Web/DevHive.Web.Tests/RatingController.Tests.cs299
-rw-r--r--src/Web/DevHive.Web.Tests/RoleController.Tests.cs224
-rw-r--r--src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs226
-rw-r--r--src/Web/DevHive.Web.Tests/UserController.Tests.cs257
9 files changed, 1996 insertions, 0 deletions
diff --git a/src/Web/DevHive.Web.Tests/CommentController.Tests.cs b/src/Web/DevHive.Web.Tests/CommentController.Tests.cs
new file mode 100644
index 0000000..830677e
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/CommentController.Tests.cs
@@ -0,0 +1,325 @@
+using System;
+using System.Linq;
+using AutoMapper;
+using DevHive.Common.Jwt.Interfaces;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Comment;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Comment;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class CommentControllerTests
+ {
+ const string MESSAGE = "Gosho Trapov";
+ private Mock<ICommentService> _commentServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private Mock<IJwtService> _jwtServiceMock;
+ private CommentController _commentController;
+
+ #region Setup
+ [SetUp]
+ public void SetUp()
+ {
+ this._commentServiceMock = new Mock<ICommentService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._jwtServiceMock = new Mock<IJwtService>();
+ this._commentController = new CommentController(this._commentServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object);
+ }
+ #endregion
+
+ #region Add
+ [Test]
+ public void AddComment_ReturnsOkObjectResult_WhenCommentIsSuccessfullyCreated()
+ {
+ Guid id = Guid.NewGuid();
+ CreateCommentWebModel createCommentWebModel = new()
+ {
+ Message = MESSAGE
+ };
+ CreateCommentServiceModel createCommentServiceModel = new()
+ {
+ Message = MESSAGE
+ };
+
+ this._mapperMock
+ .Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>()))
+ .Returns(createCommentServiceModel);
+ this._commentServiceMock
+ .Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>()))
+ .ReturnsAsync(id);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._commentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).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 AddComment_ReturnsBadRequestObjectResult_WhenCommentIsNotCreatedSuccessfully()
+ {
+ CreateCommentWebModel createCommentWebModel = new()
+ {
+ Message = MESSAGE
+ };
+ CreateCommentServiceModel createCommentServiceModel = new()
+ {
+ Message = MESSAGE
+ };
+ string errorMessage = $"Could not create comment!";
+
+
+ this._mapperMock
+ .Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>()))
+ .Returns(createCommentServiceModel);
+ this._commentServiceMock
+ .Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>()))
+ .ReturnsAsync(Guid.Empty);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._commentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+
+ [Test]
+ public void AddComment_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ CreateCommentWebModel createCommentWebModel = new()
+ {
+ Message = MESSAGE
+ };
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._commentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsTheComment_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+ ReadCommentServiceModel readCommentServiceModel = new()
+ {
+ Message = MESSAGE
+ };
+ ReadCommentWebModel readCommentWebModel = new()
+ {
+ Message = MESSAGE
+ };
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.GetCommentById(It.IsAny<Guid>()))
+ .ReturnsAsync(readCommentServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<ReadCommentWebModel>(It.IsAny<ReadCommentServiceModel>()))
+ .Returns(readCommentWebModel);
+
+ IActionResult result = this._commentController.GetCommentById(id).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ ReadCommentWebModel resultModel = okObjectResult.Value as ReadCommentWebModel;
+
+ Assert.AreEqual(MESSAGE, resultModel.Message);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenCommentIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateCommentWebModel updateCommentWebModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+ UpdateCommentServiceModel updateCommentServiceModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+
+ this._commentServiceMock
+ .Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>()))
+ .ReturnsAsync(id);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateCommentServiceModel>(It.IsAny<UpdateCommentWebModel>()))
+ .Returns(updateCommentServiceModel);
+
+ IActionResult result = this._commentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ object resultModel = okObjectResult.Value;
+ string[] resultAsString = resultModel.ToString().Split(' ').ToArray();
+
+ Assert.AreEqual(id.ToString(), resultAsString[3]);
+ }
+
+ [Test]
+ public void Update_ShouldReturnBadObjectResult_WhenCommentIsNotUpdatedSuccessfully()
+ {
+ string message = "Unable to update comment!";
+ UpdateCommentWebModel updateCommentWebModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+ UpdateCommentServiceModel updateCommentServiceModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+
+ this._commentServiceMock
+ .Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>()))
+ .ReturnsAsync(Guid.Empty);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateCommentServiceModel>(It.IsAny<UpdateCommentWebModel>()))
+ .Returns(updateCommentServiceModel);
+
+ IActionResult result = this._commentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result;
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+
+ [Test]
+ public void Update_ShouldReturnUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ UpdateCommentWebModel updateCommentWebModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(false);
+ // this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).ReturnsAsync(false));
+
+ IActionResult result = this._commentController.UpdateComment(Guid.Empty, updateCommentWebModel, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+
+ #region Delete
+ [Test]
+ public void Delete_ReturnsOkResult_WhenCommentIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._commentServiceMock
+ .Setup(p => p.DeleteComment(It.IsAny<Guid>()))
+ .ReturnsAsync(true);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._commentController.DeleteComment(id, null).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void DeleteComment_ReturnsBadRequestObjectResult_WhenCommentIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete Comment";
+ Guid id = Guid.NewGuid();
+
+ this._commentServiceMock
+ .Setup(p => p.DeleteComment(It.IsAny<Guid>()))
+ .ReturnsAsync(false);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._commentController.DeleteComment(id, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+
+ [Test]
+ public void DeleteComment_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._commentServiceMock
+ .Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._commentController.DeleteComment(Guid.Empty, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+ }
+}
diff --git a/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj b/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj
new file mode 100644
index 0000000..49a9173
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/DevHive.Web.Tests.csproj
@@ -0,0 +1,22 @@
+<Project Sdk="Microsoft.NET.Sdk">
+ <PropertyGroup>
+ <TargetFramework>net5.0</TargetFramework>
+ <IsPackable>false</IsPackable>
+ </PropertyGroup>
+ <ItemGroup>
+ <PackageReference Include="Moq" Version="4.16.1"/>
+ <PackageReference Include="NUnit" Version="3.13.1"/>
+ <PackageReference Include="NUnit3TestAdapter" Version="3.17.0"/>
+ <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.9.1"/>
+ <PackageReference Include="SonarAnalyzer.CSharp" Version="8.20.0.28934"/>
+ </ItemGroup>
+ <ItemGroup>
+ <ProjectReference Include="..\DevHive.Web\DevHive.Web.csproj"/>
+ <ProjectReference Include="..\..\Common\DevHive.Common\DevHive.Common.csproj"/>
+ <ProjectReference Include="..\..\Common\DevHive.Common.Models\DevHive.Common.Models.csproj"/>
+ </ItemGroup>
+ <PropertyGroup>
+ <EnableNETAnalyzers>true</EnableNETAnalyzers>
+ <AnalysisLevel>latest</AnalysisLevel>
+ </PropertyGroup>
+</Project> \ No newline at end of file
diff --git a/src/Web/DevHive.Web.Tests/FeedController.Tests.cs b/src/Web/DevHive.Web.Tests/FeedController.Tests.cs
new file mode 100644
index 0000000..2f43b6c
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/FeedController.Tests.cs
@@ -0,0 +1,110 @@
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Comment;
+using DevHive.Web.Models.Feed;
+using DevHive.Web.Models.Post;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class FeedControllerTests
+ {
+ private Mock<IFeedService> _feedServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private FeedController _feedController;
+
+ #region SetUp
+ [SetUp]
+ public void SetUp()
+ {
+ this._feedServiceMock = new Mock<IFeedService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._feedController = new FeedController(this._feedServiceMock.Object, this._mapperMock.Object);
+ }
+ #endregion
+
+ #region GetPosts
+ [Test]
+ public async Task GetPosts_ReturnsOkObjectResultWithCorrectReadPageWebModel_WhenPostsExist()
+ {
+ GetPageWebModel getPageWebModel = new();
+ GetPageServiceModel getPageServiceModel = new();
+ ReadPageServiceModel readPageServiceModel = new();
+ ReadPageWebModel readPageWebModel = new()
+ {
+ Posts = new()
+ {
+ new ReadPostWebModel(),
+ new ReadPostWebModel(),
+ new ReadPostWebModel()
+ }
+ };
+
+ this._feedServiceMock
+ .Setup(p => p.GetPage(It.IsAny<GetPageServiceModel>()))
+ .ReturnsAsync(readPageServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<GetPageServiceModel>(It.IsAny<GetPageWebModel>()))
+ .Returns(getPageServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<ReadPageWebModel>(It.IsAny<ReadPageServiceModel>()))
+ .Returns(readPageWebModel);
+
+ IActionResult result = await this._feedController.GetPosts(Guid.Empty, getPageWebModel);
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ ReadPageWebModel resultModel = okObjectResult.Value as Models.Comment.ReadPageWebModel;
+
+ Assert.AreEqual(3, resultModel.Posts.Count);
+ }
+ #endregion
+
+ #region GetUserPosts
+ [Test]
+ public async Task GetUserPosts_GetsPostsOfUser_WhenTheyExist()
+ {
+ GetPageWebModel getPageWebModel = new();
+ GetPageServiceModel getPageServiceModel = new();
+ ReadPageServiceModel readPageServiceModel = new();
+ ReadPageWebModel readPageWebModel = new()
+ {
+ Posts = new()
+ {
+ new ReadPostWebModel(),
+ new ReadPostWebModel(),
+ new ReadPostWebModel()
+ }
+ };
+
+ this._feedServiceMock
+ .Setup(p => p.GetUserPage(It.IsAny<GetPageServiceModel>()))
+ .ReturnsAsync(readPageServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<GetPageServiceModel>(It.IsAny<GetPageWebModel>()))
+ .Returns(getPageServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<ReadPageWebModel>(It.IsAny<ReadPageServiceModel>()))
+ .Returns(readPageWebModel);
+
+ IActionResult result = await this._feedController.GetUserPosts(null, getPageWebModel);
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ ReadPageWebModel resultModel = okObjectResult.Value as Models.Comment.ReadPageWebModel;
+
+ Assert.AreEqual(3, resultModel.Posts.Count);
+ }
+ #endregion
+ }
+}
diff --git a/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs b/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs
new file mode 100644
index 0000000..52e07fa
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/LanguageController.Tests.cs
@@ -0,0 +1,224 @@
+using System;
+using System.Linq;
+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;
+ private Mock<IMapper> _mapperMock;
+ private LanguageController _languageController;
+
+ [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()
+ {
+ Name = NAME
+ };
+ CreateLanguageServiceModel createLanguageServiceModel = new()
+ {
+ 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>()))
+ .ReturnsAsync(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()
+ {
+ Name = NAME
+ };
+ CreateLanguageServiceModel createTechnologyServiceModel = new()
+ {
+ 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>()))
+ .ReturnsAsync(id);
+
+ IActionResult result = this._languageController.Create(createTechnologyWebModel).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsTheLanguage_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ ReadLanguageServiceModel readLanguageServiceModel = new()
+ {
+ Name = NAME
+ };
+ ReadLanguageWebModel readLanguageWebModel = new()
+ {
+ Name = NAME
+ };
+
+ this._languageServiceMock
+ .Setup(p => p.GetLanguageById(It.IsAny<Guid>()))
+ .ReturnsAsync(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()
+ {
+ Name = NAME
+ };
+ UpdateLanguageServiceModel updateLanguageServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._languageServiceMock
+ .Setup(p => p.UpdateLanguage(It.IsAny<UpdateLanguageServiceModel>()))
+ .ReturnsAsync(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_ShouldReturnBadObjectResult_WhenLanguageIsNotUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ string message = "Could not update Language";
+ UpdateLanguageWebModel updateLanguageWebModel = new()
+ {
+ Name = NAME
+ };
+ UpdateLanguageServiceModel updateLanguageServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._languageServiceMock
+ .Setup(p => p.UpdateLanguage(It.IsAny<UpdateLanguageServiceModel>()))
+ .ReturnsAsync(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_WhenLanguageIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._languageServiceMock
+ .Setup(p => p.DeleteLanguage(It.IsAny<Guid>()))
+ .ReturnsAsync(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>()))
+ .ReturnsAsync(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/Web/DevHive.Web.Tests/PostController.Tests.cs b/src/Web/DevHive.Web.Tests/PostController.Tests.cs
new file mode 100644
index 0000000..df95191
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/PostController.Tests.cs
@@ -0,0 +1,309 @@
+using System;
+using System.Linq;
+using AutoMapper;
+using DevHive.Common.Jwt.Interfaces;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Post;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Post;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class PostControllerTests
+ {
+ const string MESSAGE = "Gosho Trapov";
+ private Mock<IPostService> _postServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private Mock<IJwtService> _jwtServiceMock;
+ private PostController _postController;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._postServiceMock = new Mock<IPostService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._jwtServiceMock = new Mock<IJwtService>();
+ this._postController = new PostController(this._postServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void CreatePost_ReturnsOkObjectResult_WhenPostIsSuccessfullyCreated()
+ {
+ CreatePostWebModel createPostWebModel = new()
+ {
+ Message = MESSAGE
+ };
+ CreatePostServiceModel createPostServiceModel = new()
+ {
+ Message = MESSAGE
+ };
+ Guid id = Guid.NewGuid();
+
+ this._mapperMock
+ .Setup(p => p.Map<CreatePostServiceModel>(It.IsAny<CreatePostWebModel>()))
+ .Returns(createPostServiceModel);
+ this._postServiceMock
+ .Setup(p => p.CreatePost(It.IsAny<CreatePostServiceModel>()))
+ .ReturnsAsync(id);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._postController.Create(Guid.Empty, createPostWebModel, null).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 CreatePost_ReturnsBadRequestObjectResult_WhenPostIsNotCreatedSuccessfully()
+ {
+ CreatePostWebModel createTechnologyWebModel = new()
+ {
+ Message = MESSAGE
+ };
+ CreatePostServiceModel createTechnologyServiceModel = new()
+ {
+ Message = MESSAGE
+ };
+ Guid id = Guid.Empty;
+ string errorMessage = $"Could not create post!";
+
+ this._mapperMock
+ .Setup(p => p.Map<CreatePostServiceModel>(It.IsAny<CreatePostWebModel>()))
+ .Returns(createTechnologyServiceModel);
+ this._postServiceMock
+ .Setup(p => p.CreatePost(It.IsAny<CreatePostServiceModel>()))
+ .ReturnsAsync(id);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._postController.Create(Guid.Empty, createTechnologyWebModel, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+
+ [Test]
+ public void CreatePost_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ CreatePostWebModel createPostWebModel = new()
+ {
+ Message = MESSAGE
+ };
+
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._postController.Create(Guid.NewGuid(), createPostWebModel, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsThePost_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ ReadPostServiceModel readPostServiceModel = new()
+ {
+ Message = MESSAGE
+ };
+ ReadPostWebModel readPostWebModel = new()
+ {
+ Message = MESSAGE
+ };
+
+ this._postServiceMock
+ .Setup(p => p.GetPostById(It.IsAny<Guid>()))
+ .ReturnsAsync(readPostServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<ReadPostWebModel>(It.IsAny<ReadPostServiceModel>()))
+ .Returns(readPostWebModel);
+
+ IActionResult result = this._postController.GetById(id).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ ReadPostWebModel resultModel = okObjectResult.Value as Models.Post.ReadPostWebModel;
+
+ Assert.AreEqual(MESSAGE, resultModel.Message);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenPostIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdatePostWebModel updatePostWebModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+ UpdatePostServiceModel updatePostServiceModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+
+ this._postServiceMock
+ .Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>()))
+ .ReturnsAsync(id);
+ this._mapperMock
+ .Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>()))
+ .Returns(updatePostServiceModel);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._postController.Update(id, updatePostWebModel, null).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+ }
+
+ [Test]
+ public void Update_ShouldReturnBadObjectResult_WhenPostIsNotUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ string message = "Could not update post!";
+ UpdatePostWebModel updatePostWebModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+ UpdatePostServiceModel updatePostServiceModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+
+ this._postServiceMock
+ .Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>()))
+ .ReturnsAsync(Guid.Empty);
+ this._mapperMock
+ .Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>()))
+ .Returns(updatePostServiceModel);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._postController.Update(id, updatePostWebModel, null).Result;
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+
+ [Test]
+ public void Update_ShouldReturnUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ UpdatePostWebModel updatePostWebModel = new()
+ {
+ NewMessage = MESSAGE
+ };
+
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._postController.Update(Guid.Empty, updatePostWebModel, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+
+ #region Delete
+ [Test]
+ public void Delete_ReturnsOkResult_WhenPostIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._postServiceMock
+ .Setup(p => p.DeletePost(It.IsAny<Guid>()))
+ .ReturnsAsync(true);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._postController.Delete(id, null).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delete_ReturnsBadRequestObjectResult_WhenPostIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete Post";
+ Guid id = Guid.NewGuid();
+
+ this._postServiceMock
+ .Setup(p => p.DeletePost(It.IsAny<Guid>()))
+ .ReturnsAsync(false);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._postController.Delete(id, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+
+ [Test]
+ public void DeletePost_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ this._postServiceMock
+ .Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._postController.Delete(Guid.Empty, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+ }
+}
diff --git a/src/Web/DevHive.Web.Tests/RatingController.Tests.cs b/src/Web/DevHive.Web.Tests/RatingController.Tests.cs
new file mode 100644
index 0000000..c7340a6
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/RatingController.Tests.cs
@@ -0,0 +1,299 @@
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Common.Jwt.Interfaces;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Rating;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Rating;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class RatingControllerTests
+ {
+ private Mock<IRatingService> _ratingServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private Mock<IJwtService> _jwtServiceMock;
+ private RatingController _ratingController;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._ratingServiceMock = new Mock<IRatingService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._jwtServiceMock = new Mock<IJwtService>();
+ this._ratingController = new RatingController(this._ratingServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void CreateRating_ReturnsOkObjectResult_WhenRatingIsSuccessfullyCreated()
+ {
+ Guid postId = Guid.NewGuid();
+ CreateRatingWebModel createRatingWebModel = new CreateRatingWebModel
+ {
+ PostId = postId,
+ IsLike = true
+ };
+ CreateRatingServiceModel createRatingServiceModel = new CreateRatingServiceModel
+ {
+ PostId = postId,
+ IsLike = true
+ };
+ Guid ratingId = Guid.NewGuid();
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._mapperMock
+ .Setup(p => p.Map<CreateRatingServiceModel>(It.IsAny<CreateRatingWebModel>()))
+ .Returns(createRatingServiceModel);
+ this._ratingServiceMock
+ .Setup(p => p.RatePost(It.IsAny<CreateRatingServiceModel>()))
+ .ReturnsAsync(ratingId);
+
+ IActionResult result = this._ratingController.RatePost(Guid.Empty, createRatingWebModel, String.Empty).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(ratingId, resultId);
+ }
+
+ [Test]
+ public void CreateRating_ReturnsBadRequestResult_WhenRatingIsNotSuccessfullyCreated()
+ {
+ Guid postId = Guid.NewGuid();
+ CreateRatingWebModel createRatingWebModel = new CreateRatingWebModel
+ {
+ PostId = postId,
+ IsLike = true
+ };
+ CreateRatingServiceModel createRatingServiceModel = new CreateRatingServiceModel
+ {
+ PostId = postId,
+ IsLike = true
+ };
+ Guid ratingId = Guid.NewGuid();
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._mapperMock
+ .Setup(p => p.Map<CreateRatingServiceModel>(It.IsAny<CreateRatingWebModel>()))
+ .Returns(createRatingServiceModel);
+ this._ratingServiceMock
+ .Setup(p => p.RatePost(It.IsAny<CreateRatingServiceModel>()))
+ .ReturnsAsync(Guid.Empty);
+
+ IActionResult result = this._ratingController.RatePost(Guid.Empty, createRatingWebModel, String.Empty).Result;
+
+ Assert.IsInstanceOf<BadRequestResult>(result);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetRatingById_ReturnsTheRating_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+ Guid userId = Guid.NewGuid();
+ Guid postId = Guid.NewGuid();
+ ReadRatingWebModel readRatingWebModel = new ReadRatingWebModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+ ReadRatingServiceModel readRatingServiceModel = new ReadRatingServiceModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+
+ this._mapperMock
+ .Setup(p => p.Map<ReadRatingServiceModel>(It.IsAny<ReadRatingWebModel>()))
+ .Returns(readRatingServiceModel);
+ this._ratingServiceMock
+ .Setup(p => p.GetRatingById(It.IsAny<Guid>()))
+ .ReturnsAsync(readRatingServiceModel);
+
+ IActionResult result = this._ratingController.GetRatingById(id).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+ }
+
+ [Test]
+ public void GetRatingByUserAndPost_ReturnsTheRating_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+ Guid userId = Guid.NewGuid();
+ Guid postId = Guid.NewGuid();
+ ReadRatingWebModel readRatingWebModel = new ReadRatingWebModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+ ReadRatingServiceModel readRatingServiceModel = new ReadRatingServiceModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+
+ this._mapperMock
+ .Setup(p => p.Map<ReadRatingServiceModel>(It.IsAny<ReadRatingWebModel>()))
+ .Returns(readRatingServiceModel);
+ this._ratingServiceMock
+ .Setup(p => p.GetRatingByPostAndUser(It.IsAny<Guid>(), It.IsAny<Guid>()))
+ .ReturnsAsync(readRatingServiceModel);
+
+ IActionResult result = this._ratingController.GetRatingByUserAndPost(userId, postId).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+ }
+
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenRatingIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ Guid userId = Guid.NewGuid();
+ Guid postId = Guid.NewGuid();
+ UpdateRatingWebModel updateRatingWebModel = new UpdateRatingWebModel
+ {
+ IsLike = true
+ };
+ UpdateRatingServiceModel updateRatingServiceModel = new UpdateRatingServiceModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+ ReadRatingWebModel readRatingWebModel = new ReadRatingWebModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+ ReadRatingServiceModel readRatingServiceModel = new ReadRatingServiceModel
+ {
+ Id = id,
+ UserId = userId,
+ PostId = postId,
+ IsLike = true
+ };
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateRatingServiceModel>(It.IsAny<UpdateRatingWebModel>()))
+ .Returns(updateRatingServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<ReadRatingWebModel>(It.IsAny<ReadRatingServiceModel>()))
+ .Returns(readRatingWebModel);
+ this._ratingServiceMock
+ .Setup(p => p.UpdateRating(It.IsAny<UpdateRatingServiceModel>()))
+ .ReturnsAsync(readRatingServiceModel);
+
+ IActionResult result = this._ratingController.UpdateRating(userId, postId, updateRatingWebModel, String.Empty).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+ }
+
+ [Test]
+ public void Update_ShouldReturnBadObjectResult_WhenLanguageIsNotUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateRatingWebModel updateRatingWebModel = new UpdateRatingWebModel
+ {
+ IsLike = true
+ };
+ UpdateRatingServiceModel updateRatingServiceModel = new UpdateRatingServiceModel
+ {
+ Id = id,
+ IsLike = true
+ };
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateRatingServiceModel>(It.IsAny<UpdateRatingWebModel>()))
+ .Returns(updateRatingServiceModel);
+ this._ratingServiceMock
+ .Setup(p => p.UpdateRating(It.IsAny<UpdateRatingServiceModel>()))
+ .Returns(Task.FromResult<ReadRatingServiceModel>(null));
+
+ IActionResult result = this._ratingController.UpdateRating(Guid.Empty, Guid.Empty, updateRatingWebModel, String.Empty).Result;
+
+ Assert.IsInstanceOf<BadRequestResult>(result);
+ }
+ #endregion
+
+ #region Delete
+ [Test]
+ public void Delete_ReturnsOkResult_WhenRatingIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._ratingServiceMock
+ .Setup(p => p.DeleteRating(It.IsAny<Guid>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._ratingController.DeleteRating(Guid.Empty, Guid.Empty, String.Empty).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delete_ReturnsBadRequestObjectResult_WhenRatingIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete Rating";
+ Guid id = Guid.NewGuid();
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._ratingServiceMock
+ .Setup(p => p.DeleteRating(It.IsAny<Guid>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._ratingController.DeleteRating(Guid.Empty, Guid.Empty, String.Empty).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+ #endregion
+ }
+}
diff --git a/src/Web/DevHive.Web.Tests/RoleController.Tests.cs b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs
new file mode 100644
index 0000000..d1c3381
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/RoleController.Tests.cs
@@ -0,0 +1,224 @@
+using System;
+using System.Linq;
+using AutoMapper;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Role;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Role;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class RoleControllerTests
+ {
+ const string NAME = "Gosho Trapov";
+ private Mock<IRoleService> _roleServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private RoleController _roleController;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._roleServiceMock = new Mock<IRoleService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._roleController = new RoleController(this._roleServiceMock.Object, this._mapperMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void CreateRole_ReturnsOkObjectResult_WhenRoleIsSuccessfullyCreated()
+ {
+ CreateRoleWebModel createRoleWebModel = new()
+ {
+ Name = NAME
+ };
+ CreateRoleServiceModel createRoleServiceModel = new()
+ {
+ Name = NAME
+ };
+ Guid id = Guid.NewGuid();
+
+ this._mapperMock
+ .Setup(p => p.Map<CreateRoleServiceModel>(It.IsAny<CreateRoleWebModel>()))
+ .Returns(createRoleServiceModel);
+ this._roleServiceMock
+ .Setup(p => p.CreateRole(It.IsAny<CreateRoleServiceModel>()))
+ .ReturnsAsync(id);
+
+ IActionResult result = this._roleController.Create(createRoleWebModel).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 CreateRole_ReturnsBadRequestObjectResult_WhenRoleIsNotCreatedSuccessfully()
+ {
+ CreateRoleWebModel createTechnologyWebModel = new()
+ {
+ Name = NAME
+ };
+ CreateRoleServiceModel createTechnologyServiceModel = new()
+ {
+ Name = NAME
+ };
+ Guid id = Guid.Empty;
+ string errorMessage = $"Could not create role {NAME}";
+
+ this._mapperMock
+ .Setup(p => p.Map<CreateRoleServiceModel>(It.IsAny<CreateRoleWebModel>()))
+ .Returns(createTechnologyServiceModel);
+ this._roleServiceMock
+ .Setup(p => p.CreateRole(It.IsAny<CreateRoleServiceModel>()))
+ .ReturnsAsync(id);
+
+ IActionResult result = this._roleController.Create(createTechnologyWebModel).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsTheRole_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ RoleServiceModel roleServiceModel = new()
+ {
+ Name = NAME
+ };
+ RoleWebModel roleWebModel = new()
+ {
+ Name = NAME
+ };
+
+ this._roleServiceMock
+ .Setup(p => p.GetRoleById(It.IsAny<Guid>()))
+ .ReturnsAsync(roleServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<RoleWebModel>(It.IsAny<RoleServiceModel>()))
+ .Returns(roleWebModel);
+
+ IActionResult result = this._roleController.GetById(id).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ RoleWebModel resultModel = okObjectResult.Value as RoleWebModel;
+
+ Assert.AreEqual(NAME, resultModel.Name);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenRoleIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateRoleWebModel updateRoleWebModel = new()
+ {
+ Name = NAME
+ };
+ UpdateRoleServiceModel updateRoleServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._roleServiceMock
+ .Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>()))
+ .ReturnsAsync(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateRoleServiceModel>(It.IsAny<UpdateRoleWebModel>()))
+ .Returns(updateRoleServiceModel);
+
+ IActionResult result = this._roleController.Update(id, updateRoleWebModel).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Update_ShouldReturnBadObjectResult_WhenRoleIsNotUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ string message = "Could not update role!";
+ UpdateRoleWebModel updateRoleWebModel = new()
+ {
+ Name = NAME
+ };
+ UpdateRoleServiceModel updateRoleServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._roleServiceMock
+ .Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>()))
+ .ReturnsAsync(false);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateRoleServiceModel>(It.IsAny<UpdateRoleWebModel>()))
+ .Returns(updateRoleServiceModel);
+
+ IActionResult result = this._roleController.Update(id, updateRoleWebModel).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_WhenRoleIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._roleServiceMock
+ .Setup(p => p.DeleteRole(It.IsAny<Guid>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._roleController.Delete(id).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delete_ReturnsBadRequestObjectResult_WhenRoleIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete role!";
+ Guid id = Guid.NewGuid();
+
+ this._roleServiceMock
+ .Setup(p => p.DeleteRole(It.IsAny<Guid>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._roleController.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/Web/DevHive.Web.Tests/TechnologyController.Tests.cs b/src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs
new file mode 100644
index 0000000..723fb73
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/TechnologyController.Tests.cs
@@ -0,0 +1,226 @@
+using AutoMapper;
+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 NUnit.Framework;
+using System;
+using System.Linq;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class TechnologyControllerTests
+ {
+ const string NAME = "Gosho Trapov";
+ private Mock<ITechnologyService> _technologyServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private TechnologyController _technologyController;
+
+ #region SetUp
+ [SetUp]
+ public void SetUp()
+ {
+ this._technologyServiceMock = new Mock<ITechnologyService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._technologyController = new TechnologyController(this._technologyServiceMock.Object, this._mapperMock.Object);
+ }
+ #endregion
+
+ #region Create
+ [Test]
+ public void Create_ReturnsOkObjectResult_WhenTechnologyIsSuccessfullyCreated()
+ {
+ CreateTechnologyWebModel createTechnologyWebModel = new()
+ {
+ Name = NAME
+ };
+ CreateTechnologyServiceModel createTechnologyServiceModel = new()
+ {
+ Name = NAME
+ };
+ Guid id = Guid.NewGuid();
+
+ this._mapperMock
+ .Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<CreateTechnologyWebModel>()))
+ .Returns(createTechnologyServiceModel);
+ this._technologyServiceMock
+ .Setup(p => p.CreateTechnology(It.IsAny<CreateTechnologyServiceModel>()))
+ .ReturnsAsync(id);
+
+ IActionResult result = this._technologyController.Create(createTechnologyWebModel).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 Create_ReturnsBadRequestObjectResult_WhenTechnologyIsNotCreatedSuccessfully()
+ {
+ CreateTechnologyWebModel createTechnologyWebModel = new()
+ {
+ Name = NAME
+ };
+ CreateTechnologyServiceModel createTechnologyServiceModel = new()
+ {
+ Name = NAME
+ };
+ Guid id = Guid.Empty;
+ string errorMessage = $"Could not create technology {NAME}";
+
+ this._mapperMock
+ .Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<CreateTechnologyWebModel>()))
+ .Returns(createTechnologyServiceModel);
+ this._technologyServiceMock
+ .Setup(p => p.CreateTechnology(It.IsAny<CreateTechnologyServiceModel>()))
+ .ReturnsAsync(id);
+
+ IActionResult result = this._technologyController.Create(createTechnologyWebModel).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsTheThecnology_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ ReadTechnologyWebModel readTechnologyWebModel = new()
+ {
+ Name = NAME
+ };
+ ReadTechnologyServiceModel readTechnologyServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._technologyServiceMock
+ .Setup(p => p.GetTechnologyById(It.IsAny<Guid>()))
+ .ReturnsAsync(readTechnologyServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<ReadTechnologyWebModel>(It.IsAny<ReadTechnologyServiceModel>()))
+ .Returns(readTechnologyWebModel);
+
+ IActionResult result = this._technologyController.GetById(id).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ ReadTechnologyWebModel resultModel = okObjectResult.Value as Models.Technology.ReadTechnologyWebModel;
+
+ Assert.AreEqual(NAME, resultModel.Name);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenTechnologyIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateTechnologyWebModel updateTechnologyWebModel = new()
+ {
+ Name = NAME
+ };
+ UpdateTechnologyServiceModel updateTechnologyServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._technologyServiceMock
+ .Setup(p => p.UpdateTechnology(It.IsAny<UpdateTechnologyServiceModel>()))
+ .ReturnsAsync(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateTechnologyServiceModel>(It.IsAny<UpdateTechnologyWebModel>()))
+ .Returns(updateTechnologyServiceModel);
+
+ IActionResult result = this._technologyController.Update(id, updateTechnologyWebModel).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Update_ShouldReturnBadObjectResult_WhenTechnologyIsNotUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ string message = "Could not update Technology";
+ UpdateTechnologyWebModel updateTechnologyWebModel = new()
+ {
+ Name = NAME
+ };
+ UpdateTechnologyServiceModel updateTechnologyServiceModel = new()
+ {
+ Name = NAME
+ };
+
+ this._technologyServiceMock
+ .Setup(p => p.UpdateTechnology(It.IsAny<UpdateTechnologyServiceModel>()))
+ .ReturnsAsync(false);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateTechnologyServiceModel>(It.IsAny<UpdateTechnologyWebModel>()))
+ .Returns(updateTechnologyServiceModel);
+
+ IActionResult result = this._technologyController.Update(id, updateTechnologyWebModel).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_WhenTechnologyIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._technologyServiceMock
+ .Setup(p => p.DeleteTechnology(It.IsAny<Guid>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._technologyController.Delete(id).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delet_ReturnsBadRequestObjectResult_WhenTechnologyIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete Technology";
+ Guid id = Guid.NewGuid();
+
+ this._technologyServiceMock
+ .Setup(p => p.DeleteTechnology(It.IsAny<Guid>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._technologyController.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/Web/DevHive.Web.Tests/UserController.Tests.cs b/src/Web/DevHive.Web.Tests/UserController.Tests.cs
new file mode 100644
index 0000000..3f88709
--- /dev/null
+++ b/src/Web/DevHive.Web.Tests/UserController.Tests.cs
@@ -0,0 +1,257 @@
+using System;
+using AutoMapper;
+using DevHive.Common.Jwt.Interfaces;
+using DevHive.Common.Models.Identity;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.User;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.User;
+using Microsoft.AspNetCore.Mvc;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Web.Tests
+{
+ [TestFixture]
+ public class UserControllerTests
+ {
+ const string USERNAME = "Gosho Trapov";
+ private Mock<IUserService> _userServiceMock;
+ private Mock<IMapper> _mapperMock;
+ private Mock<IJwtService> _jwtServiceMock;
+ private UserController _userController;
+
+ [SetUp]
+ public void SetUp()
+ {
+ this._userServiceMock = new Mock<IUserService>();
+ this._mapperMock = new Mock<IMapper>();
+ this._jwtServiceMock = new Mock<IJwtService>();
+ this._userController = new UserController(this._userServiceMock.Object, this._mapperMock.Object, this._jwtServiceMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void LoginUser_ReturnsOkObjectResult_WhenUserIsSuccessfullyLoggedIn()
+ {
+ LoginWebModel loginWebModel = new()
+ {
+ UserName = USERNAME
+ };
+ LoginServiceModel loginServiceModel = new()
+ {
+ UserName = USERNAME
+ };
+ string token = "goshotrapov";
+ TokenModel tokenModel = new(token);
+ TokenWebModel tokenWebModel = new(token);
+
+ this._mapperMock
+ .Setup(p => p.Map<LoginServiceModel>(It.IsAny<LoginWebModel>()))
+ .Returns(loginServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<TokenWebModel>(It.IsAny<TokenModel>()))
+ .Returns(tokenWebModel);
+ this._userServiceMock
+ .Setup(p => p.LoginUser(It.IsAny<LoginServiceModel>()))
+ .ReturnsAsync(tokenModel);
+
+ IActionResult result = this._userController.Login(loginWebModel).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ var resultToken = ((result as OkObjectResult).Value as TokenWebModel).Token;
+
+ Assert.AreEqual(token, resultToken);
+ }
+
+ [Test]
+ public void RegisterUser_ReturnsOkObjectResult_WhenUserIsSuccessfullyRegistered()
+ {
+ RegisterWebModel registerWebModel = new()
+ {
+ UserName = USERNAME
+ };
+ RegisterServiceModel registerServiceModel = new()
+ {
+ UserName = USERNAME
+ };
+ string token = "goshotrapov";
+ TokenModel tokenModel = new(token);
+ TokenWebModel tokenWebModel = new(token);
+
+ this._mapperMock
+ .Setup(p => p.Map<RegisterServiceModel>(It.IsAny<RegisterWebModel>()))
+ .Returns(registerServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<TokenWebModel>(It.IsAny<TokenModel>()))
+ .Returns(tokenWebModel);
+ this._userServiceMock
+ .Setup(p => p.RegisterUser(It.IsAny<RegisterServiceModel>()))
+ .ReturnsAsync(tokenModel);
+
+ IActionResult result = this._userController.Register(registerWebModel).Result;
+
+ Assert.IsInstanceOf<CreatedResult>(result);
+
+ CreatedResult createdResult = result as CreatedResult;
+ TokenWebModel resultModel = (createdResult.Value as TokenWebModel);
+
+ Assert.AreEqual(token, resultModel.Token);
+ }
+ #endregion
+
+ #region Read
+ [Test]
+ public void GetById_ReturnsTheUser_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ UserServiceModel userServiceModel = new()
+ {
+ UserName = USERNAME
+ };
+ UserWebModel userWebModel = new()
+ {
+ UserName = USERNAME
+ };
+
+ this._userServiceMock
+ .Setup(p => p.GetUserById(It.IsAny<Guid>()))
+ .ReturnsAsync(userServiceModel);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._mapperMock
+ .Setup(p => p.Map<UserWebModel>(It.IsAny<UserServiceModel>()))
+ .Returns(userWebModel);
+
+ IActionResult result = this._userController.GetById(id, null).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ UserWebModel resultModel = okObjectResult.Value as UserWebModel;
+
+ Assert.AreEqual(USERNAME, resultModel.UserName);
+ }
+
+ [Test]
+ public void GetById_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(false);
+
+ IActionResult result = this._userController.GetById(Guid.NewGuid(), null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+
+ [Test]
+ public void GetUser_ReturnsTheUser_WhenItExists()
+ {
+ UserWebModel userWebModel = new()
+ {
+ UserName = USERNAME
+ };
+ UserServiceModel userServiceModel = new()
+ {
+ UserName = USERNAME
+ };
+
+ this._userServiceMock
+ .Setup(p => p.GetUserByUsername(It.IsAny<string>()))
+ .ReturnsAsync(userServiceModel);
+ this._mapperMock
+ .Setup(p => p.Map<UserWebModel>(It.IsAny<UserServiceModel>()))
+ .Returns(userWebModel);
+
+ IActionResult result = this._userController.GetUser(null).Result;
+
+ Assert.IsInstanceOf<OkObjectResult>(result);
+
+ OkObjectResult okObjectResult = result as OkObjectResult;
+ UserWebModel resultModel = okObjectResult.Value as UserWebModel;
+
+ Assert.AreEqual(USERNAME, resultModel.UserName);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenUserIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateUserWebModel updateUserWebModel = new()
+ {
+ UserName = USERNAME
+ };
+ UpdateUserServiceModel updateUserServiceModel = new()
+ {
+ UserName = USERNAME
+ };
+ UserServiceModel userServiceModel = new()
+ {
+ UserName = USERNAME
+ };
+
+ this._userServiceMock
+ .Setup(p => p.UpdateUser(It.IsAny<UpdateUserServiceModel>()))
+ .ReturnsAsync(userServiceModel);
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._mapperMock
+ .Setup(p => p.Map<UpdateUserServiceModel>(It.IsAny<UpdateUserWebModel>()))
+ .Returns(updateUserServiceModel);
+
+ IActionResult result = this._userController.Update(id, updateUserWebModel, null).Result;
+
+ Assert.IsInstanceOf<AcceptedResult>(result);
+ }
+ #endregion
+
+ #region Delete
+ [Test]
+ public void Delete_ReturnsOkResult_WhenUserIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._userServiceMock
+ .Setup(p => p.DeleteUser(It.IsAny<Guid>()))
+ .ReturnsAsync(true);
+
+ IActionResult result = this._userController.Delete(id, null).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delete_ReturnsBadRequestObjectResult_WhenUserIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete User";
+ Guid id = Guid.NewGuid();
+
+ this._jwtServiceMock
+ .Setup(p => p.ValidateToken(It.IsAny<Guid>(), It.IsAny<string>()))
+ .Returns(true);
+ this._userServiceMock
+ .Setup(p => p.DeleteUser(It.IsAny<Guid>()))
+ .ReturnsAsync(false);
+
+ IActionResult result = this._userController.Delete(id, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequestObjectResult = result as BadRequestObjectResult;
+ string resultModel = badRequestObjectResult.Value.ToString();
+
+ Assert.AreEqual(message, resultModel);
+ }
+ #endregion
+ }
+}