Ejemplo n.º 1
0
        public async Task GetUserByIdAsync_WithValidDAta_ShouldReturnCorrectUser()
        {
            //Arrange
            var expectedUserId   = "UserId";
            var expectedUsername = "******";

            var moqHttpContext = new Mock <IHttpContextAccessor>();
            var userStore      = new Mock <IUserStore <ApplicationUser> >();
            var userManager    = new Mock <UserManager <ApplicationUser> >(userStore.Object, null, null, null, null, null, null, null, null);
            var moqGameService = new Mock <IGamesService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.usersService = new UsersService(db, moqHttpContext.Object, userManager.Object, mapper, moqGameService.Object);

            var testingUser = new ApplicationUser {
                Id = "UserId", UserName = "******"
            };

            await db.ApplicationUsers.AddAsync(testingUser);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.usersService.GetUserByIdAsync("UserId");

            //Assert
            Assert.Equal(expectedUserId, actual.Id);
            Assert.Equal(expectedUsername, actual.UserName);
        }
        public async Task DeleteVideoByIdAsync_WithValidData_ShouldReturnTrue()
        {
            //Arrange
            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            var testingVideo = new Video
            {
                Id        = 1,
                Title     = "VideoTitle",
                IsDeleted = false
            };

            await db.Videos.AddRangeAsync(testingVideo);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.videosService.DeleteVideoByIdAsync(1);

            //Assert
            Assert.True(actual);
            Assert.True(testingVideo.IsDeleted);
        }
        public async Task CreateVideoAsync_WithValidData_VideosInDatabaseShouldReturnCorrectCount()
        {
            //Arrange
            var expectedResult = 1;

            var moqPictureService = new Mock <IPicturesService>();

            moqPictureService.Setup(x => x.GetPictureByLinkAsync("pictureLink"))
            .ReturnsAsync(new Picture
            {
                Id   = 1,
                Name = "PictureName",
            });

            var moqUsersService = new Mock <IUsersService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            var inputModel = new AddVideoInputModel
            {
                VideoTitle = "VideoTitle",
                VideoLink  = "VideoLink"
            };

            //Act
            await this.videosService.CreateVideoAsync(inputModel);

            //Assert
            Assert.Equal(expectedResult, db.Videos.ToList().Count);
        }
Ejemplo n.º 4
0
        public async Task GetDataPointsForCreatedGamesAsync_WithValidData_ShouldReturnCorrectCountOfDataPoints()
        {
            //Assert
            var expected = 10;

            var moqGamesService = new Mock <IGamesService>();

            moqGamesService.Setup(x => x.GetTheCountForTheCreatedGamesForTheLastTenDaysAsync())
            .ReturnsAsync(new List <int> {
                1, 0, 1, 0, 2, 0, 0, 0, 1, 1
            });

            var moqUsersService  = new Mock <IUsersService>();
            var moqVideosService = new Mock <IVideosService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            statisticsService = new StatisticsService(moqUsersService.Object, moqGamesService.Object, moqVideosService.Object);

            //Act
            var actual = await statisticsService.GetDataPointsForCreatedGamesAsync();

            //Assert
            Assert.Equal(expected, actual.Count());
        }
Ejemplo n.º 5
0
        public async Task GetAdministrationIndexStatisticViewModelAsync_WithValidData_ShouldReturnCorrectResult()
        {
            //Assert
            var expectedAllUsersCount  = 10;
            var expectedAllGamesCount  = 5;
            var expectedAllVideosCount = 5;

            var moqUsersService = new Mock <IUsersService>();

            moqUsersService.Setup(x => x.GetCountOfAllUsersAsync())
            .ReturnsAsync(10);
            var moqGamesService = new Mock <IGamesService>();

            moqGamesService.Setup(x => x.GetCountOfAllGamesAsync())
            .ReturnsAsync(5);
            var moqVideosService = new Mock <IVideosService>();

            moqVideosService.Setup(x => x.GetCountOfAllVideosAsync())
            .ReturnsAsync(5);

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            statisticsService = new StatisticsService(moqUsersService.Object, moqGamesService.Object, moqVideosService.Object);

            //Act
            var actual = await statisticsService.GetAdministrationIndexStatisticViewModelAsync();

            //Assert
            Assert.Equal(expectedAllGamesCount, actual.AllGamesCount);
            Assert.Equal(expectedAllUsersCount, actual.AllUsersCount);
            Assert.Equal(expectedAllVideosCount, actual.AllVideosCount);
        }
        public async Task GetPictureByLinkAsync_WithValidDAta_ShouldReturnCorrectPicture()
        {
            //Arrange
            var expectedPictureId   = 1;
            var expectedPictureName = "PictureName";
            var expectedPictureLink = "PictureLink";

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.picturesService = new PicturesService(db);

            var testingPicture = new Picture
            {
                Id   = 1,
                Name = "PictureName",
                Link = "PictureLink"
            };

            await db.Pictures.AddAsync(testingPicture);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.picturesService.GetPictureByLinkAsync("PictureLink");

            //Assert
            Assert.Equal(expectedPictureId, actual.Id);
            Assert.Equal(expectedPictureName, actual.Name);
            Assert.Equal(expectedPictureLink, actual.Link);
        }
Ejemplo n.º 7
0
 public Form1(ChessDbContext dbContext)
 {
     InitializeComponent();
     InitialView();
     ConfigureBoardPanel();
     this.dbContext = dbContext;
 }
        public async Task RemoveFromFavoritesAsync_WithoutVideoInTheFavoritesList_ShouldThrowAndInvalidOperationException()
        {
            //Arrange
            var expectedErrorMessage = "The given video isn't in the favorites list!";
            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            var moqUserService = new Mock <IUsersService>();

            moqUserService.Setup(x => x.GetCurrentUserAsync())
            .ReturnsAsync(new ApplicationUser
            {
                Id       = "UserId",
                UserName = "******",
            });

            favouritesService = new FavouritesService(db, moqUserService.Object);
            var testingVideo = new Video
            {
                Id    = 2,
                Title = "VideoTitle",
            };

            await db.Videos.AddAsync(testingVideo);

            await db.SaveChangesAsync();

            //Act and assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => favouritesService.RemoveFromFavoritesAsync(2));

            Assert.Equal(expectedErrorMessage, ex.Message);
        }
Ejemplo n.º 9
0
        public async Task AddMoveToDbAsync_WithValidData_ShouldAddMoveToDbCorrectly()
        {
            //Arrange
            var expectedMove = new Move
            {
                Id                = "MoveId",
                Title             = "MoveTitle",
                ApplicationUserId = "UserId",
                GameId            = "GameId",
            };

            var moqUsersService = new Mock <IUsersService>();

            moqUsersService.Setup(x => x.GetCurrentUserAsync()).ReturnsAsync(new ApplicationUser {
                Id = "UserId"
            });

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.movesService = new MovesService(db, mapper, moqUsersService.Object);

            //Act
            await this.movesService.AddMoveToDbAsync("MoveTitle", "GameId");

            var resultMove = await db.Moves.FirstOrDefaultAsync(x => x.Title == "MoveTitle" && x.GameId == "GameId");

            //Assert
            Assert.Equal(expectedMove.Title, resultMove.Title);
            Assert.Equal(expectedMove.GameId, resultMove.GameId);
            Assert.Equal(expectedMove.ApplicationUserId, resultMove.ApplicationUserId);
        }
Ejemplo n.º 10
0
 public VideosService(ChessDbContext db, IPicturesService picturesService, IMapper mapper, IUsersService usersService)
 {
     this.db = db;
     this.picturesService = picturesService;
     this.mapper          = mapper;
     this.usersService    = usersService;
 }
Ejemplo n.º 11
0
        public async Task UnblockUserByIdAsync_WithValidDAta_ShouldReturnTrue()
        {
            //Arrange
            var moqHttpContext = new Mock <IHttpContextAccessor>();
            var userStore      = new Mock <IUserStore <ApplicationUser> >();
            var userManager    = new Mock <UserManager <ApplicationUser> >(userStore.Object, null, null, null, null, null, null, null, null);
            var moqGameService = new Mock <IGamesService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.usersService = new UsersService(db, moqHttpContext.Object, userManager.Object, mapper, moqGameService.Object);

            var testingUser = new ApplicationUser
            {
                Id             = "UserId",
                UserName       = "******",
                IsDeleted      = true,
                EmailConfirmed = true,
                CreatedOn      = DateTime.UtcNow.AddDays(-25),
            };

            await db.ApplicationUsers.AddAsync(testingUser);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.usersService.UnblockUserByIdAsync("UserId");

            //Assert
            Assert.True(actual);
            Assert.False(testingUser.IsDeleted);
        }
Ejemplo n.º 12
0
        void RemoveExpiredPending(ChessDbContext db)
        {
            var toRemove = new List <ChessGame>();

            foreach (var game in db.Games.AsQueryable().Where(x => x.ApprovalNeeded != ApprovedBy.None && x.ApprovalGiven != x.ApprovalNeeded))
            {
                var diff = DateTime.Now - game.Timestamp;
                if (diff.TotalDays > 3)
                {
                    var emb = new EmbedBuilder();
                    emb.Title       = $"Pending Game Rejected";
                    emb.Description = $"Game on {game.Timestamp:yyyy/MM/dd hh:mm:ss} was not approved in time, so has been refused";
                    emb.AddField("P1", game.Winner.Name, true);
                    emb.AddField("P2", game.Loser.Name, true);
                    emb.AddField("Draw?", game.Draw ? "Yes" : "No", true);
                    LogAdmin(emb);
                    toRemove.Add(game);
                }
            }
            foreach (var x in toRemove)
            {
                db.Games.Remove(x);
            }
            if (toRemove.Count > 0)
            {
                db.SaveChanges();
            }
        }
        public async Task GetFavouriteVideoViewModelsAsync_WithoutAnyVideos_ShouldReturnZeroVideosCount()
        {
            //Arrange
            var expectedResult = 0;

            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            moqUsersService.Setup(x => x.GetCurrentUserAsync())
            .ReturnsAsync(new ApplicationUser
            {
                Id       = "UserId",
                UserName = "******",
            });

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            //Act
            var actual = await this.videosService.GetFavouriteVideoViewModelsAsync(1, 10);

            //Assert
            Assert.Equal(expectedResult, actual.Count);
        }
Ejemplo n.º 14
0
        public async Task SeedAsync(ChessDbContext dbContext, IServiceProvider serviceProvider)
        {
            var roleManager = serviceProvider.GetRequiredService <RoleManager <IdentityRole> >();
            var userManager = serviceProvider.GetRequiredService <UserManager <ApplicationUser> >();

            await SeedRoleAsync(roleManager, userManager, GlobalConstants.AdministratorRoleName);
        }
Ejemplo n.º 15
0
 public UsersService(ChessDbContext context, IHttpContextAccessor contextAccessor, UserManager <ApplicationUser> userManager, IMapper mapper, IGamesService gamesService)
 {
     this.contextAccessor = contextAccessor;
     this.userManager     = userManager;
     this.mapper          = mapper;
     this.gamesService    = gamesService;
     this.context         = context;
 }
        public async Task GetLatestThreeVideosAsync_WithDeletedVideos_ShouldReturnCorrectCount()
        {
            //Arrange
            var expectedResult = 3;

            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            var testingVideos = new List <Video>
            {
                new Video {
                    Id = 1, Title = "Video1", IsDeleted = true, Link = "link1", CreatedOn = DateTime.UtcNow.AddDays(-25), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 2, Title = "Video2", IsDeleted = false, Link = "link2", CreatedOn = DateTime.UtcNow.AddDays(-25), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 3, Title = "Video3", IsDeleted = true, Link = "link3", CreatedOn = DateTime.UtcNow.AddDays(-25), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 4, Title = "Video4", IsDeleted = false, Link = "link4", CreatedOn = DateTime.UtcNow.AddDays(-20), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 5, Title = "Video5", IsDeleted = false, Link = "link5", CreatedOn = DateTime.UtcNow.AddDays(-5), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 6, Title = "Video6", IsDeleted = false, Link = "link6", CreatedOn = DateTime.UtcNow.AddDays(-2), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
            };

            await db.Videos.AddRangeAsync(testingVideos);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.videosService.GetLatestThreeVideosAsync();

            //Assert
            Assert.Equal(expectedResult, actual.Videos.Count);
        }
Ejemplo n.º 17
0
 static void Main()
 {
     using (ChessDbContext dbContext = new ChessDbContext())
     {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         Application.Run(new Form1(dbContext));
     }
 }
        public async Task GetFavouriteVideoViewModelsAsync_WithValidData_ShouldReturnCorrectCountOfFavoriteVideos()
        {
            //Arrange
            var expectedResult = 1;

            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            moqUsersService.Setup(x => x.GetCurrentUserAsync())
            .ReturnsAsync(new ApplicationUser
            {
                Id       = "UserId",
                UserName = "******",
            });

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            var userFavouriteVideos = new List <UserFavouriteVideo>
            {
                new UserFavouriteVideo {
                    Id = 1, VideoId = 2, ApplicationUserId = "UserId"
                },
            };

            var testingVideos = new List <Video>
            {
                new Video {
                    Id = 1, Title = "Video1", IsDeleted = true, Link = "link1", CreatedOn = DateTime.UtcNow.AddDays(-25)
                },
                new Video {
                    Id = 2, Title = "Video2", IsDeleted = false, Link = "link2", CreatedOn = DateTime.UtcNow.AddDays(-25), UserFavouriteVideos = userFavouriteVideos
                },
                new Video {
                    Id = 3, Title = "Video3", IsDeleted = true, Link = "link3", CreatedOn = DateTime.UtcNow.AddDays(-25)
                },
                new Video {
                    Id = 4, Title = "Video4", IsDeleted = false, Link = "link4", CreatedOn = DateTime.UtcNow.AddDays(-20)
                },
                new Video {
                    Id = 5, Title = "Video5", IsDeleted = false, Link = "link5", CreatedOn = DateTime.UtcNow.AddDays(-5)
                },
            };

            await db.Videos.AddRangeAsync(testingVideos);

            await db.SaveChangesAsync();

            //Act
            var actual = this.videosService.GetFavouriteVideoViewModelsAsync(1, 10).GetAwaiter().GetResult().ToList();

            //Assert
            Assert.Equal(expectedResult, actual.Count);
        }
        public async Task GetAllActiveVideosViewModelsAsync_WithValidData_ShouldReturnCorrectOrder()
        {
            //Arrange
            var expectedResult = new List <int> {
                5, 4, 2
            };;

            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            var testingVideos = new List <Video>
            {
                new Video {
                    Id = 1, Title = "Video1", IsDeleted = true, Link = "link1", CreatedOn = DateTime.UtcNow.AddDays(-25), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 2, Title = "Video2", IsDeleted = false, Link = "link2", CreatedOn = DateTime.UtcNow.AddDays(-25), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 3, Title = "Video3", IsDeleted = true, Link = "link3", CreatedOn = DateTime.UtcNow.AddDays(-25), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 4, Title = "Video4", IsDeleted = false, Link = "link4", CreatedOn = DateTime.UtcNow.AddDays(-20), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
                new Video {
                    Id = 5, Title = "Video5", IsDeleted = false, Link = "link5", CreatedOn = DateTime.UtcNow.AddDays(-5), Picture = new Picture {
                        Link = "PictureLink"
                    }
                },
            };

            await db.Videos.AddRangeAsync(testingVideos);

            await db.SaveChangesAsync();

            //Act
            var actual = this.videosService.GetAllActiveVideosViewModelsAsync(1, 10).GetAwaiter().GetResult().ToList();

            //Assert
            Assert.Equal(expectedResult[0], actual[0].Id);
            Assert.Equal(expectedResult[1], actual[1].Id);
            Assert.Equal(expectedResult[2], actual[2].Id);
        }
Ejemplo n.º 20
0
        public List <ChessGame> BuildEntries(ChessPlayer player, ChessDbContext db, DateTime date, bool ignoreOnline)
        {
            var games = db.GetGamesOnDate(player.Id, date);

            if (ignoreOnline)
            {
                return(games
                       .Where(x => x.ApprovalNeeded == ApprovedBy.None || x.ApprovalNeeded == ApprovedBy.Moderator)
                       .ToList());
            }
            return(games.ToList());
        }
Ejemplo n.º 21
0
 void SetConnectedRoles(ChessDbContext db)
 {
     foreach (var player in db.Players.AsQueryable().Where(x => !x.IsBuiltInAccount).ToList())
     {
         if (player.ConnectedAccount > 0)
         {
             var chsServer = Program.ChessGuild.GetUser(player.ConnectedAccount);
             if (chsServer != null)
             {
                 if (!player.Removed)
                 {
                     chsServer?.AddRoleAsync(ChsPlayer);
                 }
                 else
                 {
                     chsServer?.RemoveRoleAsync(ChsPlayer);
                 }
                 if (player.Permission.HasFlag(ChessPerm.Moderator))
                 {
                     chsServer?.AddRoleAsync(ChsMod);
                 }
                 else
                 {
                     chsServer?.RemoveRoleAsync(ChsMod);
                 }
                 if (player.Permission == ChessPerm.Arbiter)
                 {
                     chsServer?.AddRoleAsync(ChsArbiter);
                 }
                 else
                 {
                     chsServer?.RemoveRoleAsync(ChsArbiter);
                 }
                 if (player.Permission.HasFlag(ChessPerm.Justice))
                 {
                     chsServer?.AddRoleAsync(ChsJustice);
                 }
                 else
                 {
                     chsServer?.RemoveRoleAsync(ChsJustice);
                 }
                 if (player.Permission == ChessPerm.ChiefJustice)
                 {
                     chsServer?.AddRoleAsync(ChsChiefJustice);
                 }
                 else
                 {
                     chsServer?.RemoveRoleAsync(ChsChiefJustice);
                 }
             }
         }
     }
 }
Ejemplo n.º 22
0
        void SendRatingChanges(ChessDbContext db)
        {
            if (Program.DailyValidateFailed())
            {
                return;
            }
            EmbedBuilder builder = new EmbedBuilder();

            builder.WithTitle("Leaderboard Changes");
            builder.WithColor(Color.Orange);
            foreach (var usr in db.Players.AsQueryable().Where(x => !x.IsBuiltInAccount).ToList().OrderByDescending(x => x.Rating))
            {
                // since this is happening on saturday morning..
                var yesturday  = DateTime.Now.AddDays(-1);
                var score      = usr.GetScoreOnDay(yesturday);
                int diffb      = 0;
                int weekBefore = 0;
                do
                {
                    diffb     -= 7;
                    weekBefore = usr.GetScoreOnDay(yesturday.AddDays(diffb));
                } while (weekBefore == 0 && diffb > -100);
                var gamesPlayed = BuildEntries(usr, db, yesturday, false);
                if (gamesPlayed.Count > 0 && score > 0)
                {     // dont bother adding them if no games were played
                    if (weekBefore == 0)
                    { // never playedd last week
                        builder.AddField(usr.Name, $"{score}\nN/A Previous");
                    }
                    else
                    {
                        int diff = score - weekBefore;
                        if (diff > 0)
                        {
                            builder.AddField(usr.Name, $"{score}\n <:small_green_triangle:668750922536452106> {diff}");
                        }
                        else if (diff < 0)
                        {
                            builder.AddField(usr.Name, $"{score}\n :small_red_triangle_down: {Math.Abs(diff)}");
                        }
                        else
                        {
                            builder.AddField(usr.Name, $"{score}\n :small_orange_diamond: N/C");
                        }
                    }
                }
            }
            if (builder.Fields.Count > 0)
            {
                LogChnl(builder, GameChannel);
            }
        }
Ejemplo n.º 23
0
 void setOnlineTokens(ChessDbContext db)
 {
     foreach (var chs in db.Players.AsQueryable().Where(x => x.DiscordAccount != cast(0)).ToList())
     {
         var usr = Program.GetUserOrDefault(chs.ConnectedAccount);
         if (usr == null)
         {
             continue;
         }
         var token = usr.Tokens.FirstOrDefault(x => x.Name == "onlinechesstoken");
         if (token != null)
         {
             chs.VerifyOnlineReference = token.Value;
         }
     }
 }
Ejemplo n.º 24
0
        public async Task GetCountOfAllUsersAsync_WithValidData_ShouldReturnCorrectCount()
        {
            //Arrange
            var expectedResult = 4;

            var moqHttpContext = new Mock <IHttpContextAccessor>();
            var userStore      = new Mock <IUserStore <ApplicationUser> >();
            var userManager    = new Mock <UserManager <ApplicationUser> >(userStore.Object, null, null, null, null, null, null, null, null);
            var moqGameService = new Mock <IGamesService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.usersService = new UsersService(db, moqHttpContext.Object, userManager.Object, mapper, moqGameService.Object);

            var testingUsers = new List <ApplicationUser>
            {
                new ApplicationUser {
                    Id = "Id1", UserName = "******", IsDeleted = false, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-25)
                },
                new ApplicationUser {
                    Id = "Id2", UserName = "******", IsDeleted = false, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-20)
                },
                new ApplicationUser {
                    Id = "Id3", UserName = "******", IsDeleted = false, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-5)
                },
                new ApplicationUser {
                    Id = "Id4", UserName = "******", IsDeleted = true, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-5)
                },
                new ApplicationUser {
                    Id = "Id5", UserName = "******", IsDeleted = false, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-18)
                },
            };

            await db.ApplicationUsers.AddRangeAsync(testingUsers);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.usersService.GetCountOfAllUsersAsync();

            //Assert
            Assert.Equal(expectedResult, actual);
        }
        public async Task AddToFavoritesAsync_WithCurrentUserEqualsToNull_ShouldThrowAndInvalidOperationException()
        {
            //Arrange
            var expectedErrorMessage = "Current user can't be null";

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            var moqUserService = new Mock <IUsersService>();

            this.favouritesService = new FavouritesService(db, moqUserService.Object);

            //Act and assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => this.favouritesService.AddToFavoritesAsync(1));

            Assert.Equal(expectedErrorMessage, ex.Message);
        }
Ejemplo n.º 26
0
        public DateTime getLastPresentDate(ChessDbContext db, ChessPlayer player, bool doLastPlayed = false)
        {
            if (player.DateLastPresent.HasValue && doLastPlayed == false)
            {
                return(player.DateLastPresent.Value);
            }
            DateTime lastPlayed     = DateTime.MinValue;
            var      gamesInvolving = db.GetCurrentGamesWith(player);

            foreach (var entry in gamesInvolving)
            {
                if (entry.Timestamp > lastPlayed)
                {
                    lastPlayed = entry.Timestamp;
                }
            }
            return(lastPlayed);
        }
Ejemplo n.º 27
0
        public async Task GetAllBlockedUserViewModelsAsync_WithValidDAta_ShouldReturnCorrectOrder()
        {
            //Arrange
            var expected = new List <string> {
                "Id3", "Id2", "Id1"
            };

            var moqHttpContext = new Mock <IHttpContextAccessor>();
            var userStore      = new Mock <IUserStore <ApplicationUser> >();
            var userManager    = new Mock <UserManager <ApplicationUser> >(userStore.Object, null, null, null, null, null, null, null, null);
            var moqGameService = new Mock <IGamesService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.usersService = new UsersService(db, moqHttpContext.Object, userManager.Object, mapper, moqGameService.Object);


            var testingUsers = new List <ApplicationUser>
            {
                new ApplicationUser {
                    Id = "Id1", UserName = "******", IsDeleted = true, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-25)
                },
                new ApplicationUser {
                    Id = "Id2", UserName = "******", IsDeleted = true, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-20)
                },
                new ApplicationUser {
                    Id = "Id3", UserName = "******", IsDeleted = true, EmailConfirmed = true, CreatedOn = DateTime.UtcNow.AddDays(-5)
                },
            };

            await db.ApplicationUsers.AddRangeAsync(testingUsers);

            await db.SaveChangesAsync();

            //Act
            var actual = this.usersService.GetAllBlockedUserViewModelsAsync(1, 10).GetAwaiter().GetResult().ToList();

            //Assert
            Assert.Equal(expected[0], actual[0].Id);
            Assert.Equal(expected[1], actual[1].Id);
            Assert.Equal(expected[2], actual[2].Id);
        }
Ejemplo n.º 28
0
        void CheckLastDatePlayed(ChessDbContext db)
        {
            if (Program.DailyValidateFailed())
            {
                return;
            }
            bool any = false;

            foreach (var player in db.Players.AsQueryable().Where(x => !x.IsBuiltInAccount && x.Rating > 100).ToList())
            {
                var lastPresent    = getLastPresentDate(db, player);
                var lastPlayed     = getLastPresentDate(db, player, true); // will ignore last present.
                var presentFridays = FridaysBetween(lastPresent, DateTime.Now);
                if (lastPresent == DateTime.MinValue)
                {
                    presentFridays = 0;
                }
                var playedFridays = FridaysBetween(lastPlayed, DateTime.Now);
                if (lastPlayed == DateTime.MinValue)
                {
                    playedFridays = 0;
                }
                bool sent = false;
                if (presentFridays >= 3)
                {
                    sent = true;
                    setAutomatic(player, -15, $"Not present consc. three weeks (last {lastPresent.ToShortDateString()})");
                }
                if (playedFridays >= 3)
                {
                    sent = true;
                    setAutomatic(player, -5, $"Not played consc. three weeks (last {lastPlayed.ToShortDateString()})");
                }
                any = any || sent;
                if (sent)
                {
                    Thread.Sleep(1500);
                }
            }
            if (any)
            {
                db.SaveChanges();
            }
        }
        public async Task DeleteVideoByIdAsync_WithInvalidVideoId_ShouldThrowArgumentException()
        {
            //Arrange
            var expectedErrorMessage = "Video with the given id doesn't exist!";

            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            //Act and assert
            var ex = await Assert.ThrowsAsync <ArgumentException>(() => this.videosService.DeleteVideoByIdAsync(1));

            Assert.Equal(expectedErrorMessage, ex.Message);
        }
        public async Task GetCountOfAllVideosAsync_WithValidData_ShouldReturnCorrectCount()
        {
            //Arrange
            var expectedResult = 5;

            var moqPictureService = new Mock <IPicturesService>();
            var moqUsersService   = new Mock <IUsersService>();

            var option = new DbContextOptionsBuilder <ChessDbContext>()
                         .UseInMemoryDatabase(databaseName: Guid.NewGuid().ToString()).Options;
            var db = new ChessDbContext(option);

            this.videosService = new VideosService(db, moqPictureService.Object, mapper, moqUsersService.Object);

            var testingVideos = new List <Video>
            {
                new Video {
                    Id = 1, Title = "Video1", IsDeleted = false, Link = "link1"
                },
                new Video {
                    Id = 2, Title = "Video2", IsDeleted = false, Link = "link2"
                },
                new Video {
                    Id = 3, Title = "Video3", IsDeleted = false, Link = "link3"
                },
                new Video {
                    Id = 4, Title = "Video4", IsDeleted = false, Link = "link4"
                },
                new Video {
                    Id = 5, Title = "Video5", IsDeleted = true, Link = "link5"
                },
            };

            await db.Videos.AddRangeAsync(testingVideos);

            await db.SaveChangesAsync();

            //Act
            var actual = await this.videosService.GetCountOfAllVideosAsync();

            //Assert
            Assert.Equal(expectedResult, actual);
        }