aboutsummaryrefslogtreecommitdiff
path: root/src/DevHive.Tests/DevHive.Data.Tests/FeedRepository.Tests.cs
blob: f134bf38cbb8bc5f71df1bcb1ad61989b6f53770 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using DevHive.Data.Models;
using DevHive.Data.Repositories;
using Microsoft.EntityFrameworkCore;
using NUnit.Framework;

namespace DevHive.Data.Tests
{
	[TestFixture]
	public class FeedRepositoryTests
	{
		protected DevHiveContext Context { get; set; }

		protected FeedRepository FeedRepository { get; set; }

		#region Setups
		[SetUp]
		public void Setup()
		{
			var optionsBuilder = new DbContextOptionsBuilder<DevHiveContext>()
				.UseInMemoryDatabase(databaseName: "DevHive_Test_Database");

			this.Context = new DevHiveContext(optionsBuilder.Options);

			FeedRepository = new FeedRepository(Context);
		}

		[TearDown]
		public void TearDown()
		{
			this.Context.Database.EnsureDeleted();
		}
		#endregion

		#region GetFriendsPosts
		[Test]
		public async Task GetFriendsPosts_ReturnsListOfPosts_WhenTheyExist()
		{
			User dummyUser = this.CreateDummyUser();
			List<User> friendsList = new List<User>();
			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);

			const int PAGE_NUMBER = 1;
			const int PAGE_SIZE = 10;

			List<Post> resultList = await this.FeedRepository.GetFriendsPosts(friendsList, dateTime, PAGE_NUMBER, PAGE_SIZE);

			Assert.GreaterOrEqual(2, resultList.Count, "GetFriendsPosts does not return all correct posts");
		}

		[Test]
		public async Task GetFriendsPosts_ReturnsNull_WhenNoSuitablePostsExist()
		{
			User dummyUser = this.CreateDummyUser();
			List<User> friendsList = new List<User>();
			friendsList.Add(dummyUser);

			DateTime dateTime = new DateTime(3000, 05, 09, 9, 15, 0);

			const int PAGE_NUMBER = 1;
			const int PAGE_SIZE = 10;

			List<Post> resultList = await this.FeedRepository.GetFriendsPosts(friendsList, dateTime, PAGE_NUMBER, PAGE_SIZE);

			Assert.LessOrEqual(0, resultList.Count, "GetFriendsPosts does not return all correct posts");
		}
		#endregion

		#region HelperMethods
		private User CreateDummyUser()
		{
			HashSet<Role> roles = new()
			{
				new Role()
				{
					Id = Guid.NewGuid(),
					Name = Role.DefaultRole
				},
			};

			return new()
			{
				Id = Guid.NewGuid(),
				UserName = "pioneer10",
				FirstName = "Spas",
				LastName = "Spasov",
				Email = "abv@abv.bg",
				Roles = roles
			};
		}

		private Post CreateDummyPost(User poster)
		{
			const string POST_MESSAGE = "random message";
			Guid id = Guid.NewGuid();
			Post post = new Post
			{
				Id = id,
				Message = POST_MESSAGE,
				Creator = poster,
				TimeCreated = new DateTime(2000, 05, 09, 9, 15, 0)
			};

			this.Context.Posts.Add(post);
			this.Context.SaveChanges();

			return post;
		}
		#endregion
	}
}