// Kyoo - A portable and vast media library solution. // Copyright (c) Kyoo. // // See AUTHORS.md and LICENSE file in the project root for full license information. // // Kyoo is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // // Kyoo is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Kyoo. If not, see . using System; using System.Collections.Generic; using Kyoo.Abstractions.Models; using Kyoo.Postgresql; namespace Kyoo.Tests { public static class TestSample { private static readonly Dictionary> NewSamples = new() { { typeof(Collection), () => new Collection { ID = 2, Slug = "new-collection", Name = "New Collection", Overview = "A collection created by new sample", Images = new Dictionary { [Images.Thumbnail] = "thumbnail" } } }, { typeof(Show), () => new Show { ID = 2, Slug = "new-show", Name = "New Show", Overview = "overview", Status = Status.Planned, StartAir = new DateTime(2011, 1, 1).ToUniversalTime(), EndAir = new DateTime(2011, 1, 1).ToUniversalTime(), Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, IsMovie = false, Studio = null } }, { typeof(Season), () => new Season { ID = 2, ShowID = 1, ShowSlug = Get().Slug, Name = "New season", Overview = "New overview", EndDate = new DateTime(2000, 10, 10).ToUniversalTime(), SeasonNumber = 2, StartDate = new DateTime(2010, 10, 10).ToUniversalTime(), Images = new Dictionary { [Images.Logo] = "logo" } } }, { typeof(Episode), () => new Episode { ID = 2, ShowID = 1, ShowSlug = Get().Slug, SeasonID = 1, SeasonNumber = Get().SeasonNumber, EpisodeNumber = 3, AbsoluteNumber = 4, Path = "/episode-path", Name = "New Episode Title", ReleaseDate = new DateTime(2000, 10, 10).ToUniversalTime(), Overview = "new episode overview", Images = new Dictionary { [Images.Logo] = "new episode logo" } } }, { typeof(Provider), () => new Provider { ID = 2, Slug = "new-provider", Name = "Provider NewSample", Images = new Dictionary { [Images.Logo] = "logo" } } }, { typeof(People), () => new People { ID = 2, Slug = "new-person-name", Name = "New person name", Images = new Dictionary { [Images.Logo] = "Old Logo", [Images.Poster] = "Old poster" } } } }; private static readonly Dictionary> Samples = new() { { typeof(Library), () => new Library { ID = 1, Slug = "deck", Name = "Deck", Paths = new[] { "/path/to/deck" } } }, { typeof(Collection), () => new Collection { ID = 1, Slug = "collection", Name = "Collection", Overview = "A nice collection for tests", Images = new Dictionary { [Images.Poster] = "Poster" } } }, { typeof(Show), () => new Show { ID = 1, Slug = "anohana", Name = "Anohana: The Flower We Saw That Day", Aliases = new[] { "Ano Hi Mita Hana no Namae o Bokutachi wa Mada Shiranai.", "AnoHana", "We Still Don't Know the Name of the Flower We Saw That Day." }, Overview = "When Yadomi Jinta was a child, he was a central piece in a group of close friends. " + "In time, however, these childhood friends drifted apart, and when they became high " + "school students, they had long ceased to think of each other as friends.", Status = Status.Finished, StudioID = 1, StartAir = new DateTime(2011, 1, 1).ToUniversalTime(), EndAir = new DateTime(2011, 1, 1).ToUniversalTime(), Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, IsMovie = false, Studio = null } }, { typeof(Season), () => new Season { ID = 1, ShowSlug = "anohana", ShowID = 1, SeasonNumber = 1, Name = "Season 1", Overview = "The first season", StartDate = new DateTime(2020, 06, 05).ToUniversalTime(), EndDate = new DateTime(2020, 07, 05).ToUniversalTime(), Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, } }, { typeof(Episode), () => new Episode { ID = 1, ShowSlug = "anohana", ShowID = 1, SeasonID = 1, SeasonNumber = 1, EpisodeNumber = 1, AbsoluteNumber = 1, Path = "/home/kyoo/anohana-s1e1", Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, Name = "Episode 1", Overview = "Summary of the first episode", ReleaseDate = new DateTime(2020, 06, 05).ToUniversalTime() } }, { typeof(People), () => new People { ID = 1, Slug = "the-actor", Name = "The Actor", Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, } }, { typeof(Studio), () => new Studio { ID = 1, Slug = "hyper-studio", Name = "Hyper studio", } }, { typeof(Genre), () => new Genre { ID = 1, Slug = "action", Name = "Action" } }, { typeof(Provider), () => new Provider { ID = 1, Slug = "tvdb", Name = "The TVDB", Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "path/tvdb.svg", [Images.Thumbnail] = "Thumbnail" } } }, { typeof(User), () => new User { ID = 1, Slug = "user", Username = "User", Email = "user@im-a-user.com", Password = "MD5-encoded", Permissions = new[] { "overall.read" } } } }; public static T Get() { return (T)Samples[typeof(T)](); } public static T GetNew() { return (T)NewSamples[typeof(T)](); } public static void FillDatabase(DatabaseContext context) { Collection collection = Get(); collection.ID = 0; context.Collections.Add(collection); Show show = Get(); show.ID = 0; show.StudioID = 0; context.Shows.Add(show); Season season = Get(); season.ID = 0; season.ShowID = 0; season.Show = show; context.Seasons.Add(season); Episode episode = Get(); episode.ID = 0; episode.ShowID = 0; episode.Show = show; episode.SeasonID = 0; episode.Season = season; context.Episodes.Add(episode); Studio studio = Get(); studio.ID = 0; studio.Shows = new List { show }; context.Studios.Add(studio); Genre genre = Get(); genre.ID = 0; genre.Shows = new List { show }; context.Genres.Add(genre); People people = Get(); people.ID = 0; context.People.Add(people); Library library = Get(); library.ID = 0; library.Collections = new List { collection }; context.Libraries.Add(library); User user = Get(); user.ID = 0; context.Users.Add(user); context.SaveChanges(); } public static Episode GetAbsoluteEpisode() { return new() { ID = 2, ShowSlug = "anohana", ShowID = 1, SeasonNumber = null, EpisodeNumber = null, AbsoluteNumber = 3, Path = "/home/kyoo/anohana-3", Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, Name = "Episode 3", Overview = "Summary of the third absolute episode", ReleaseDate = new DateTime(2020, 06, 05).ToUniversalTime() }; } public static Episode GetMovieEpisode() { return new() { ID = 3, ShowSlug = "anohana", ShowID = 1, Path = "/home/kyoo/john-wick", Images = new Dictionary { [Images.Poster] = "Poster", [Images.Logo] = "Logo", [Images.Thumbnail] = "Thumbnail" }, Name = "John wick", Overview = "A movie episode test", ReleaseDate = new DateTime(1595, 05, 12).ToUniversalTime() }; } } }