aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/DevHive.Tests')
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/FeedRepository.Tests.cs4
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/PostRepository.Tests.cs31
-rw-r--r--src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs28
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/CommentService.Tests.cs262
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/FeedService.Tests.cs310
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/PostService.Tests.cs261
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs6
-rw-r--r--src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs21
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/CommentController.Tests.cs256
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/FeedController.Tests.cs98
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs248
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/RoleController.Tests.cs201
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs12
-rw-r--r--src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs257
14 files changed, 1549 insertions, 446 deletions
diff --git a/src/DevHive.Tests/DevHive.Data.Tests/FeedRepository.Tests.cs b/src/DevHive.Tests/DevHive.Data.Tests/FeedRepository.Tests.cs
index 62d6455..f134bf3 100644
--- a/src/DevHive.Tests/DevHive.Data.Tests/FeedRepository.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Data.Tests/FeedRepository.Tests.cs
@@ -43,6 +43,7 @@ namespace DevHive.Data.Tests
friendsList.Add(dummyUser);
DateTime dateTime = new DateTime(3000, 05, 09, 9, 15, 0);
+ Console.WriteLine(dateTime.ToFileTime());
Post dummyPost = this.CreateDummyPost(dummyUser);
Post anotherDummnyPost = this.CreateDummyPost(dummyUser);
@@ -104,7 +105,8 @@ namespace DevHive.Data.Tests
{
Id = id,
Message = POST_MESSAGE,
- Creator = poster
+ Creator = poster,
+ TimeCreated = new DateTime(2000, 05, 09, 9, 15, 0)
};
this.Context.Posts.Add(post);
diff --git a/src/DevHive.Tests/DevHive.Data.Tests/PostRepository.Tests.cs b/src/DevHive.Tests/DevHive.Data.Tests/PostRepository.Tests.cs
index 7d80f1f..6dacf0b 100644
--- a/src/DevHive.Tests/DevHive.Data.Tests/PostRepository.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Data.Tests/PostRepository.Tests.cs
@@ -1,9 +1,9 @@
using System;
using System.Collections.Generic;
-using System.Linq;
using System.Threading.Tasks;
using DevHive.Data.Interfaces.Repositories;
using DevHive.Data.Models;
+using DevHive.Data.RelationModels;
using DevHive.Data.Repositories;
using Microsoft.EntityFrameworkCore;
using Moq;
@@ -11,7 +11,7 @@ using NUnit.Framework;
namespace DevHive.Data.Tests
{
- [TestFixture]
+ [TestFixture]
public class PostRepositoryTests
{
private const string POST_MESSAGE = "Post test message";
@@ -44,18 +44,18 @@ namespace DevHive.Data.Tests
#endregion
#region AddNewPostToCreator
- [Test]
- public async Task AddNewPostToCreator_ReturnsTrue_WhenNewPostIsAddedToCreator()
- {
- Post post = await this.AddEntity();
- User user = new User { Id = Guid.NewGuid() };
-
- this.UserRepository.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
-
- bool result = await this.PostRepository.AddNewPostToCreator(user.Id, post);
-
- Assert.IsTrue(result, "AddNewPostToCreator does not return true when Post Is Added To Creator successfully");
- }
+ // [Test]
+ // public async Task AddNewPostToCreator_ReturnsTrue_WhenNewPostIsAddedToCreator()
+ // {
+ // Post post = await this.AddEntity();
+ // User user = new User { Id = Guid.NewGuid() };
+ //
+ // this.UserRepository.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
+ //
+ // bool result = await this.PostRepository.AddNewPostToCreator(user.Id, post);
+ //
+ // Assert.IsTrue(result, "AddNewPostToCreator does not return true when Post Is Added To Creator successfully");
+ // }
#endregion
#region GetByIdAsync
@@ -124,13 +124,14 @@ namespace DevHive.Data.Tests
private async Task<Post> AddEntity(string name = POST_MESSAGE)
{
User creator = new User { Id = Guid.NewGuid() };
+ await this.Context.Users.AddAsync(creator);
Post post = new Post
{
Message = POST_MESSAGE,
Id = Guid.NewGuid(),
Creator = creator,
TimeCreated = DateTime.Now,
- FileUrls = new List<string>(),
+ Attachments = new List<PostAttachments> { new PostAttachments { FileUrl = "kur" }, new PostAttachments { FileUrl = "za" }, new PostAttachments { FileUrl = "tva" } },
Comments = new List<Comment>()
};
diff --git a/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs b/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs
index aaa189a..9267053 100644
--- a/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs
+++ b/src/DevHive.Tests/DevHive.Data.Tests/UserRepositoryTests.cs
@@ -218,20 +218,20 @@ namespace DevHive.Data.Tests
// Assert.IsTrue(result, "DoesUserHaveThisFriendAsync does not return true when user has the given friend");
//}
- [Test]
- public async Task DoesUserHaveThisFriendAsync_ReturnsFalse_WhenUserDoesNotHaveTheGivenFriend()
- {
- User dummyUser = this.CreateDummyUser();
- User anotherDummyUser = this.CreateAnotherDummyUser();
-
- this._context.Users.Add(dummyUser);
- this._context.Users.Add(anotherDummyUser);
- await this._context.SaveChangesAsync();
-
- bool result = await this._userRepository.DoesUserHaveThisFriendAsync(dummyUser.Id, anotherDummyUser.Id);
-
- Assert.IsFalse(result, "DoesUserHaveThisFriendAsync does not return false when user des not have the given friend");
- }
+ // [Test]
+ // public async Task DoesUserHaveThisFriendAsync_ReturnsFalse_WhenUserDoesNotHaveTheGivenFriend()
+ // {
+ // User dummyUser = this.CreateDummyUser();
+ // User anotherDummyUser = this.CreateAnotherDummyUser();
+ //
+ // this._context.Users.Add(dummyUser);
+ // this._context.Users.Add(anotherDummyUser);
+ // await this._context.SaveChangesAsync();
+ //
+ // bool result = await this._userRepository.DoesUserHaveThisFriendAsync(dummyUser.Id, anotherDummyUser.Id);
+ //
+ // Assert.IsFalse(result, "DoesUserHaveThisFriendAsync does not return false when user des not have the given friend");
+ // }
#endregion
#region DoesUserHaveThisUsername
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/CommentService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/CommentService.Tests.cs
new file mode 100644
index 0000000..ac022ea
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Services.Tests/CommentService.Tests.cs
@@ -0,0 +1,262 @@
+using System;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Data.Interfaces.Repositories;
+using DevHive.Data.Models;
+using DevHive.Services.Models.Comment;
+using DevHive.Services.Services;
+using Moq;
+using NUnit.Framework;
+
+namespace DevHive.Services.Tests
+{
+ [TestFixture]
+ public class CommentServiceTests
+ {
+ private const string MESSAGE = "Gosho Trapov";
+ private Mock<IUserRepository> UserRepositoryMock { get; set; }
+ private Mock<IPostRepository> PostRepositoryMock { get; set; }
+ private Mock<ICommentRepository> CommentRepositoryMock { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private CommentService CommentService { get; set; }
+
+ #region Setup
+ [SetUp]
+ public void Setup()
+ {
+ this.UserRepositoryMock = new Mock<IUserRepository>();
+ this.PostRepositoryMock = new Mock<IPostRepository>();
+ this.CommentRepositoryMock = new Mock<ICommentRepository>();
+ this.MapperMock = new Mock<IMapper>();
+ this.CommentService = new CommentService(this.UserRepositoryMock.Object, this.PostRepositoryMock.Object, this.CommentRepositoryMock.Object, this.MapperMock.Object);
+ }
+ #endregion
+
+ #region AddComment
+ [Test]
+ public async Task AddComment_ReturnsNonEmptyGuid_WhenEntityIsAddedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ User creator = new User { Id = Guid.NewGuid() };
+ CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
+ {
+ Message = MESSAGE
+ };
+ Comment comment = new Comment
+ {
+ Message = MESSAGE,
+ Id = id,
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.AddAsync(It.IsAny<Comment>())).Returns(Task.FromResult(true));
+ this.CommentRepositoryMock.Setup(p => p.GetCommentByIssuerAndTimeCreatedAsync(It.IsAny<Guid>(), It.IsAny<DateTime>())).Returns(Task.FromResult(comment));
+ this.PostRepositoryMock.Setup(p => p.DoesPostExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(creator));
+ this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<CreateCommentServiceModel>())).Returns(comment);
+
+ Guid result = await this.CommentService.AddComment(createCommentServiceModel);
+
+ Assert.AreEqual(id, result);
+ }
+
+ [Test]
+ public async Task AddComment_ReturnsEmptyGuid_WhenEntityIsNotAddedSuccessfully()
+ {
+ CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
+ {
+ Message = MESSAGE
+ };
+ Comment comment = new Comment
+ {
+ Message = MESSAGE,
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.AddAsync(It.IsAny<Comment>())).Returns(Task.FromResult(false));
+ this.PostRepositoryMock.Setup(p => p.DoesPostExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<CreateCommentServiceModel>())).Returns(comment);
+
+ Guid result = await this.CommentService.AddComment(createCommentServiceModel);
+
+ Assert.IsTrue(result == Guid.Empty);
+ }
+
+ [Test]
+ public void AddComment_ThrowsException_WhenPostDoesNotExist()
+ {
+ const string EXCEPTION_MESSAGE = "Post does not exist!";
+
+ CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
+ {
+ Message = MESSAGE
+ };
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.CommentService.AddComment(createCommentServiceModel), "AddComment does not throw excpeion when the post does not exist");
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+
+ #region GetCommentById
+ [Test]
+ public async Task GetCommentById_ReturnsTheComment_WhenItExists()
+ {
+ Guid creatorId = new Guid();
+ User creator = new User { Id = creatorId };
+ Comment comment = new Comment
+ {
+ Message = MESSAGE,
+ Creator = creator
+ };
+ ReadCommentServiceModel commentServiceModel = new ReadCommentServiceModel
+ {
+ Message = MESSAGE
+ };
+ User user = new User
+ {
+ Id = creatorId,
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
+ this.MapperMock.Setup(p => p.Map<ReadCommentServiceModel>(It.IsAny<Comment>())).Returns(commentServiceModel);
+
+ ReadCommentServiceModel result = await this.CommentService.GetCommentById(new Guid());
+
+ Assert.AreEqual(MESSAGE, result.Message);
+ }
+
+ [Test]
+ public void GetCommentById_ThorwsException_WhenTheUserDoesNotExist()
+ {
+ const string EXCEPTION_MESSAGE = "The user does not exist";
+ Guid creatorId = new Guid();
+ User creator = new User { Id = creatorId };
+ Comment comment = new Comment
+ {
+ Message = MESSAGE,
+ Creator = creator
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.CommentService.GetCommentById(new Guid()), "GetCommentById does not throw exception when the user does not exist");
+
+ Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message);
+ }
+
+ [Test]
+ public void GetCommentById_ThrowsException_WhenCommentDoesNotExist()
+ {
+ string exceptionMessage = "The comment does not exist";
+ Guid creatorId = new Guid();
+ User user = new User
+ {
+ Id = creatorId,
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult<Comment>(null));
+ this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.CommentService.GetCommentById(new Guid()));
+
+ Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+
+ #region UpdateComment
+ [Test]
+ public async Task UpdateComment_ReturnsTheIdOfTheComment_WhenUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ Comment comment = new Comment
+ {
+ Id = id,
+ Message = MESSAGE
+ };
+ UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
+ {
+ CommentId = id,
+ NewMessage = MESSAGE
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.CommentRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Guid>(), It.IsAny<Comment>())).Returns(Task.FromResult(true));
+ this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
+ this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<UpdateCommentServiceModel>())).Returns(comment);
+
+ Guid result = await this.CommentService.UpdateComment(updateCommentServiceModel);
+
+ Assert.AreEqual(updateCommentServiceModel.CommentId, result);
+ }
+
+ [Test]
+ public async Task UpdateComment_ReturnsEmptyId_WhenTheCommentIsNotUpdatedSuccessfully()
+ {
+ Comment comment = new Comment
+ {
+ Message = MESSAGE
+ };
+ UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
+ {
+ CommentId = Guid.NewGuid(),
+ NewMessage = MESSAGE
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.CommentRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Guid>(), It.IsAny<Comment>())).Returns(Task.FromResult(false));
+ this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<UpdateCommentServiceModel>())).Returns(comment);
+
+ Guid result = await this.CommentService.UpdateComment(updateCommentServiceModel);
+
+ Assert.AreEqual(Guid.Empty, result);
+ }
+
+ [Test]
+ public void UpdateComment_ThrowsArgumentException_WhenCommentDoesNotExist()
+ {
+ string exceptionMessage = "Comment does not exist!";
+ UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
+ {
+ };
+
+ this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.CommentService.UpdateComment(updateCommentServiceModel));
+
+ Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+
+ #region DeleteComment
+ [Test]
+ [TestCase(true)]
+ [TestCase(false)]
+ public async Task DeleteComment_ShouldReturnIfDeletionIsSuccessfull_WhenCommentExists(bool shouldPass)
+ {
+ Guid id = new Guid();
+ Comment comment = new Comment();
+
+ this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
+ this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
+ this.CommentRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny<Comment>())).Returns(Task.FromResult(shouldPass));
+
+ bool result = await this.CommentService.DeleteComment(id);
+
+ Assert.AreEqual(shouldPass, result);
+ }
+
+ [Test]
+ public void DeleteComment_ThrowsException_WhenCommentDoesNotExist()
+ {
+ string exceptionMessage = "Comment does not exist!";
+ Guid id = new Guid();
+
+ this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+
+ Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.CommentService.DeleteComment(id));
+
+ Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
+ }
+ #endregion
+ }
+}
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/FeedService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/FeedService.Tests.cs
index 36cb838..e4020c5 100644
--- a/src/DevHive.Tests/DevHive.Services.Tests/FeedService.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Services.Tests/FeedService.Tests.cs
@@ -1,155 +1,155 @@
-using System;
-using System.Collections.Generic;
-using System.Threading.Tasks;
-using AutoMapper;
-using DevHive.Data.Interfaces.Repositories;
-using DevHive.Data.Models;
-using DevHive.Services.Models;
-using DevHive.Services.Models.Post.Post;
-using DevHive.Services.Services;
-using Moq;
-using NUnit.Framework;
-
-namespace DevHive.Services.Tests
-{
- [TestFixture]
- public class FeedServiceTests
- {
- private Mock<IFeedRepository> FeedRepositoryMock { get; set; }
- private Mock<IUserRepository> UserRepositoryMock { get; set; }
- private Mock<IMapper> MapperMock { get; set; }
- private FeedService FeedService { get; set; }
-
- #region SetUps
- [SetUp]
- public void Setup()
- {
- this.FeedRepositoryMock = new Mock<IFeedRepository>();
- this.UserRepositoryMock = new Mock<IUserRepository>();
- this.MapperMock = new Mock<IMapper>();
- this.FeedService = new FeedService(this.FeedRepositoryMock.Object, this.UserRepositoryMock.Object, this.MapperMock.Object);
- }
- #endregion
-
- #region GetPage
- [Test]
- public async Task GetPage_ReturnsReadPageServiceModel_WhenSuitablePostsExist()
- {
- GetPageServiceModel getPageServiceModel = new GetPageServiceModel
- {
- UserId = Guid.NewGuid()
- };
-
- User dummyUser = CreateDummyUser();
- User anotherDummyUser = CreateAnotherDummyUser();
- HashSet<User> friends = new HashSet<User>();
- friends.Add(anotherDummyUser);
- dummyUser.Friends = friends;
-
- List<Post> posts = new List<Post>
- {
- new Post{ Message = "Message"}
- };
-
- ReadPostServiceModel readPostServiceModel = new ReadPostServiceModel
- {
- PostId = Guid.NewGuid(),
- Message = "Message"
- };
- List<ReadPostServiceModel> readPostServiceModels = new List<ReadPostServiceModel>();
- readPostServiceModels.Add(readPostServiceModel);
- ReadPageServiceModel readPageServiceModel = new ReadPageServiceModel
- {
- Posts = readPostServiceModels
- };
-
- this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(dummyUser));
- this.FeedRepositoryMock.Setup(p => p.GetFriendsPosts(It.IsAny<List<User>>(), It.IsAny<DateTime>(), It.IsAny<int>(), It.IsAny<int>())).Returns(Task.FromResult(posts));
- this.MapperMock.Setup(p => p.Map<ReadPostServiceModel>(It.IsAny<Post>())).Returns(readPostServiceModel);
-
- ReadPageServiceModel result = await this.FeedService.GetPage(getPageServiceModel);
-
- Assert.GreaterOrEqual(1, result.Posts.Count, "GetPage does not correctly return the posts");
- }
-
- [Test]
- public void GetPage_ThrowsException_WhenNoSuitablePostsExist()
- {
- const string EXCEPTION_MESSAGE = "No friends of user have posted anything yet!";
- GetPageServiceModel getPageServiceModel = new GetPageServiceModel
- {
- UserId = Guid.NewGuid()
- };
-
- User dummyUser = CreateDummyUser();
- User anotherDummyUser = CreateAnotherDummyUser();
- HashSet<User> friends = new HashSet<User>();
- friends.Add(anotherDummyUser);
- dummyUser.Friends = friends;
-
- ReadPostServiceModel readPostServiceModel = new ReadPostServiceModel
- {
- PostId = Guid.NewGuid(),
- Message = "Message"
- };
- List<ReadPostServiceModel> readPostServiceModels = new List<ReadPostServiceModel>();
- readPostServiceModels.Add(readPostServiceModel);
- ReadPageServiceModel readPageServiceModel = new ReadPageServiceModel
- {
- Posts = readPostServiceModels
- };
-
- this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(dummyUser));
- this.FeedRepositoryMock.Setup(p => p.GetFriendsPosts(It.IsAny<List<User>>(), It.IsAny<DateTime>(), It.IsAny<int>(), It.IsAny<int>())).Returns(Task.FromResult(new List<Post>()));
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.FeedService.GetPage(getPageServiceModel));
-
- Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Wrong exception message");
- }
-
- [Test]
- public void GetPage_ThrowsException_WhenUserHasNoFriendsToGetPostsFrom()
- {
- const string EXCEPTION_MESSAGE = "User has no friends to get feed from!";
- GetPageServiceModel getPageServiceModel = new GetPageServiceModel
- {
- UserId = Guid.NewGuid()
- };
-
- User dummyUser = CreateDummyUser();
-
- this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(dummyUser));
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.FeedService.GetPage(getPageServiceModel));
-
- Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Wrong exception message");
- }
- #endregion
-
- #region HelperMethods
- private User CreateDummyUser()
- {
- return new()
- {
- Id = Guid.NewGuid(),
- UserName = "dummyUser",
- FirstName = "Spas",
- LastName = "Spasov",
- Email = "abv@abv.bg",
- };
- }
-
- private User CreateAnotherDummyUser()
- {
- return new()
- {
- Id = Guid.NewGuid(),
- UserName = "anotherDummyUser",
- FirstName = "Alex",
- LastName = "Spiridonov",
- Email = "a_spiridonov@abv.bg",
- };
- }
- #endregion
- }
-}
+//using System;
+//using System.Collections.Generic;
+//using System.Threading.Tasks;
+//using AutoMapper;
+//using DevHive.Data.Interfaces.Repositories;
+//using DevHive.Data.Models;
+//using DevHive.Services.Models;
+//using DevHive.Services.Models.Post;
+//using DevHive.Services.Services;
+//using Moq;
+//using NUnit.Framework;
+
+//namespace DevHive.Services.Tests
+//{
+// [TestFixture]
+// public class FeedServiceTests
+// {
+// private Mock<IFeedRepository> FeedRepositoryMock { get; set; }
+// private Mock<IUserRepository> UserRepositoryMock { get; set; }
+// private Mock<IMapper> MapperMock { get; set; }
+// private FeedService FeedService { get; set; }
+
+// #region SetUps
+// [SetUp]
+// public void Setup()
+// {
+// this.FeedRepositoryMock = new Mock<IFeedRepository>();
+// this.UserRepositoryMock = new Mock<IUserRepository>();
+// this.MapperMock = new Mock<IMapper>();
+// this.FeedService = new FeedService(this.FeedRepositoryMock.Object, this.UserRepositoryMock.Object, this.MapperMock.Object);
+// }
+// #endregion
+
+// #region GetPage
+// [Test]
+// public async Task GetPage_ReturnsReadPageServiceModel_WhenSuitablePostsExist()
+// {
+// GetPageServiceModel getPageServiceModel = new GetPageServiceModel
+// {
+// UserId = Guid.NewGuid()
+// };
+
+// User dummyUser = CreateDummyUser();
+// User anotherDummyUser = CreateAnotherDummyUser();
+// HashSet<User> friends = new HashSet<User>();
+// friends.Add(anotherDummyUser);
+// dummyUser.Friends = friends;
+
+// List<Post> posts = new List<Post>
+// {
+// new Post{ Message = "Message"}
+// };
+
+// ReadPostServiceModel readPostServiceModel = new ReadPostServiceModel
+// {
+// PostId = Guid.NewGuid(),
+// Message = "Message"
+// };
+// List<ReadPostServiceModel> readPostServiceModels = new List<ReadPostServiceModel>();
+// readPostServiceModels.Add(readPostServiceModel);
+// ReadPageServiceModel readPageServiceModel = new ReadPageServiceModel
+// {
+// Posts = readPostServiceModels
+// };
+
+// this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(dummyUser));
+// this.FeedRepositoryMock.Setup(p => p.GetFriendsPosts(It.IsAny<List<User>>(), It.IsAny<DateTime>(), It.IsAny<int>(), It.IsAny<int>())).Returns(Task.FromResult(posts));
+// this.MapperMock.Setup(p => p.Map<ReadPostServiceModel>(It.IsAny<Post>())).Returns(readPostServiceModel);
+
+// ReadPageServiceModel result = await this.FeedService.GetPage(getPageServiceModel);
+
+// Assert.GreaterOrEqual(1, result.Posts.Count, "GetPage does not correctly return the posts");
+// }
+
+// [Test]
+// public void GetPage_ThrowsException_WhenNoSuitablePostsExist()
+// {
+// const string EXCEPTION_MESSAGE = "No friends of user have posted anything yet!";
+// GetPageServiceModel getPageServiceModel = new GetPageServiceModel
+// {
+// UserId = Guid.NewGuid()
+// };
+
+// User dummyUser = CreateDummyUser();
+// User anotherDummyUser = CreateAnotherDummyUser();
+// HashSet<User> friends = new HashSet<User>();
+// friends.Add(anotherDummyUser);
+// dummyUser.Friends = friends;
+
+// ReadPostServiceModel readPostServiceModel = new ReadPostServiceModel
+// {
+// PostId = Guid.NewGuid(),
+// Message = "Message"
+// };
+// List<ReadPostServiceModel> readPostServiceModels = new List<ReadPostServiceModel>();
+// readPostServiceModels.Add(readPostServiceModel);
+// ReadPageServiceModel readPageServiceModel = new ReadPageServiceModel
+// {
+// Posts = readPostServiceModels
+// };
+
+// this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(dummyUser));
+// this.FeedRepositoryMock.Setup(p => p.GetFriendsPosts(It.IsAny<List<User>>(), It.IsAny<DateTime>(), It.IsAny<int>(), It.IsAny<int>())).Returns(Task.FromResult(new List<Post>()));
+
+// Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.FeedService.GetPage(getPageServiceModel));
+
+// Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Wrong exception message");
+// }
+
+// [Test]
+// public void GetPage_ThrowsException_WhenUserHasNoFriendsToGetPostsFrom()
+// {
+// const string EXCEPTION_MESSAGE = "User has no friends to get feed from!";
+// GetPageServiceModel getPageServiceModel = new GetPageServiceModel
+// {
+// UserId = Guid.NewGuid()
+// };
+
+// User dummyUser = CreateDummyUser();
+
+// this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(dummyUser));
+
+// Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.FeedService.GetPage(getPageServiceModel));
+
+// Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Wrong exception message");
+// }
+// #endregion
+
+// #region HelperMethods
+// private User CreateDummyUser()
+// {
+// return new()
+// {
+// Id = Guid.NewGuid(),
+// UserName = "dummyUser",
+// FirstName = "Spas",
+// LastName = "Spasov",
+// Email = "abv@abv.bg",
+// };
+// }
+
+// private User CreateAnotherDummyUser()
+// {
+// return new()
+// {
+// Id = Guid.NewGuid(),
+// UserName = "anotherDummyUser",
+// FirstName = "Alex",
+// LastName = "Spiridonov",
+// Email = "a_spiridonov@abv.bg",
+// };
+// }
+// #endregion
+// }
+//}
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/PostService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/PostService.Tests.cs
index b47c8bc..900608c 100644
--- a/src/DevHive.Tests/DevHive.Services.Tests/PostService.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Services.Tests/PostService.Tests.cs
@@ -1,11 +1,13 @@
using System;
+using System.Collections.Generic;
using System.Threading.Tasks;
using AutoMapper;
using DevHive.Data.Interfaces.Repositories;
using DevHive.Data.Models;
-using DevHive.Services.Models.Post.Comment;
-using DevHive.Services.Models.Post.Post;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Post;
using DevHive.Services.Services;
+using Microsoft.AspNetCore.Http;
using Moq;
using NUnit.Framework;
@@ -15,9 +17,10 @@ namespace DevHive.Services.Tests
public class PostServiceTests
{
private const string MESSAGE = "Gosho Trapov";
+ private Mock<ICloudService> CloudServiceMock { get; set; }
private Mock<IPostRepository> PostRepositoryMock { get; set; }
- private Mock<IUserRepository> UserRepositoryMock { get; set; }
private Mock<ICommentRepository> CommentRepositoryMock { get; set; }
+ private Mock<IUserRepository> UserRepositoryMock { get; set; }
private Mock<IMapper> MapperMock { get; set; }
private PostService PostService { get; set; }
@@ -26,247 +29,14 @@ namespace DevHive.Services.Tests
public void Setup()
{
this.PostRepositoryMock = new Mock<IPostRepository>();
+ this.CloudServiceMock = new Mock<ICloudService>();
this.UserRepositoryMock = new Mock<IUserRepository>();
this.CommentRepositoryMock = new Mock<ICommentRepository>();
this.MapperMock = new Mock<IMapper>();
- this.PostService = new PostService(this.UserRepositoryMock.Object, this.PostRepositoryMock.Object, this.CommentRepositoryMock.Object, this.MapperMock.Object);
+ this.PostService = new PostService(this.CloudServiceMock.Object, this.UserRepositoryMock.Object, this.PostRepositoryMock.Object, this.CommentRepositoryMock.Object, this.MapperMock.Object);
}
#endregion
- #region Comment
- #region AddComment
- [Test]
- public async Task AddComment_ReturnsNonEmptyGuid_WhenEntityIsAddedSuccessfully()
- {
- Guid id = Guid.NewGuid();
- User creator = new User { Id = Guid.NewGuid() };
- CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
- {
- Message = MESSAGE
- };
- Comment comment = new Comment
- {
- Message = MESSAGE,
- Id = id,
- };
-
- this.CommentRepositoryMock.Setup(p => p.AddAsync(It.IsAny<Comment>())).Returns(Task.FromResult(true));
- this.CommentRepositoryMock.Setup(p => p.GetCommentByIssuerAndTimeCreatedAsync(It.IsAny<Guid>(), It.IsAny<DateTime>())).Returns(Task.FromResult(comment));
- this.PostRepositoryMock.Setup(p => p.DoesPostExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
- this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(creator));
- this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<CreateCommentServiceModel>())).Returns(comment);
-
- Guid result = await this.PostService.AddComment(createCommentServiceModel);
-
- Assert.AreEqual(id, result);
- }
-
- [Test]
- public async Task AddComment_ReturnsEmptyGuid_WhenEntityIsNotAddedSuccessfully()
- {
- CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
- {
- Message = MESSAGE
- };
- Comment comment = new Comment
- {
- Message = MESSAGE,
- };
-
- this.CommentRepositoryMock.Setup(p => p.AddAsync(It.IsAny<Comment>())).Returns(Task.FromResult(false));
- this.PostRepositoryMock.Setup(p => p.DoesPostExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
- this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<CreateCommentServiceModel>())).Returns(comment);
-
- Guid result = await this.PostService.AddComment(createCommentServiceModel);
-
- Assert.IsTrue(result == Guid.Empty);
- }
-
- [Test]
- public void AddComment_ThrowsException_WhenPostDoesNotExist()
- {
- const string EXCEPTION_MESSAGE = "Post does not exist!";
-
- CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
- {
- Message = MESSAGE
- };
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.PostService.AddComment(createCommentServiceModel), "AddComment does not throw excpeion when the post does not exist");
-
- Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message, "Incorecct exception message");
- }
- #endregion
-
- #region GetCommentById
- [Test]
- public async Task GetCommentById_ReturnsTheComment_WhenItExists()
- {
- Guid creatorId = new Guid();
- User creator = new User { Id = creatorId };
- Comment comment = new Comment
- {
- Message = MESSAGE,
- Creator = creator
- };
- ReadCommentServiceModel commentServiceModel = new ReadCommentServiceModel
- {
- Message = MESSAGE
- };
- User user = new User
- {
- Id = creatorId,
- };
-
- this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
- this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
- this.MapperMock.Setup(p => p.Map<ReadCommentServiceModel>(It.IsAny<Comment>())).Returns(commentServiceModel);
-
- ReadCommentServiceModel result = await this.PostService.GetCommentById(new Guid());
-
- Assert.AreEqual(MESSAGE, result.Message);
- }
-
- [Test]
- public void GetCommentById_ThorwsException_WhenTheUserDoesNotExist()
- {
- const string EXCEPTION_MESSAGE = "The user does not exist";
- Guid creatorId = new Guid();
- User creator = new User { Id = creatorId };
- Comment comment = new Comment
- {
- Message = MESSAGE,
- Creator = creator
- };
-
- this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.PostService.GetCommentById(new Guid()), "GetCommentById does not throw exception when the user does not exist");
-
- Assert.AreEqual(EXCEPTION_MESSAGE, ex.Message);
- }
-
- [Test]
- public void GetCommentById_ThrowsException_WhenCommentDoesNotExist()
- {
- string exceptionMessage = "The comment does not exist";
- Guid creatorId = new Guid();
- User user = new User
- {
- Id = creatorId,
- };
-
- this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult<Comment>(null));
- this.UserRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(user));
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.PostService.GetCommentById(new Guid()));
-
- Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
- }
- #endregion
-
- #region UpdateComment
- [Test]
- public async Task UpdateComment_ReturnsTheIdOfTheComment_WhenUpdatedSuccessfully()
- {
- Guid id = Guid.NewGuid();
- Comment comment = new Comment
- {
- Id = id,
- Message = MESSAGE
- };
- UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
- {
- CommentId = id,
- NewMessage = MESSAGE
- };
-
- this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
- this.CommentRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Guid>(), It.IsAny<Comment>())).Returns(Task.FromResult(true));
- this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
- this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<UpdateCommentServiceModel>())).Returns(comment);
-
- Guid result = await this.PostService.UpdateComment(updateCommentServiceModel);
-
- Assert.AreEqual(updateCommentServiceModel.CommentId, result);
- }
-
- [Test]
- public async Task UpdateComment_ReturnsEmptyId_WhenTheCommentIsNotUpdatedSuccessfully()
- {
- Comment comment = new Comment
- {
- Message = MESSAGE
- };
- UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
- {
- CommentId = Guid.NewGuid(),
- NewMessage = MESSAGE
- };
-
- this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
- this.CommentRepositoryMock.Setup(p => p.EditAsync(It.IsAny<Guid>(), It.IsAny<Comment>())).Returns(Task.FromResult(false));
- this.MapperMock.Setup(p => p.Map<Comment>(It.IsAny<UpdateCommentServiceModel>())).Returns(comment);
-
- Guid result = await this.PostService.UpdateComment(updateCommentServiceModel);
-
- Assert.AreEqual(Guid.Empty, result);
- }
-
- [Test]
- public void UpdateComment_ThrowsArgumentException_WhenCommentDoesNotExist()
- {
- string exceptionMessage = "Comment does not exist!";
- UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
- {
- };
-
- this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(false));
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.PostService.UpdateComment(updateCommentServiceModel));
-
- Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
- }
- #endregion
-
- #region DeleteComment
- [Test]
- [TestCase(true)]
- [TestCase(false)]
- public async Task DeleteComment_ShouldReturnIfDeletionIsSuccessfull_WhenCommentExists(bool shouldPass)
- {
- Guid id = new Guid();
- Comment comment = new Comment();
-
- this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
- this.CommentRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(comment));
- this.CommentRepositoryMock.Setup(p => p.DeleteAsync(It.IsAny<Comment>())).Returns(Task.FromResult(shouldPass));
-
- bool result = await this.PostService.DeleteComment(id);
-
- Assert.AreEqual(shouldPass, result);
- }
-
- [Test]
- public void DeleteComment_ThrowsException_WhenCommentDoesNotExist()
- {
- string exceptionMessage = "Comment does not exist!";
- Guid id = new Guid();
-
- this.CommentRepositoryMock.Setup(p => p.DoesCommentExist(It.IsAny<Guid>())).Returns(Task.FromResult(false));
-
- Exception ex = Assert.ThrowsAsync<ArgumentException>(() => this.PostService.DeleteComment(id));
-
- Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
- }
- #endregion
-
- #region ValidateJwtForComment
- //TO DO: Implement
- #endregion
- #endregion
-
- #region Posts
#region CreatePost
[Test]
public async Task CreatePost_ReturnsIdOfThePost_WhenItIsSuccessfullyCreated()
@@ -275,11 +45,12 @@ namespace DevHive.Services.Tests
User creator = new User { Id = Guid.NewGuid() };
CreatePostServiceModel createPostServiceModel = new CreatePostServiceModel
{
+ Files = new List<IFormFile>()
};
Post post = new Post
{
Message = MESSAGE,
- Id = postId
+ Id = postId,
};
this.PostRepositoryMock.Setup(p => p.AddAsync(It.IsAny<Post>())).Returns(Task.FromResult(true));
@@ -298,6 +69,7 @@ namespace DevHive.Services.Tests
{
CreatePostServiceModel createPostServiceModel = new CreatePostServiceModel
{
+ Files = new List<IFormFile>()
};
Post post = new Post
{
@@ -411,7 +183,8 @@ namespace DevHive.Services.Tests
UpdatePostServiceModel updatePostServiceModel = new UpdatePostServiceModel
{
PostId = id,
- NewMessage = MESSAGE
+ NewMessage = MESSAGE,
+ Files = new List<IFormFile>()
};
this.PostRepositoryMock.Setup(p => p.DoesPostExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
@@ -434,7 +207,8 @@ namespace DevHive.Services.Tests
UpdatePostServiceModel updatePostServiceModel = new UpdatePostServiceModel
{
PostId = Guid.NewGuid(),
- NewMessage = MESSAGE
+ NewMessage = MESSAGE,
+ Files = new List<IFormFile>()
};
this.PostRepositoryMock.Setup(p => p.DoesPostExist(It.IsAny<Guid>())).Returns(Task.FromResult(true));
@@ -493,10 +267,5 @@ namespace DevHive.Services.Tests
Assert.AreEqual(exceptionMessage, ex.Message, "Incorecct exception message");
}
#endregion
-
- #region ValidateJwtForPost
- //TO DO: Implement
- #endregion
- #endregion
}
}
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs
index 7573632..e671adb 100644
--- a/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Services.Tests/TechnologyServices.Tests.cs
@@ -110,15 +110,15 @@ namespace DevHive.Services.Tests
{
Name = name
};
- CreateTechnologyServiceModel createTechnologyServiceModel = new()
+ ReadTechnologyServiceModel readTechnologyServiceModel = new()
{
Name = name
};
this.TechnologyRepositoryMock.Setup(p => p.GetByIdAsync(It.IsAny<Guid>())).Returns(Task.FromResult(technology));
- this.MapperMock.Setup(p => p.Map<CreateTechnologyServiceModel>(It.IsAny<Technology>())).Returns(createTechnologyServiceModel);
+ this.MapperMock.Setup(p => p.Map<ReadTechnologyServiceModel>(It.IsAny<Technology>())).Returns(readTechnologyServiceModel);
- CreateTechnologyServiceModel result = await this.TechnologyService.GetTechnologyById(id);
+ ReadTechnologyServiceModel result = await this.TechnologyService.GetTechnologyById(id);
Assert.AreEqual(name, result.Name);
}
diff --git a/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs b/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
index 1abc0f1..61eb449 100644
--- a/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Services.Tests/UserService.Tests.cs
@@ -9,6 +9,7 @@ using DevHive.Common.Models.Identity;
using DevHive.Common.Models.Misc;
using DevHive.Data.Interfaces.Repositories;
using DevHive.Data.Models;
+using DevHive.Services.Interfaces;
using DevHive.Services.Models.Identity.User;
using DevHive.Services.Options;
using DevHive.Services.Services;
@@ -21,6 +22,7 @@ namespace DevHive.Services.Tests
[TestFixture]
public class UserServiceTests
{
+ private Mock<ICloudService> CloudServiceMock { get; set; }
private Mock<IUserRepository> UserRepositoryMock { get; set; }
private Mock<IRoleRepository> RoleRepositoryMock { get; set; }
private Mock<ILanguageRepository> LanguageRepositoryMock { get; set; }
@@ -35,11 +37,12 @@ namespace DevHive.Services.Tests
{
this.UserRepositoryMock = new Mock<IUserRepository>();
this.RoleRepositoryMock = new Mock<IRoleRepository>();
+ this.CloudServiceMock = new Mock<ICloudService>();
this.LanguageRepositoryMock = new Mock<ILanguageRepository>();
this.TechnologyRepositoryMock = new Mock<ITechnologyRepository>();
this.JWTOptions = new JWTOptions("gXfQlU6qpDleFWyimscjYcT3tgFsQg3yoFjcvSLxG56n1Vu2yptdIUq254wlJWjm");
this.MapperMock = new Mock<IMapper>();
- this.UserService = new UserService(this.UserRepositoryMock.Object, this.LanguageRepositoryMock.Object, this.RoleRepositoryMock.Object, this.TechnologyRepositoryMock.Object, this.MapperMock.Object, JWTOptions);
+ this.UserService = new UserService(this.UserRepositoryMock.Object, this.LanguageRepositoryMock.Object, this.RoleRepositoryMock.Object, this.TechnologyRepositoryMock.Object, this.MapperMock.Object, JWTOptions, this.CloudServiceMock.Object);
}
#endregion
@@ -48,6 +51,7 @@ namespace DevHive.Services.Tests
public async Task LoginUser_ReturnsTokenModel_WhenLoggingUserIn()
{
string somePassword = "GoshoTrapovImaGolemChep";
+ const string name = "GoshoTrapov";
string hashedPassword = PasswordModifications.GeneratePasswordHash(somePassword);
LoginServiceModel loginServiceModel = new LoginServiceModel
{
@@ -56,13 +60,14 @@ namespace DevHive.Services.Tests
User user = new User
{
Id = Guid.NewGuid(),
- PasswordHash = hashedPassword
+ PasswordHash = hashedPassword,
+ UserName = name
};
this.UserRepositoryMock.Setup(p => p.DoesUsernameExistAsync(It.IsAny<string>())).Returns(Task.FromResult(true));
this.UserRepositoryMock.Setup(p => p.GetByUsernameAsync(It.IsAny<string>())).Returns(Task.FromResult(user));
- string JWTSecurityToken = this.WriteJWTSecurityToken(user.Id, user.Roles);
+ string JWTSecurityToken = this.WriteJWTSecurityToken(user.Id, user.UserName, user.Roles);
TokenModel tokenModel = await this.UserService.LoginUser(loginServiceModel);
@@ -113,13 +118,15 @@ namespace DevHive.Services.Tests
public async Task RegisterUser_ReturnsTokenModel_WhenUserIsSuccessfull()
{
string somePassword = "GoshoTrapovImaGolemChep";
+ const string name = "GoshoTrapov";
RegisterServiceModel registerServiceModel = new RegisterServiceModel
{
Password = somePassword
};
User user = new User
{
- Id = Guid.NewGuid()
+ Id = Guid.NewGuid(),
+ UserName = name
};
Role role = new Role { Name = Role.DefaultRole };
HashSet<Role> roles = new HashSet<Role> { role };
@@ -131,7 +138,7 @@ namespace DevHive.Services.Tests
this.MapperMock.Setup(p => p.Map<User>(It.IsAny<RegisterServiceModel>())).Returns(user);
this.UserRepositoryMock.Setup(p => p.AddAsync(It.IsAny<User>())).Verifiable();
- string JWTSecurityToken = this.WriteJWTSecurityToken(user.Id, roles);
+ string JWTSecurityToken = this.WriteJWTSecurityToken(user.Id, user.UserName, roles);
TokenModel tokenModel = await this.UserService.RegisterUser(registerServiceModel);
@@ -353,13 +360,13 @@ namespace DevHive.Services.Tests
#endregion
#region HelperMethods
- private string WriteJWTSecurityToken(Guid userId, HashSet<Role> roles)
+ private string WriteJWTSecurityToken(Guid userId, string username, HashSet<Role> roles)
{
byte[] signingKey = Encoding.ASCII.GetBytes(this.JWTOptions.Secret);
-
HashSet<Claim> claims = new()
{
new Claim("ID", $"{userId}"),
+ new Claim("Username", username),
};
foreach (var role in roles)
diff --git a/src/DevHive.Tests/DevHive.Web.Tests/CommentController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/CommentController.Tests.cs
new file mode 100644
index 0000000..3a03f1a
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Web.Tests/CommentController.Tests.cs
@@ -0,0 +1,256 @@
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using AutoMapper;
+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 { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private CommentController CommentController { get; set; }
+
+ #region Setup
+ [SetUp]
+ public void SetUp()
+ {
+ this.CommentServiceMock = new Mock<ICommentService>();
+ this.MapperMock = new Mock<IMapper>();
+ this.CommentController = new CommentController(this.CommentServiceMock.Object, this.MapperMock.Object);
+ }
+ #endregion
+
+ #region Add
+ [Test]
+ public void AddComment_ReturnsOkObjectResult_WhenCommentIsSuccessfullyCreated()
+ {
+ Guid id = Guid.NewGuid();
+ CreateCommentWebModel createCommentWebModel = new CreateCommentWebModel
+ {
+ Message = MESSAGE
+ };
+ CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
+ {
+ Message = MESSAGE
+ };
+
+ this.MapperMock.Setup(p => p.Map<CreateCommentServiceModel>(It.IsAny<CreateCommentWebModel>())).Returns(createCommentServiceModel);
+ this.CommentServiceMock.Setup(p => p.AddComment(It.IsAny<CreateCommentServiceModel>())).Returns(Task.FromResult(id));
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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()
+ {
+ Guid id = Guid.NewGuid();
+ CreateCommentWebModel createCommentWebModel = new CreateCommentWebModel
+ {
+ Message = MESSAGE
+ };
+ CreateCommentServiceModel createCommentServiceModel = new CreateCommentServiceModel
+ {
+ 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>())).Returns(Task.FromResult(Guid.Empty));
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ IActionResult result = this.CommentController.AddComment(Guid.NewGuid(), createCommentWebModel, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequsetObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequsetObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+
+ [Test]
+ public void AddComment_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ Guid id = Guid.NewGuid();
+ CreateCommentWebModel createCommentWebModel = new CreateCommentWebModel
+ {
+ Message = MESSAGE
+ };
+
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 ReadCommentServiceModel
+ {
+ Message = MESSAGE
+ };
+ ReadCommentWebModel readCommentWebModel = new ReadCommentWebModel
+ {
+ Message = MESSAGE
+ };
+
+ this.CommentServiceMock.Setup(p => p.GetCommentById(It.IsAny<Guid>())).Returns(Task.FromResult(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 Models.Comment.ReadCommentWebModel;
+
+ Assert.AreEqual(MESSAGE, resultModel.Message);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenCommentIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateCommentWebModel updateCommentWebModel = new UpdateCommentWebModel
+ {
+ NewMessage = MESSAGE
+ };
+ UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
+ {
+ NewMessage = MESSAGE
+ };
+
+ this.CommentServiceMock.Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>())).Returns(Task.FromResult(id));
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 UpdateCommentWebModel
+ {
+ NewMessage = MESSAGE
+ };
+ UpdateCommentServiceModel updateCommentServiceModel = new UpdateCommentServiceModel
+ {
+ NewMessage = MESSAGE
+ };
+
+ this.CommentServiceMock.Setup(p => p.UpdateComment(It.IsAny<UpdateCommentServiceModel>())).Returns(Task.FromResult(Guid.Empty));
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 UpdateCommentWebModel
+ {
+ NewMessage = MESSAGE
+ };
+
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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>())).Returns(Task.FromResult(true));
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ IActionResult result = this.CommentController.DeleteComment(id, null).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void DeletComment_ReturnsBadRequestObjectResult_WhenCommentIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete Comment";
+ Guid id = Guid.NewGuid();
+
+ this.CommentServiceMock.Setup(p => p.DeleteComment(It.IsAny<Guid>())).Returns(Task.FromResult(false));
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 DeletComment_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ this.CommentServiceMock.Setup(p => p.ValidateJwtForComment(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false));
+
+ IActionResult result = this.CommentController.DeleteComment(Guid.Empty, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+ }
+}
diff --git a/src/DevHive.Tests/DevHive.Web.Tests/FeedController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/FeedController.Tests.cs
new file mode 100644
index 0000000..01f67e5
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Web.Tests/FeedController.Tests.cs
@@ -0,0 +1,98 @@
+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 { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private FeedController FeedController { get; set; }
+
+ #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 GetPageWebModel { };
+ GetPageServiceModel getPageServiceModel = new GetPageServiceModel { };
+ ReadPageServiceModel readPageServiceModel = new ReadPageServiceModel { };
+ ReadPageWebModel readPageWebModel = new ReadPageWebModel
+ {
+ Posts = new List<ReadPostWebModel>
+ {
+ new ReadPostWebModel(),
+ new ReadPostWebModel(),
+ new ReadPostWebModel()
+ }
+ };
+
+ this.FeedServiceMock.Setup(p => p.GetPage(It.IsAny<GetPageServiceModel>())).Returns(Task.FromResult(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 GetPageWebModel { };
+ GetPageServiceModel getPageServiceModel = new GetPageServiceModel { };
+ ReadPageServiceModel readPageServiceModel = new ReadPageServiceModel { };
+ ReadPageWebModel readPageWebModel = new ReadPageWebModel
+ {
+ Posts = new List<ReadPostWebModel>
+ {
+ new ReadPostWebModel(),
+ new ReadPostWebModel(),
+ new ReadPostWebModel()
+ }
+ };
+
+ this.FeedServiceMock.Setup(p => p.GetUserPage(It.IsAny<GetPageServiceModel>())).Returns(Task.FromResult(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/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs
new file mode 100644
index 0000000..3a4e45e
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Web.Tests/PostController.Tests.cs
@@ -0,0 +1,248 @@
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using AutoMapper;
+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 { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private PostController PostController { get; set; }
+
+ [SetUp]
+ public void SetUp()
+ {
+ this.PostServiceMock = new Mock<IPostService>();
+ this.MapperMock = new Mock<IMapper>();
+ this.PostController = new PostController(this.PostServiceMock.Object, this.MapperMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void CreatePost_ReturnsOkObjectResult_WhenPostIsSuccessfullyCreated()
+ {
+ CreatePostWebModel createPostWebModel = new CreatePostWebModel
+ {
+ Message = MESSAGE
+ };
+ CreatePostServiceModel createPostServiceModel = new CreatePostServiceModel
+ {
+ 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>())).Returns(Task.FromResult(id));
+ this.PostServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 CreatePostWebModel
+ {
+ Message = MESSAGE
+ };
+ CreatePostServiceModel createTechnologyServiceModel = new CreatePostServiceModel
+ {
+ 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>())).Returns(Task.FromResult(id));
+ this.PostServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+
+ IActionResult result = this.PostController.Create(Guid.Empty, createTechnologyWebModel, null).Result;
+
+ Assert.IsInstanceOf<BadRequestObjectResult>(result);
+
+ BadRequestObjectResult badRequsetObjectResult = result as BadRequestObjectResult;
+ string resultMessage = badRequsetObjectResult.Value.ToString();
+
+ Assert.AreEqual(errorMessage, resultMessage);
+ }
+
+ [Test]
+ public void CreatePost_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ Guid id = Guid.NewGuid();
+ CreatePostWebModel createPostWebModel = new CreatePostWebModel
+ {
+ Message = MESSAGE
+ };
+
+ this.PostServiceMock.Setup(p => p.ValidateJwtForCreating(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 ReadPostServiceModel
+ {
+ Message = MESSAGE
+ };
+ ReadPostWebModel readPostWebModel = new ReadPostWebModel
+ {
+ Message = MESSAGE
+ };
+
+ this.PostServiceMock.Setup(p => p.GetPostById(It.IsAny<Guid>())).Returns(Task.FromResult(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 UpdatePostWebModel
+ {
+ NewMessage = MESSAGE
+ };
+ UpdatePostServiceModel updatePostServiceModel = new UpdatePostServiceModel
+ {
+ NewMessage = MESSAGE
+ };
+
+ this.PostServiceMock.Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>())).Returns(Task.FromResult(id));
+ this.MapperMock.Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>())).Returns(updatePostServiceModel);
+ this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 UpdatePostWebModel
+ {
+ NewMessage = MESSAGE
+ };
+ UpdatePostServiceModel updatePostServiceModel = new UpdatePostServiceModel
+ {
+ NewMessage = MESSAGE
+ };
+
+ this.PostServiceMock.Setup(p => p.UpdatePost(It.IsAny<UpdatePostServiceModel>())).Returns(Task.FromResult(Guid.Empty));
+ this.MapperMock.Setup(p => p.Map<UpdatePostServiceModel>(It.IsAny<UpdatePostWebModel>())).Returns(updatePostServiceModel);
+ this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 UpdatePostWebModel
+ {
+ NewMessage = MESSAGE
+ };
+
+ this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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>())).Returns(Task.FromResult(true));
+ this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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>())).Returns(Task.FromResult(false));
+ this.PostServiceMock.Setup(p => p.ValidateJwtForPost(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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>())).Returns(Task.FromResult(false));
+
+ IActionResult result = this.PostController.Delete(Guid.Empty, null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+ #endregion
+ }
+}
diff --git a/src/DevHive.Tests/DevHive.Web.Tests/RoleController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/RoleController.Tests.cs
new file mode 100644
index 0000000..067b4e4
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Web.Tests/RoleController.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.Identity.Role;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Identity.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 { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private RoleController RoleController { get; set; }
+
+ [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 CreateRoleWebModel
+ {
+ Name = NAME
+ };
+ CreateRoleServiceModel createRoleServiceModel = new CreateRoleServiceModel
+ {
+ 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>())).Returns(Task.FromResult(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 CreateRoleWebModel
+ {
+ Name = NAME
+ };
+ CreateRoleServiceModel createTechnologyServiceModel = new CreateRoleServiceModel
+ {
+ 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>())).Returns(Task.FromResult(id));
+
+ IActionResult result = this.RoleController.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_ReturnsTheRole_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+
+ RoleServiceModel roleServiceModel = new RoleServiceModel
+ {
+ Name = NAME
+ };
+ RoleWebModel roleWebModel = new RoleWebModel
+ {
+ Name = NAME
+ };
+
+ this.RoleServiceMock.Setup(p => p.GetRoleById(It.IsAny<Guid>())).Returns(Task.FromResult(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 Models.Identity.Role.RoleWebModel;
+
+ Assert.AreEqual(NAME, resultModel.Name);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenRoleIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateRoleWebModel updateRoleWebModel = new UpdateRoleWebModel
+ {
+ Name = NAME
+ };
+ UpdateRoleServiceModel updateRoleServiceModel = new UpdateRoleServiceModel
+ {
+ Name = NAME
+ };
+
+ this.RoleServiceMock.Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>())).Returns(Task.FromResult(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 UpdateRoleWebModel
+ {
+ Name = NAME
+ };
+ UpdateRoleServiceModel updateRoleServiceModel = new UpdateRoleServiceModel
+ {
+ Name = NAME
+ };
+
+ this.RoleServiceMock.Setup(p => p.UpdateRole(It.IsAny<UpdateRoleServiceModel>())).Returns(Task.FromResult(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>())).Returns(Task.FromResult(true));
+
+ IActionResult result = this.RoleController.Delete(id).Result;
+
+ Assert.IsInstanceOf<OkResult>(result);
+ }
+
+ [Test]
+ public void Delet_ReturnsBadRequestObjectResult_WhenRoleIsNotDeletedSuccessfully()
+ {
+ string message = "Could not delete role!";
+ Guid id = Guid.NewGuid();
+
+ this.RoleServiceMock.Setup(p => p.DeleteRole(It.IsAny<Guid>())).Returns(Task.FromResult(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/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs
index b7d38da..164bcbf 100644
--- a/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs
+++ b/src/DevHive.Tests/DevHive.Web.Tests/TechnologyController.Tests.cs
@@ -21,6 +21,7 @@ namespace DevHive.Web.Tests
private Mock<IMapper> MapperMock { get; set; }
private TechnologyController TechnologyController { get; set; }
+ #region SetUp
[SetUp]
public void SetUp()
{
@@ -28,6 +29,7 @@ namespace DevHive.Web.Tests
this.MapperMock = new Mock<IMapper>();
this.TechnologyController = new TechnologyController(this.TechnologyServiceMock.Object, this.MapperMock.Object);
}
+ #endregion
#region Create
[Test]
@@ -95,24 +97,24 @@ namespace DevHive.Web.Tests
{
Guid id = Guid.NewGuid();
- CreateTechnologyServiceModel createTechnologyServiceModel = new CreateTechnologyServiceModel
+ ReadTechnologyWebModel readTechnologyWebModel = new ReadTechnologyWebModel
{
Name = NAME
};
- CreateTechnologyWebModel createTechnologyWebModel = new CreateTechnologyWebModel
+ ReadTechnologyServiceModel readTechnologyServiceModel = new ReadTechnologyServiceModel
{
Name = NAME
};
- this.TechnologyServiceMock.Setup(p => p.GetTechnologyById(It.IsAny<Guid>())).Returns(Task.FromResult(createTechnologyServiceModel));
- this.MapperMock.Setup(p => p.Map<CreateTechnologyWebModel>(It.IsAny<CreateTechnologyServiceModel>())).Returns(createTechnologyWebModel);
+ this.TechnologyServiceMock.Setup(p => p.GetTechnologyById(It.IsAny<Guid>())).Returns(Task.FromResult(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;
- CreateTechnologyWebModel resultModel = okObjectResult.Value as Models.Technology.CreateTechnologyWebModel;
+ ReadTechnologyWebModel resultModel = okObjectResult.Value as Models.Technology.ReadTechnologyWebModel;
Assert.AreEqual(NAME, resultModel.Name);
}
diff --git a/src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs b/src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs
new file mode 100644
index 0000000..c1431c8
--- /dev/null
+++ b/src/DevHive.Tests/DevHive.Web.Tests/UserController.Tests.cs
@@ -0,0 +1,257 @@
+using System;
+using System.Threading.Tasks;
+using AutoMapper;
+using DevHive.Common.Models.Identity;
+using DevHive.Services.Interfaces;
+using DevHive.Services.Models.Identity.User;
+using DevHive.Web.Controllers;
+using DevHive.Web.Models.Identity.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 { get; set; }
+ private Mock<IMapper> MapperMock { get; set; }
+ private UserController UserController { get; set; }
+
+ [SetUp]
+ public void SetUp()
+ {
+ this.UserServiceMock = new Mock<IUserService>();
+ this.MapperMock = new Mock<IMapper>();
+ this.UserController = new UserController(this.UserServiceMock.Object, this.MapperMock.Object);
+ }
+
+ #region Create
+ [Test]
+ public void LoginUser_ReturnsOkObjectResult_WhenUserIsSuccessfullyLoggedIn()
+ {
+ Guid id = Guid.NewGuid();
+ LoginWebModel loginWebModel = new LoginWebModel
+ {
+ UserName = USERNAME
+ };
+ LoginServiceModel loginServiceModel = new LoginServiceModel
+ {
+ UserName = USERNAME
+ };
+ string token = "goshotrapov";
+ TokenModel tokenModel = new TokenModel(token);
+ TokenWebModel tokenWebModel = new TokenWebModel(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>())).Returns(Task.FromResult(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()
+ {
+ Guid id = Guid.NewGuid();
+ RegisterWebModel registerWebModel = new RegisterWebModel
+ {
+ UserName = USERNAME
+ };
+ RegisterServiceModel registerServiceModel = new RegisterServiceModel
+ {
+ UserName = USERNAME
+ };
+ string token = "goshotrapov";
+ TokenModel tokenModel = new TokenModel(token);
+ TokenWebModel tokenWebModel = new TokenWebModel(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>())).Returns(Task.FromResult(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 UserServiceModel
+ {
+ UserName = USERNAME
+ };
+ UserWebModel userWebModel = new UserWebModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.GetUserById(It.IsAny<Guid>())).Returns(Task.FromResult(userServiceModel));
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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 Models.Identity.User.UserWebModel;
+
+ Assert.AreEqual(USERNAME, resultModel.UserName);
+ }
+
+ [Test]
+ public void GetById_ReturnsUnauthorizedResult_WhenUserIsNotAuthorized()
+ {
+ Guid id = Guid.NewGuid();
+ UserWebModel userWebModel = new UserWebModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(false));
+
+ IActionResult result = this.UserController.GetById(Guid.NewGuid(), null).Result;
+
+ Assert.IsInstanceOf<UnauthorizedResult>(result);
+ }
+
+ [Test]
+ public void GetUser_ReturnsTheUser_WhenItExists()
+ {
+ Guid id = Guid.NewGuid();
+ UserWebModel userWebModel = new UserWebModel
+ {
+ UserName = USERNAME
+ };
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.GetUserByUsername(It.IsAny<string>())).Returns(Task.FromResult(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 Models.Identity.User.UserWebModel;
+
+ Assert.AreEqual(USERNAME, resultModel.UserName);
+ }
+ #endregion
+
+ #region Update
+ [Test]
+ public void Update_ShouldReturnOkResult_WhenUserIsUpdatedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+ UpdateUserWebModel updateUserWebModel = new UpdateUserWebModel
+ {
+ UserName = USERNAME
+ };
+ UpdateUserServiceModel updateUserServiceModel = new UpdateUserServiceModel
+ {
+ UserName = USERNAME
+ };
+ UserServiceModel userServiceModel = new UserServiceModel
+ {
+ UserName = USERNAME
+ };
+
+ this.UserServiceMock.Setup(p => p.UpdateUser(It.IsAny<UpdateUserServiceModel>())).Returns(Task.FromResult(userServiceModel));
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(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);
+ }
+
+ [Test]
+ public void UpdateProfilePicture_ShouldReturnOkObjectResult_WhenProfilePictureIsUpdatedSuccessfully()
+ {
+ string profilePictureURL = "goshotrapov";
+ UpdateProfilePictureWebModel updateProfilePictureWebModel = new UpdateProfilePictureWebModel();
+ UpdateProfilePictureServiceModel updateProfilePictureServiceModel = new UpdateProfilePictureServiceModel();
+ ProfilePictureServiceModel profilePictureServiceModel = new ProfilePictureServiceModel
+ {
+ ProfilePictureURL = profilePictureURL
+ };
+ ProfilePictureWebModel profilePictureWebModel = new ProfilePictureWebModel
+ {
+ ProfilePictureURL = profilePictureURL
+ };
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.MapperMock.Setup(p => p.Map<UpdateProfilePictureServiceModel>(It.IsAny<UpdateProfilePictureWebModel>())).Returns(updateProfilePictureServiceModel);
+ this.UserServiceMock.Setup(p => p.UpdateProfilePicture(It.IsAny<UpdateProfilePictureServiceModel>())).Returns(Task.FromResult(profilePictureServiceModel));
+ this.MapperMock.Setup(p => p.Map<ProfilePictureWebModel>(It.IsAny<ProfilePictureServiceModel>())).Returns(profilePictureWebModel);
+
+
+ IActionResult result = this.UserController.UpdateProfilePicture(Guid.Empty, updateProfilePictureWebModel, null).Result;
+
+ Assert.IsInstanceOf<AcceptedResult>(result);
+
+ AcceptedResult acceptedResult = result as AcceptedResult;
+ ProfilePictureWebModel resultModel = acceptedResult.Value as Models.Identity.User.ProfilePictureWebModel;
+
+ Assert.AreEqual(profilePictureURL, resultModel.ProfilePictureURL);
+ }
+ #endregion
+
+ #region Delete
+ [Test]
+ public void Delete_ReturnsOkResult_WhenUserIsDeletedSuccessfully()
+ {
+ Guid id = Guid.NewGuid();
+
+ this.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.UserServiceMock.Setup(p => p.DeleteUser(It.IsAny<Guid>())).Returns(Task.FromResult(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.UserServiceMock.Setup(p => p.ValidJWT(It.IsAny<Guid>(), It.IsAny<string>())).Returns(Task.FromResult(true));
+ this.UserServiceMock.Setup(p => p.DeleteUser(It.IsAny<Guid>())).Returns(Task.FromResult(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
+ }
+}