Esempio n. 1
0
        public void GetAllParticipants_ShouldThrow_IfUserIsNotCreator()
        {
            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var coursUserRepo           = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var sut = new CoursesService(coursUserRepo, courseRepo, null, Mapper);

            var user = new GoUser {
                Id = "9"
            };

            var ex = Assert.Throws <ArgumentException>(() => sut.GetAllParticipants("1", user));

            Assert.Equal("You can not add results!", ex.Message);

            coursesRepoBuilder.CoursesRepoMock.Verify();
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify();
        }
Esempio n. 2
0
        public async Task AddUserToCourse_ShouldNotAddNew_CourseUser_WhenMaxCountParticipantsIsFully()
        {
            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var courseUserRepo          = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper);

            var user = new GoUser {
                Id = "7"
            };
            var user1 = new GoUser {
                Id = "8"
            };

            await sut.AddUserToCourse("1", user);

            await sut.AddUserToCourse("1", user1);

            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.AddAsync(It.IsAny <CoursesUsers>()), Times.Exactly(1));
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Exactly(1));
        }
Esempio n. 3
0
        public async Task AddResultToUsersCourses_ShouldThrow_IfCourseNotExist()
        {
            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var courseUserRepo          = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper);

            var user = new GoUser {
                Id = "7"
            };

            var courseUser = new UsersResultsViewModel
            {
                CourseId = "7",
                Course   = new CourseViewModel
                {
                    Id                   = "7",
                    Image                = new byte[0],
                    Title                = "Drun",
                    Description          = "Drunnnnnnnnnnnnnnnnnn",
                    MaxCountParticipants = 4,
                    StartDate            = DateTime.Now.AddDays(3),
                    DurationOfDays       = 3,
                    CreatorId            = "7",
                    Creator              = new GoUserViewModel {
                        Id = "7"
                    },
                    Status   = Status.Practically,
                    Category = Category.Climbing
                },
                ParticipantId = "8",
                Result        = StatusParticitant.Successfully
            };

            var ex = await Assert.ThrowsAsync <ArgumentException>(async() => await sut.AddResultToUsersCourses(courseUser, user));

            ex.Message.ShouldBe("This userCourse not exist!");
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify();
            coursesRepoBuilder.CoursesRepoMock.Verify();
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(d => d.SaveChangesAsync(), Times.Never);
        }
Esempio n. 4
0
        public void GetDetails_ShouldReturn_CourseDetailsViewModel()
        {
            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var coursUserRepo           = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var usersRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo         = usersRepoBuilder
                                   .WithAll()
                                   .Build();

            var sut = new CoursesService(coursUserRepo, courseRepo, userRepo, Mapper);

            var actual = sut.GetDetails(1, "2");

            var expected = new CourseDetailsViewModel
            {
                Id                   = "2",
                Image                = new byte[0],
                Title                = "Brum",
                Description          = "Brummmmmmmmmmmmm",
                MaxCountParticipants = 10,
                StartDate            = DateTime.Now.AddDays(2),
                DurationOfDays       = 5,
                Creator              = new GoUserViewModel {
                    Id = "9", FirstName = "Pelin", Image = new byte[0]
                },
                FreeSeats = 9,
                Status    = Status.Theoretical,
                Category  = Category.Cycling
            };

            Assert.Equal(expected, actual, new CourseDetailsViewModelComparer());
            Assert.Equal(expected.Creator, actual.Creator, new GoUserViewModelComparer());
            Assert.True(1 == actual.Participants.Count());

            coursesRepoBuilder.CoursesRepoMock.Verify();
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify();
            usersRepoBuilder.UsersRepoMock.Verify();
        }
Esempio n. 5
0
        public async Task AddResultToUsersCourses_ShouldAddResultCorrect_IfCourseExist()
        {
            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var courseUserRepo          = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper);

            var user = new GoUser {
                Id = "7"
            };

            var courseUser = new UsersResultsViewModel
            {
                CourseId = "4",
                Course   = new CourseViewModel
                {
                    Id                   = "4",
                    Image                = new byte[0],
                    Title                = "Drun",
                    Description          = "Drunnnnnnnnnnnnnnnnnn",
                    MaxCountParticipants = 4,
                    StartDate            = DateTime.Now.AddDays(-3),
                    DurationOfDays       = 3,
                    CreatorId            = "7",
                    Creator              = new GoUserViewModel {
                        Id = "7"
                    },
                    Status   = Status.Practically,
                    Category = Category.Climbing
                },
                ParticipantId = "7",
                Result        = StatusParticitant.Successfully
            };

            await sut.AddResultToUsersCourses(courseUser, user);

            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.AddAsync(It.IsAny <CoursesUsers>()), Times.Exactly(0));
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once);
        }
Esempio n. 6
0
        public void GetMyCourses_ShouldReturn_CorrectListOf_CourseViewModels()
        {
            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var coursUserRepo           = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var sut = new CoursesService(coursUserRepo, courseRepo, null, Mapper);

            var actual = sut.GetMyCourses("8");

            var expected = new List <CourseViewModel>
            {
                new CourseViewModel
                {
                    Id                   = "1",
                    Image                = new byte[0],
                    Title                = "Drun",
                    Description          = "Drunnnnnnnnnnnnnnnnnn",
                    MaxCountParticipants = 4,
                    StartDate            = DateTime.Now.AddDays(3),
                    Creator              = new GoUserViewModel {
                        Id = "7", FirstName = "Slavqna"
                    },
                    DurationOfDays = 3,
                    Status         = Status.Practically,
                    Category       = Category.Climbing
                }
            }.AsQueryable();

            Assert.Equal(expected, actual, new CourseViewModelComparer());

            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify();
        }
Esempio n. 7
0
        public async Task AddUserToCourse_ShouldNotAddNew_CourseUser_WhenStartDateIsBeforeToday()
        {
            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var courseUserRepo          = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper);

            var user = new GoUser {
                Id = "12"
            };

            await sut.AddUserToCourse("4", user);

            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.AddAsync(It.IsAny <CoursesUsers>()), Times.Never);
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Never);
        }
Esempio n. 8
0
        public async Task AddUserToCourse_ShouldAddNew_CourseUser()
        {
            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var courseUserRepo          = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var sut = new CoursesService(courseUserRepo, courseRepo, null, Mapper);

            var user = new GoUser {
                Id = "7"
            };

            await sut.AddUserToCourse("1", user);

            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.AddAsync(It.IsAny <CoursesUsers>()), Times.Once);
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once);
        }
Esempio n. 9
0
        public void GetAllParticipants_ShouldReturn_All_UsersResultsViewModels()
        {
            var coursesRepoBuilder = new CoursesRepositoryBuilder();
            var courseRepo         = coursesRepoBuilder
                                     .WithAll()
                                     .Build();

            var coursesUsersRepoBuilder = new CoursesUsersRepositoryBuilder();
            var coursUserRepo           = coursesUsersRepoBuilder
                                          .WithAll()
                                          .Build();

            var usersRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo         = usersRepoBuilder
                                   .WithAll()
                                   .Build();

            var sut = new CoursesService(coursUserRepo, courseRepo, userRepo, Mapper);

            var user = new GoUser {
                Id = "7"
            };

            var actual = sut.GetAllParticipants("1", user);

            var expected = new List <UsersResultsViewModel>
            {
                new UsersResultsViewModel
                {
                    CourseId      = "1",
                    ParticipantId = "8",
                    Participant   = new GoUserViewModel {
                        Id = "8", FirstName = "Niki",
                    },
                    Result = StatusParticitant.Successfully
                },
                new UsersResultsViewModel
                {
                    CourseId      = "1",
                    ParticipantId = "9",
                    Participant   = new GoUserViewModel {
                        Id = "9", FirstName = "Pelin"
                    },
                    Result = StatusParticitant.Successfully
                },
                new UsersResultsViewModel
                {
                    CourseId      = "1",
                    ParticipantId = "11",
                    Participant   = new GoUserViewModel {
                        Id = "11", FirstName = "Koni"
                    },
                    Result = StatusParticitant.Unsuccessfully
                }
            }.AsQueryable();

            var usersFromActual   = actual.Select(x => x.Participant).ToList();
            var usersFromExpected = expected.Select(x => x.Participant).ToList();

            Assert.Equal(expected, actual, new UsersResultsViewModelComparer());
            Assert.Equal(usersFromExpected, usersFromActual, new GoUserViewModelComparer());

            coursesRepoBuilder.CoursesRepoMock.Verify();
            coursesUsersRepoBuilder.CoursesUsersRepoMock.Verify();
            usersRepoBuilder.UsersRepoMock.Verify();
        }