public async Task GetAllCoachesAsync_WithCorrectData_ShouldReturnCorrectResult()
        {
            var errorMessage = "CoachingService GetAllCoachesAsync() method does not work properly.";

            // Arrange
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();

            var coachOrdersRepository = new EfRepository <CoachOrder>(context);

            var userStore       = new ApplicationUserStore(context);
            var roleStore       = new ApplicationRoleStore(context);
            var userManager     = new UserManager <ApplicationUser>(userStore, null, null, null, null, null, null, null, null);
            var roleManager     = new RoleManager <ApplicationRole>(roleStore, null, null, null, null);
            var coachingService = new CoachingService(userManager, coachOrdersRepository);

            var roleName = GlobalConstants.CoachRoleName;

            var role = new ApplicationRole
            {
                Id   = Guid.NewGuid().ToString(),
                Name = roleName,
            };

            var coach = new ApplicationUser
            {
                Id       = Guid.NewGuid().ToString(),
                UserName = "******",
            };

            // Act
            await roleManager.CreateAsync(role);

            await userManager.CreateAsync(coach);

            await userManager.AddToRoleAsync(coach, roleName);

            var actualResult = await coachingService.GetAllCoachesAsync();

            var expectedResult = coach;

            // Assert
            Assert.True(actualResult.First().UserId == expectedResult.Id, errorMessage);
            Assert.True(actualResult.First().Username == expectedResult.UserName, errorMessage);
        }
        public async Task GetFirstOrder_WithCorrectData_ShouldReturnCorrectResult()
        {
            var errorMessage = "CoachingService GetFirstOrder() method does not work properly.";

            // Arrange
            var context = ApplicationDbContextInMemoryFactory.InitializeContext();

            var coachOrdersRepository = new EfRepository <CoachOrder>(context);

            var userManager = this.GetUserManagerMock();

            var coachingService = new CoachingService(userManager.Object, coachOrdersRepository);

            var buyerId = Guid.NewGuid().ToString();
            var coach   = new ApplicationUser
            {
                Id       = Guid.NewGuid().ToString(),
                UserName = "******",
            };

            var coachOrderModel = new OrderInputModel
            {
                BuyerId    = buyerId,
                CoachId    = coach.Id,
                GameName   = "want3d1337",
                Region     = "EUW",
                DiscordTag = "1337#0000",
                Hours      = 2,
            };

            // Act
            await coachingService.AddAsync(coachOrderModel);

            var actualResult   = coachingService.GetFirstOrder(coach);
            var expectedResult = coachOrderModel;

            // Assert
            Assert.True(expectedResult.BuyerId == actualResult.BuyerId, errorMessage);
            Assert.True(expectedResult.CoachId == actualResult.CoachId, errorMessage);
            Assert.True(expectedResult.GameName == actualResult.GameName, errorMessage);
            Assert.True(expectedResult.Region == actualResult.Region, errorMessage);
            Assert.True(expectedResult.DiscordTag == actualResult.DiscordTag, errorMessage);
            Assert.True(expectedResult.Hours == actualResult.Hours, errorMessage);
        }