예제 #1
0
        public void GetDetails_ShouldReturnCorrect_ListFrom_StoriesViewModel()
        {
            var user = new GoUser {
                Id = "1"
            };

            var sut = SetupGetDetailsSut();

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

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

            var expected = new List <StoryViewModel>
            {
                new StoryViewModel
                {
                    Id = "7", DestinationId = "2", AuthorId = "8", Author = "Niki", Title = "Mrun", PeopleWhosLikeThis = 2
                },

                new StoryViewModel
                {
                    Id = "8", DestinationId = "2", AuthorId = "9", Author = "Pelin", Title = "Drun", PeopleWhosLikeThis = 0
                },

                new StoryViewModel
                {
                    Id = "9", DestinationId = "2", AuthorId = "10", Author = "Saso", Title = "Brum", PeopleWhosLikeThis = 1
                }
            };

            Assert.Equal(expected, actual.Stories, new StoriesViewModelComparer());
        }
예제 #2
0
        private DestinationService SetupGetDetailsSut()
        {
            var usersRepoBuilder = new GoUserRepositoryBuilder();
            var usersRepo        = usersRepoBuilder
                                   .WithAll()
                                   .Build();

            var commentsRepoBuilder = new CommentsRepositoryBuilder();
            var commentsRepo        = commentsRepoBuilder
                                      .WithAll()
                                      .Build();

            var storiesRepoBuilder = new StoriesRepositoryBuilder();
            var storiesRepo        = storiesRepoBuilder
                                     .WithAll()
                                     .Build();

            var peopleStoriesRepoBuilder = new PeopleStoriesRepositoryBuilder();
            var peopleStoriesRepo        = peopleStoriesRepoBuilder
                                           .WithAll()
                                           .Build();

            var destUsersRepoBuilder = new DestinationsUsersRepositoryBuilder();
            var destUserRepo         = destUsersRepoBuilder
                                       .WithAll()
                                       .Build();

            var destRepoBuilder = new DestinationsRepositoryBuilder();
            var destRepo        = destRepoBuilder
                                  .WithAll()
                                  .Build();

            return(new DestinationService(destRepo, destUserRepo, peopleStoriesRepo, commentsRepo, storiesRepo, usersRepo, null, Mapper));
        }
예제 #3
0
        public void GetDetails_ShouldReturnCorrect_ListFrom_UsersNotKnowAnyone()
        {
            var user = new GoUser {
                Id = "1"
            };

            var sut = SetupGetDetailsSut();

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

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

            var expected = new List <GoUserViewModel>
            {
                new GoUserViewModel {
                    Id = "9", FirstName = "Pelin", Image = usersRepo.All()
                                                           .FirstOrDefault(x => x.Id == "9").Image
                },

                new GoUserViewModel {
                    Id = "10", FirstName = "Saso", Image = usersRepo.All()
                                                           .FirstOrDefault(x => x.Id == "10").Image
                },

                new GoUserViewModel {
                    Id = "11", FirstName = "Koni", Image = usersRepo.All()
                                                           .FirstOrDefault(x => x.Id == "11").Image
                },
            };

            Assert.Equal(expected, actual.ParticipantsNotKnowAnyone, new GoUserViewModelComparer());
        }
예제 #4
0
        public void GetDetails_ShouldReturnCorrect_ListFrom_ParticipantsKnowSomeone()
        {
            var user = new GoUser {
                Id = "1"
            };

            var sut = SetupGetDetailsSut();

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

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

            var expected = new List <GoUserViewModel>
            {
                new GoUserViewModel {
                    Id = "7", FirstName = "Slavqna", Image = ConvertImageToByteArray(SetupFileMock().Object)
                },                                                                                                              //!!!! inage
                new GoUserViewModel {
                    Id = "8", FirstName = "Niki", Image = ConvertImageToByteArray(SetupFileMock().Object)
                }
            };

            Assert.Equal(expected, actual.ParticipantsKnowSomeone, new GoUserViewModelComparer());
        }
예제 #5
0
        public void GetDetails_ShouldThrow_IfThemNotExist()
        {
            var themsRepoBuilder = new ThemsRepositoryBuilder();
            var themsRepo        = themsRepoBuilder
                                   .WithAll()
                                   .Build();

            var themCommentRepoBuilder = new ThemCommentsRepositoryBuilder();
            var themCommentsRepo       = themCommentRepoBuilder
                                         .WithAll()
                                         .Build();

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

            var sut = new ThemService(themsRepo, usersRepo, themCommentsRepo, Mapper);

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

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

            Assert.Equal("Theme not exist!", ex.Message);

            themsRepoBuilder.ThemsRepoMock.Verify();
        }
예제 #6
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();
        }
예제 #7
0
        public async Task AddLevelResult_ShouldThrow_IfGameLevelParticipantNotExist()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var levelsRepoBuilder = new LevelRepositoryBuilder();
            var levelRepo         = levelsRepoBuilder
                                    .WithAll()
                                    .Build();

            var levelsParticipantsRepoBuilder = new GameLevelParticipantRepositoryBuilder();
            var levelsParticipantsRepo        = levelsParticipantsRepoBuilder
                                                .WithAll()
                                                .Build();

            var sut = new GamesService(null, levelRepo, levelsParticipantsRepo, userRepo, Mapper);

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

            var gameLevelUserViewModel = new GameLevelParticipantViewModel
            {
                GameId             = "7",
                LevelId            = "6",
                ParticipantId      = "10",
                Participant        = "Saso",
                CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                StatusLevel        = StatusLevel.SuccessfullyPassed
            };

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

            Assert.Equal("This GameLevelParticipant not exist!", ex.Message);

            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify();

            userRepoBuilder.UsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Never);
            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify(r => r.SaveChangesAsync(), Times.Never);
        }
예제 #8
0
        public async Task AddLevelResult_ShouldAddResultToGameLevelUserCorrect()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var levelsRepoBuilder = new LevelRepositoryBuilder();
            var levelRepo         = levelsRepoBuilder
                                    .WithAll()
                                    .Build();

            var levelsParticipantsRepoBuilder = new GameLevelParticipantRepositoryBuilder();
            var levelsParticipantsRepo        = levelsParticipantsRepoBuilder
                                                .WithAll()
                                                .Build();

            var sut = new GamesService(null, levelRepo, levelsParticipantsRepo, userRepo, Mapper);

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

            var gameLevelUserViewModel = new GameLevelParticipantViewModel
            {
                GameId             = "7",
                LevelId            = "3",
                ParticipantId      = "10",
                Participant        = "Saso",
                CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                StatusLevel        = StatusLevel.SuccessfullyPassed
            };

            await sut.AddLevelResult(gameLevelUserViewModel, user);

            userRepoBuilder.UsersRepoMock.Verify();
            levelsRepoBuilder.LevelsRepoMock.Verify();
            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify();

            userRepoBuilder.UsersRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once);
            levelsParticipantsRepoBuilder.LevelParticipantRepoMock.Verify(r => r.SaveChangesAsync(), Times.Once);
        }
예제 #9
0
        public void GetDetails_ShouldThrow_IfStoryNotExist()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var storiesRepoBuilder = new StoriesRepositoryBuilder();
            var storiesRepo        = storiesRepoBuilder
                                     .WithAll()
                                     .Build();

            var UserStoriesRepoBuilder = new PeopleStoriesRepositoryBuilder();
            var userStoriesRepo        = UserStoriesRepoBuilder
                                         .WithAll()
                                         .Build();

            var sut = new StoriesService(storiesRepo, null, userStoriesRepo, userRepo, Mapper);

            var ex = Assert.Throws <ArgumentException>(() => sut.GetDetails("17"));

            Assert.Equal("Story not exist!", ex.Message);
        }
예제 #10
0
        public void GetDetails_ShouldReturnCorrect_StoryViewModel()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var storiesRepoBuilder = new StoriesRepositoryBuilder();
            var storiesRepo        = storiesRepoBuilder
                                     .WithAll()
                                     .Build();

            var UserStoriesRepoBuilder = new PeopleStoriesRepositoryBuilder();
            var userStoriesRepo        = UserStoriesRepoBuilder
                                         .WithAll()
                                         .Build();

            var sut = new StoriesService(storiesRepo, null, userStoriesRepo, userRepo, Mapper);

            var actual = sut.GetDetails("7");

            var peopleStories = userStoriesRepo.All().Where(x => x.StoryId == "7").Select(x => Mapper.Map <StoryViewModel>(x.Story)).ToList();

            var author = userRepo.All().FirstOrDefault(x => x.Id == "8");

            var expected = new StoryViewModel
            {
                Id                 = "7",
                DestinationId      = "2",
                AuthorId           = "8",
                Author             = author.FirstName,
                Title              = "Mrun",
                PeopleWhosLikeThis = peopleStories.Count()
            };

            Assert.Equal(expected, actual, new StoriesViewModelComparer());
        }
예제 #11
0
        public void AllMyStories_ShouldReturnCorrectListStoryViewModels()
        {
            var userRepoBuilder = new GoUserRepositoryBuilder();
            var userRepo        = userRepoBuilder
                                  .WithAll()
                                  .Build();

            var storiesRepoBuilder = new StoriesRepositoryBuilder();
            var storiesRepo        = storiesRepoBuilder
                                     .WithAll()
                                     .Build();

            var UserStoriesRepoBuilder = new PeopleStoriesRepositoryBuilder();
            var userStoriesRepo        = UserStoriesRepoBuilder
                                         .WithAll()
                                         .Build();

            var sut = new StoriesService(storiesRepo, null, userStoriesRepo, userRepo, Mapper);

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

            var actual = sut.AllMyStories(user);

            var expected = new List <StoryViewModel>
            {
                new StoryViewModel
                {
                    Id            = "1",
                    DestinationId = "3",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Drun"
                },
                new StoryViewModel
                {
                    Id            = "2",
                    DestinationId = "3",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Drun"
                },
                new StoryViewModel
                {
                    Id            = "3",
                    DestinationId = "6",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Drun"
                },
                new StoryViewModel
                {
                    Id            = "4",
                    DestinationId = "4",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Drun"
                },
                new StoryViewModel
                {
                    Id            = "5",
                    DestinationId = "5",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Drun"
                },
                new StoryViewModel
                {
                    Id            = "6",
                    DestinationId = "1",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Drun"
                },
                new StoryViewModel
                {
                    Id            = "9",
                    DestinationId = "2",
                    AuthorId      = "10",
                    Author        = "Saso ",
                    Title         = "Brum"
                }
            };

            Assert.Equal(expected, actual, new StoriesViewModelComparer());
        }
예제 #12
0
        public void GetDetails_ShouldReturnCorrect_ThemDetailsViewModel()
        {
            var themsRepoBuilder = new ThemsRepositoryBuilder();
            var themsRepo        = themsRepoBuilder
                                   .WithAll()
                                   .Build();

            var themCommentRepoBuilder = new ThemCommentsRepositoryBuilder();
            var themCommentsRepo       = themCommentRepoBuilder
                                         .WithAll()
                                         .Build();

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

            var sut = new ThemService(themsRepo, usersRepo, themCommentsRepo, Mapper);

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

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

            var expected = new ThemDetailsViewModel
            {
                Id          = "1",
                Description = "Niki otiva na more",
                Date        = DateTime.Parse("07/02/2018"),
                AuthorId    = "7",
                Author      = "Slavqna ",
                Comments    = new List <ThemCommentViewModel>
                {
                    new ThemCommentViewModel
                    {
                        Id       = "6",
                        Content  = "Niki otiva na more",
                        ThemId   = "1",
                        Date     = DateTime.Parse("08/02/2018"),
                        AuthorId = "11",
                        Author   = "Koni "
                    },
                    new ThemCommentViewModel
                    {
                        Id       = "7",
                        Content  = "Nikiiiiiiiiiii",
                        ThemId   = "1",
                        Date     = DateTime.Parse("09/02/2018"),
                        AuthorId = "8",
                        Author   = "Niki "
                    },
                }
            };

            Assert.Equal(expected, actual, new ThemDetailsViewModelComparer());
            Assert.Equal(expected.Comments, actual.Comments, new ThemCommentViewModelComparer());

            themsRepoBuilder.ThemsRepoMock.Verify();
            themCommentRepoBuilder.ThemCommentsRepoMock.Verify();
            usersRepoBuilder.UsersRepoMock.Verify();
        }
예제 #13
0
        public void GetDetails_ShouldReturn_GameDetailsViewModel()
        {
            var gameRepoBuilder = new GameRepositoryBuilder();
            var gameRepo        = gameRepoBuilder
                                  .WithAll()
                                  .Build();

            var levelsRepoBuilder = new LevelRepositoryBuilder();
            var levelRepo         = levelsRepoBuilder
                                    .WithAll()
                                    .Build();

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

            var levelsParticipantsRepoBuilder = new GameLevelParticipantRepositoryBuilder();
            var levelsParticipantsRepo        = levelsParticipantsRepoBuilder
                                                .WithAll()
                                                .Build();

            var sut = new GamesService(gameRepo, levelRepo, levelsParticipantsRepo, userRepo, Mapper);

            var actual   = sut.GetDetails("7");
            var expected = new GameDetailsViewModel
            {
                Id          = "7",
                Name        = "Nameri mqstoto",
                Description = "nameriiiiiiiiiii",
                Creator     = "Niki",
                Level1      = new LevelViewModel
                {
                    Id           = "1",
                    Description  = "mmmmm",
                    Points       = 1,
                    GameId       = "7",
                    NumberInGame = 1,
                    Image        = levelRepo.All().FirstOrDefault(x => x.Id == "1").Image
                },
                Level2 = new LevelViewModel
                {
                    Id           = "2",
                    Description  = "nnnnnnnnnnnnnnnn",
                    Points       = 3,
                    GameId       = "7",
                    NumberInGame = 2,
                    Image        = levelRepo.All().FirstOrDefault(x => x.Id == "2").Image
                },
                Level3 = new LevelViewModel
                {
                    Id           = "3",
                    Description  = "rrrrrrrrrrrrrrrrrr",
                    Points       = 5,
                    GameId       = "7",
                    NumberInGame = 3,
                    Image        = levelRepo.All().FirstOrDefault(x => x.Id == "3").Image
                },
                GameParticipantsLevel1 = new List <GameLevelParticipantViewModel>
                {
                    new GameLevelParticipantViewModel
                    {
                        GameId             = "7",
                        LevelId            = "1",
                        ParticipantId      = "10",
                        Participant        = "Saso ",
                        CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                        StatusLevel        = StatusLevel.NotPassed
                    }
                },
                GameParticipantsLevel2 = new List <GameLevelParticipantViewModel>
                {
                    new GameLevelParticipantViewModel
                    {
                        GameId             = "7",
                        LevelId            = "2",
                        ParticipantId      = "10",
                        Participant        = "Saso ",
                        CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                        StatusLevel        = StatusLevel.NotPassed
                    }
                },
                GameParticipantsLevel3 = new List <GameLevelParticipantViewModel>
                {
                    new GameLevelParticipantViewModel
                    {
                        GameId             = "7",
                        LevelId            = "3",
                        ParticipantId      = "10",
                        Participant        = "Saso ",
                        CorrespondingImage = ConvertImageToByteArray(SetupFileMock().Object),
                        StatusLevel        = StatusLevel.NotPassed
                    }
                }
            };

            Assert.Equal(expected, actual, new GameDetailsViewModelComparer());
            Assert.Equal(expected.Level1, actual.Level1, new LevelViewModelComparer());
            Assert.Equal(expected.Level2, actual.Level2, new LevelViewModelComparer());
            Assert.Equal(expected.Level3, actual.Level3, new LevelViewModelComparer());
            Assert.Equal(expected.GameParticipantsLevel1, actual.GameParticipantsLevel1, new GameLevelParticipantViewModelComparer());
            Assert.Equal(expected.GameParticipantsLevel2, actual.GameParticipantsLevel2, new GameLevelParticipantViewModelComparer());
            Assert.Equal(expected.GameParticipantsLevel3, actual.GameParticipantsLevel3, new GameLevelParticipantViewModelComparer());

            gameRepoBuilder.GamesRepoMock.Verify();
        }
예제 #14
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();
        }