public void ImageReplaceMultiTest() { using (var temp = TempDirectory.Create()) { var db = new GameDatabase(temp.TempPath); db.OpenDatabase(); var game = new Game() { GameId = "testid", Name = "Test Game" }; var origIcon = db.AddFile(PlayniteUITests.CreateFakeFile(), game.Id); var origImage = db.AddFile(PlayniteUITests.CreateFakeFile(), game.Id); var origBackground = db.AddFile(PlayniteUITests.CreateFakeFile(), game.Id); game.Icon = origIcon; game.CoverImage = origImage; game.BackgroundImage = origBackground; db.Games.Add(game); game = new Game() { GameId = "testid2", Name = "Test Game 2" }; origIcon = db.AddFile(PlayniteUITests.CreateFakeFile(), game.Id); origImage = db.AddFile(PlayniteUITests.CreateFakeFile(), game.Id); origBackground = db.AddFile(PlayniteUITests.CreateFakeFile(), game.Id); game.Icon = origIcon; game.CoverImage = origImage; game.BackgroundImage = origBackground; db.Games.Add(game); var newIcon = PlayniteUITests.CreateFakeFile(); var newImage = PlayniteUITests.CreateFakeFile(); var newBackground = PlayniteUITests.CreateFakeFile(); // Replaces all images for all games var games = db.Games.ToList(); var model = new GameEditViewModel(games, db, new MockWindowFactory(), new MockDialogsFactory(), new MockResourceProvider(), null); model.EditingGame.Icon = newIcon.OriginalUrl; model.EditingGame.CoverImage = newImage.OriginalUrl; model.EditingGame.BackgroundImage = newBackground.OriginalUrl; model.ConfirmDialog(); Assert.AreEqual(3, Directory.GetFiles(db.GetFileStoragePath(games[0].Id)).Count()); Assert.AreEqual(3, Directory.GetFiles(db.GetFileStoragePath(games[1].Id)).Count()); CollectionAssert.AreEqual(newIcon.Content, File.ReadAllBytes(db.GetFullFilePath(games[0].Icon))); CollectionAssert.AreEqual(newImage.Content, File.ReadAllBytes(db.GetFullFilePath(games[0].CoverImage))); CollectionAssert.AreEqual(newBackground.Content, File.ReadAllBytes(db.GetFullFilePath(games[0].BackgroundImage))); CollectionAssert.AreEqual(newIcon.Content, File.ReadAllBytes(db.GetFullFilePath(games[1].Icon))); CollectionAssert.AreEqual(newImage.Content, File.ReadAllBytes(db.GetFullFilePath(games[1].CoverImage))); CollectionAssert.AreEqual(newBackground.Content, File.ReadAllBytes(db.GetFullFilePath(games[1].BackgroundImage))); } }
public void ImageReplaceTest() { using (var temp = TempDirectory.Create()) { var db = new GameDatabase(temp.TempPath); db.OpenDatabase(); var game = new Game() { GameId = "testid", Name = "Test Game" }; var origIcon = db.AddFile(PlayniteTests.GenerateFakeFile(), game.Id); var origImage = db.AddFile(PlayniteTests.GenerateFakeFile(), game.Id); var origBackground = db.AddFile(PlayniteTests.GenerateFakeFile(), game.Id); game.Icon = origIcon; game.CoverImage = origImage; game.BackgroundImage = origBackground; db.Games.Add(game); var newIcon = PlayniteTests.GenerateFakeFile(); var newImage = PlayniteTests.GenerateFakeFile(); var newBackground = PlayniteTests.GenerateFakeFile(); File.WriteAllBytes(Path.Combine(temp.TempPath, newIcon.FileName), newIcon.Content); File.WriteAllBytes(Path.Combine(temp.TempPath, newImage.FileName), newImage.Content); File.WriteAllBytes(Path.Combine(temp.TempPath, newBackground.FileName), newBackground.Content); // Images are replaced var model = new GameEditViewModel(game, db, new MockWindowFactory(), new MockDialogsFactory(), new MockResourceProvider(), null); model.EditingGame.Icon = Path.Combine(temp.TempPath, newIcon.FileName); model.EditingGame.CoverImage = Path.Combine(temp.TempPath, newImage.FileName); model.EditingGame.BackgroundImage = Path.Combine(temp.TempPath, newBackground.FileName); model.ConfirmDialog(); Assert.AreNotEqual(game.Icon, origIcon); Assert.AreNotEqual(game.CoverImage, origImage); Assert.AreNotEqual(game.BackgroundImage, origBackground); var dbFiles = Directory.GetFiles(db.GetFileStoragePath(game.Id)); Assert.AreEqual(3, dbFiles.Count()); CollectionAssert.AreEqual(newIcon.Content, File.ReadAllBytes(db.GetFullFilePath(game.Icon))); CollectionAssert.AreEqual(newImage.Content, File.ReadAllBytes(db.GetFullFilePath(game.CoverImage))); CollectionAssert.AreEqual(newBackground.Content, File.ReadAllBytes(db.GetFullFilePath(game.BackgroundImage))); } }
public void ImageReplaceTest() { var path = Path.Combine(PlayniteUITests.TempPath, "imagereplace.db"); FileSystem.DeleteFile(path); var db = new GameDatabase(null); using (db.OpenDatabase(path)) { var origIcon = PlayniteUITests.CreateFakeFile(); var origImage = PlayniteUITests.CreateFakeFile(); var origBackground = PlayniteUITests.CreateFakeFile(); db.AddFile(origIcon.FileName, origIcon.FileName, origIcon.Content); db.AddFile(origImage.FileName, origImage.FileName, origImage.Content); db.AddFile(origBackground.FileName, origBackground.FileName, origBackground.Content); var game = new Game() { GameId = "testid", Name = "Test Game", CoverImage = origImage.FileName, Icon = origIcon.FileName, BackgroundImage = origBackground.FileName }; db.AddGame(game); var newIcon = PlayniteUITests.CreateFakeFile(); var newImage = PlayniteUITests.CreateFakeFile(); var newBackground = PlayniteUITests.CreateFakeFile(); // Images are replaced var model = new GameEditViewModel(game, db, new MockWindowFactory(), new MockDialogsFactory(), new MockResourceProvider(), null); model.EditingGame.Icon = newIcon.FileId; model.EditingGame.CoverImage = newImage.FileId; model.EditingGame.BackgroundImage = newBackground.FileId; model.ConfirmDialog(); Assert.AreNotEqual(game.Icon, origIcon.FileName); Assert.AreNotEqual(game.CoverImage, origImage.FileName); Assert.AreNotEqual(game.BackgroundImage, origBackground.FileName); Assert.AreNotEqual(game.Icon, newIcon.FileId); Assert.AreNotEqual(game.CoverImage, newImage.FileId); Assert.AreNotEqual(game.BackgroundImage, newBackground.FileId); var dbFiles = db.Database.FileStorage.FindAll().ToList(); Assert.AreEqual(3, dbFiles.Count()); using (var str = db.GetFileStream(game.Icon)) { CollectionAssert.AreEqual(newIcon.Content, str.ToArray()); } using (var str = db.GetFileStream(game.CoverImage)) { CollectionAssert.AreEqual(newImage.Content, str.ToArray()); } using (var str = db.GetFileStream(game.BackgroundImage)) { CollectionAssert.AreEqual(newBackground.Content, str.ToArray()); } // Duplicates are kept and not replaced var currentIcon = game.Icon; var currentImage = game.CoverImage; var currentBack = game.BackgroundImage; model = new GameEditViewModel(game, db, new MockWindowFactory(), new MockDialogsFactory(), new MockResourceProvider(), null); model.EditingGame.Icon = newIcon.FileId; model.EditingGame.CoverImage = newImage.FileId; model.EditingGame.BackgroundImage = newBackground.FileId; model.ConfirmDialog(); dbFiles = db.Database.FileStorage.FindAll().ToList(); Assert.AreEqual(3, dbFiles.Count()); Assert.AreEqual(game.Icon, currentIcon); Assert.AreEqual(game.CoverImage, currentImage); Assert.AreEqual(game.BackgroundImage, currentBack); } }
public void ImageReplaceMultiTest() { var path = Path.Combine(PlayniteUITests.TempPath, "imagereplacemulti.db"); FileSystem.DeleteFile(path); var db = new GameDatabase(null); using (db.OpenDatabase(path)) { var origIcon = PlayniteUITests.CreateFakeFile(); var origImage = PlayniteUITests.CreateFakeFile(); var origBackground = PlayniteUITests.CreateFakeFile(); db.AddFile(origIcon.FileName, origIcon.FileName, origIcon.Content); db.AddFile(origImage.FileName, origImage.FileName, origImage.Content); db.AddFile(origBackground.FileName, origBackground.FileName, origBackground.Content); db.AddGame(new Game() { GameId = "testid", Name = "Test Game", CoverImage = origImage.FileName, Icon = origIcon.FileName, BackgroundImage = origBackground.FileName }); origIcon = PlayniteUITests.CreateFakeFile(); origImage = PlayniteUITests.CreateFakeFile(); origBackground = PlayniteUITests.CreateFakeFile(); db.AddFile(origIcon.FileName, origIcon.FileName, origIcon.Content); db.AddFile(origImage.FileName, origImage.FileName, origImage.Content); db.AddFile(origBackground.FileName, origBackground.FileName, origBackground.Content); db.AddGame(new Game() { GameId = "testid2", Name = "Test Game 2", CoverImage = origImage.FileName, Icon = origIcon.FileName, BackgroundImage = origBackground.FileName }); Assert.AreEqual(6, db.Database.FileStorage.FindAll().ToList().Count()); var newIcon = PlayniteUITests.CreateFakeFile(); var newImage = PlayniteUITests.CreateFakeFile(); var newBackground = PlayniteUITests.CreateFakeFile(); // Replaces all images for all games var games = db.GamesCollection.FindAll().ToList(); var model = new GameEditViewModel(games, db, new MockWindowFactory(), new MockDialogsFactory(), new MockResourceProvider(), null); model.EditingGame.Icon = newIcon.FileId; model.EditingGame.CoverImage = newImage.FileId; model.EditingGame.BackgroundImage = newBackground.FileId; model.ConfirmDialog(); var dbFiles = db.Database.FileStorage.FindAll().ToList(); Assert.AreEqual(3, dbFiles.Count()); games = db.GamesCollection.FindAll().ToList(); foreach (var game in games) { StringAssert.StartsWith("images/custom/", game.Icon); StringAssert.StartsWith("images/custom/", game.CoverImage); StringAssert.StartsWith("images/custom/", game.BackgroundImage); } Assert.AreEqual(games[0].Icon, games[1].Icon); Assert.AreEqual(games[0].CoverImage, games[1].CoverImage); Assert.AreEqual(games[0].BackgroundImage, games[1].BackgroundImage); // Replaces only non-duplicate images newIcon = PlayniteUITests.CreateFakeFile(); newImage = PlayniteUITests.CreateFakeFile(); newBackground = PlayniteUITests.CreateFakeFile(); db.AddFile(newIcon.FileName, newIcon.FileName, newIcon.Content); db.AddFile(newImage.FileName, newImage.FileName, newImage.Content); db.AddFile(newBackground.FileName, newBackground.FileName, newBackground.Content); games[0].Icon = newIcon.FileName; games[0].CoverImage = newImage.FileName; games[0].BackgroundImage = newBackground.FileName; db.UpdateGameInDatabase(games[0]); Assert.AreEqual(6, db.Database.FileStorage.FindAll().ToList().Count()); games = db.GamesCollection.FindAll().ToList(); model = new GameEditViewModel(games, db, new MockWindowFactory(), new MockDialogsFactory(), new MockResourceProvider(), null); model.EditingGame.Icon = newIcon.FileId; model.EditingGame.CoverImage = newImage.FileId; model.EditingGame.BackgroundImage = newBackground.FileId; model.ConfirmDialog(); Assert.AreEqual(3, db.Database.FileStorage.FindAll().ToList().Count()); games = db.GamesCollection.FindAll().ToList(); foreach (var game in games) { Assert.AreEqual(newIcon.FileName, game.Icon); Assert.AreEqual(newImage.FileName, game.CoverImage); Assert.AreEqual(newBackground.FileName, game.BackgroundImage); } } }