-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Working on separation of integration part of tests from unit part
- Loading branch information
Showing
22 changed files
with
1,005 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
using NUnit.Framework.Internal; | ||
|
||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class AuthorsCirclesTests : DatabaseTestsBase | ||
{ | ||
// depends on PushAuthorsTest(1) | ||
// depends on PushCirclesTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushAuthorsCirclesTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var authors = db.Authors.Include(a => a.AuthorNames).ToHashSet(); | ||
|
||
var ym = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Yukino Minato")); | ||
var asanagi = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Asanagi")); | ||
|
||
var circles = db.Circles.Include(c => c.Titles).ToHashSet(); | ||
|
||
// or by searching through relative table: | ||
// var cts = db.CirclesTitles.ToHashSet(); | ||
// var nnntCt = cts.FirstOrDefault(ct => ct.Text == "noraneko-no-tama"); | ||
// var nnnt = circles.FirstOrDefault(c => c.Id == nnntCt.Id); | ||
|
||
var nnnt = circles.FirstOrDefault(c => c.Titles.Any(ct => ct.Text == "noraneko-no-tama")); | ||
var fatalpulse = circles.FirstOrDefault(c => c.Titles.Any(ct => ct.Text == "Fatalpulse")); | ||
|
||
ym!.Circles.Add(nnnt!); | ||
fatalpulse!.Authors.Add(asanagi!); | ||
|
||
db.SaveChanges(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
using OpenHentai.Roles; | ||
|
||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class AuthorsCreationsTests : DatabaseTestsBase | ||
{ | ||
// depends on PushAuthorsTest(1) | ||
// depends on PushMangaTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushAuthorsCreationsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var authors = db.Authors.Include(a => a.AuthorNames).ToHashSet(); | ||
|
||
var ym = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Yukino Minato")); | ||
var asanagi = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Asanagi")); | ||
|
||
var manga = db.Manga.Include(m => m.Titles).ToHashSet(); | ||
|
||
var ymM1 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "Monokemono Shoya")); | ||
var ymM2 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "Monokemono")); | ||
var aM1 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "VictimGirls 24")); | ||
var aM2 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "VictimGirls 25")); | ||
|
||
ym!.AddCreation(ymM1!, AuthorRole.MainArtist); | ||
ym.AddCreation(ymM2!, AuthorRole.MainArtist); | ||
aM1!.AddAuthor(asanagi!, AuthorRole.MainArtist); | ||
aM2!.AddAuthor(asanagi!, AuthorRole.MainArtist); | ||
|
||
db.SaveChanges(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class AuthorsTagsTests : DatabaseTestsBase | ||
{ | ||
// depends on PushTagsTest(1) | ||
// depends on PushAuthorsTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushAuthorsTagsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var authors = db.Authors.Include(a => a.AuthorNames).ToHashSet(); | ||
|
||
var ym = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Yukino Minato")); | ||
var asanagi = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Asanagi")); | ||
|
||
var tags = db.Tags.Include(tag => tag.Creatures).ToHashSet(); | ||
|
||
var loliTag = tags.FirstOrDefault(t => t.Value == "Loli"); | ||
var alTag = tags.FirstOrDefault(t => t.Value == "Azur Lane"); | ||
var gfTag = tags.FirstOrDefault(t => t.Value == "Granblue Fantasy"); | ||
|
||
ym!.Tags.Add(loliTag!); | ||
alTag!.Creatures.Add(asanagi!); | ||
gfTag!.Creatures.Add(asanagi!); | ||
|
||
db.SaveChanges(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,108 @@ | ||
using OpenHentai.Creatures; | ||
using OpenHentai.Descriptors; | ||
using OpenHentai.Relations; | ||
using OpenHentai.Statuses; | ||
|
||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class AuthorsTests : DatabaseTestsBase | ||
{ | ||
#region Push tests | ||
|
||
[Test] | ||
[Order(1)] | ||
public void PushAuthorsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
// using templates for unknown values | ||
var ym = new Author("default::Yukino Minato") | ||
{ | ||
Birthday = new(1900, 01, 01), | ||
Age = 999, | ||
Gender = Gender.Female | ||
}; | ||
ym.AddAuthorName("ja-JP::雪野 みなと"); | ||
ym.AddName("default::Yukinominato"); | ||
ym.Description.Add(new("en-US::Popular loli doujinshi artist")); | ||
ym.Media.Add(new("https://pbs.twimg.com/profile_images/1587354886751993856/vSCQYP59_400x400.jpg", MediaType.Image)); | ||
ym.ExternalLinks.Add(new("twitter", "https://twitter.com/straycat_2018") | ||
{ | ||
OfficialStatus = OfficialStatus.Official, | ||
PaidStatus = PaidStatus.Free | ||
}); | ||
ym.ExternalLinks.Add(new("fanbox", "https://noraneko-no-tama.fanbox.cc/") | ||
{ | ||
OfficialStatus = OfficialStatus.Official, | ||
PaidStatus = PaidStatus.Paid | ||
}); | ||
|
||
var asanagi = new Author("default::Asanagi") | ||
{ | ||
Birthday = new(1900, 01, 01), | ||
Age = 999, | ||
Gender = Gender.Male | ||
}; | ||
asanagi.AddAuthorName("ja-JP::朝凪"); | ||
asanagi.AddName("default::asanagi"); | ||
asanagi.Description.Add(new("en-US::Popular mindbreak artist")); | ||
asanagi.Media.Add(new("https://pbs.twimg.com/profile_images/991625674757570562/MHkJ_qqa_400x400.jpg", MediaType.Image)); | ||
asanagi.ExternalLinks.Add(new("twitter", "https://twitter.com/Victim_Girls") | ||
{ | ||
OfficialStatus = OfficialStatus.Official, | ||
PaidStatus = PaidStatus.Free | ||
}); | ||
asanagi.ExternalLinks.Add(new("fantia", "https://fantia.jp/asanagi") | ||
{ | ||
OfficialStatus = OfficialStatus.Official, | ||
PaidStatus = PaidStatus.Paid | ||
}); | ||
|
||
db.Authors.AddRange(ym, asanagi); | ||
|
||
db.SaveChanges(); | ||
} | ||
|
||
// depends on PushAuthorsTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushAuthorsRelationsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var authors = db.Authors.Include(a => a.AuthorNames).ToHashSet(); | ||
|
||
var ym = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Yukino Minato")); | ||
var asanagi = authors.FirstOrDefault(a => a.AuthorNames.Any(an => an.Text == "Asanagi")); | ||
|
||
ym!.AddRelation(asanagi!, CreatureRelations.Unknown); | ||
asanagi!.AddRelation(ym, CreatureRelations.Friend); | ||
|
||
db.SaveChanges(); | ||
} | ||
|
||
#endregion | ||
|
||
#region Read tests | ||
|
||
[Test] | ||
[Order(10)] | ||
public async Task ReadAuthorsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var authors = db.Authors.Include(a => a.AuthorNames) | ||
.Include(a => a.Circles) | ||
.Include(a => a.Creations) | ||
.ThenInclude(ac => ac.Related) | ||
.Include(a => a.Names) | ||
.Include(a => a.Tags) | ||
.Include(a => a.Relations) | ||
.ThenInclude(cr => cr.Related); | ||
|
||
var json = await SerializeEntityAsync(authors).ConfigureAwait(false); | ||
var deserialized = await DeserializeEntityAsync<IEnumerable<Author>>(json).ConfigureAwait(false); | ||
} | ||
|
||
#endregion | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
using OpenHentai.Roles; | ||
|
||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class CharactersCreationsTests : DatabaseTestsBase | ||
{ | ||
// depends on PushCharactersTest(1) | ||
// depends on PushMangaTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushCharactersCreationsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var characters = db.Characters.Include(a => a.Names).ToHashSet(); | ||
|
||
var ymM1M = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Unnamed male")); | ||
var ymM2F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Akaname")); | ||
var aM1F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Ajax")); | ||
var aM2F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Aliza")); | ||
|
||
var manga = db.Manga.Include(m => m.Titles).ToHashSet(); | ||
|
||
var ymM1 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "Monokemono Shoya")); | ||
var ymM2 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "Monokemono")); | ||
var aM1 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "VictimGirls 24")); | ||
var aM2 = manga.FirstOrDefault(m => m.Titles.Any(ct => ct.Text == "VictimGirls 25")); | ||
|
||
ymM1M!.AddCreation(ymM1!, CharacterRole.Main); | ||
ymM1M.AddCreation(ymM2!, CharacterRole.Secondary); | ||
ymM2F!.AddCreation(ymM2!, CharacterRole.Main); | ||
aM1!.AddCharacter(aM1F!, CharacterRole.Main); | ||
aM2!.AddCharacter(aM2F!, CharacterRole.Main); | ||
|
||
db.SaveChanges(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class CharactersTagsTests : DatabaseTestsBase | ||
{ | ||
// depends on PushTagsTest(1) | ||
// depends on PushCharactersTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushCharactersTagsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var characters = db.Characters.Include(a => a.Names).ToHashSet(); | ||
|
||
var ymM2F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Akaname")); | ||
var aM1F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Ajax")); | ||
var aM2F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Aliza")); | ||
|
||
var tags = db.Tags.Include(tag => tag.Creatures).ToHashSet(); | ||
|
||
var loliTag = tags.FirstOrDefault(t => t.Value == "Loli"); | ||
var alTag = tags.FirstOrDefault(t => t.Value == "Azur Lane"); | ||
var gfTag = tags.FirstOrDefault(t => t.Value == "Granblue Fantasy"); | ||
|
||
ymM2F!.Tags.Add(loliTag!); | ||
loliTag!.Creatures.Add(aM1F!); | ||
alTag!.Creatures.Add(aM1F!); | ||
gfTag!.Creatures.Add(aM2F!); | ||
|
||
db.SaveChanges(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
using OpenHentai.Creatures; | ||
using OpenHentai.Relations; | ||
|
||
namespace OpenHentai.Tests.Integration; | ||
|
||
public class CharactersTests : DatabaseTestsBase | ||
{ | ||
[Test] | ||
[Order(1)] | ||
public void PushCharactersTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var ymM1M = new Character("default::Unnamed male") | ||
{ | ||
Birthday = new DateTime(1900, 01, 01), | ||
Age = 25, | ||
Gender = Gender.Male | ||
}; | ||
ymM1M.Description.Add(new("en-US::Protagonist of Monokemono Shoya")); | ||
|
||
var ymM2F = new Character("default::Akaname") | ||
{ | ||
Birthday = new DateTime(1900, 01, 01), | ||
Age = 10, | ||
Gender = Gender.Female | ||
}; | ||
ymM2F.Description.Add(new("en-US::Protagonist of Monokemono Yonya")); | ||
|
||
var aM1F = new Character("default::Ajax") | ||
{ | ||
Birthday = new DateTime(1900, 01, 01), | ||
Age = 15, | ||
Gender = Gender.Female | ||
}; | ||
aM1F.Description.Add(new("en-US::Azur lane character")); | ||
|
||
var aM2F = new Character("default::Aliza") | ||
{ | ||
Birthday = new DateTime(1900, 01, 01), | ||
Age = 500, | ||
Gender = Gender.Female | ||
}; | ||
aM2F.Description.Add(new("en-US::Granblue fantasy character")); | ||
|
||
db.Characters.AddRange(ymM1M, ymM2F, aM1F, aM2F); | ||
|
||
db.SaveChanges(); | ||
} | ||
|
||
// depends on PushCharactersTest(1) | ||
[Test] | ||
[Order(2)] | ||
public void PushCharactersRelationsTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var characters = db.Characters.Include(a => a.Names).ToHashSet(); | ||
|
||
var ymM1M = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Unnamed male")); | ||
var ymM2F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Akaname")); | ||
var aM1F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Ajax")); | ||
var aM2F = characters.FirstOrDefault(c => c.Names.Any(cn => cn.Text == "Aliza")); | ||
|
||
ymM1M!.AddRelation(ymM2F!, CreatureRelations.Unknown); | ||
aM1F!.AddRelation(aM2F!, CreatureRelations.Enemy); | ||
|
||
db.SaveChanges(); | ||
} | ||
|
||
[Test] | ||
[Order(10)] | ||
public async Task ReadCharactersTest() | ||
{ | ||
using var db = new DatabaseContext(ContextOptions); | ||
|
||
var characters = db.Characters.Include(c => c.Names) | ||
.Include(c => c.Creations) | ||
.ThenInclude(cc => cc.Origin) | ||
.Include(c => c.Tags) | ||
.Include(c => c.Relations) | ||
.ThenInclude(cr => cr.Related) | ||
.ToList(); | ||
|
||
var json = await SerializeEntityAsync(characters).ConfigureAwait(false); | ||
var deserialized = await DeserializeEntityAsync<IEnumerable<Character>>(json).ConfigureAwait(false); | ||
} | ||
} |
Oops, something went wrong.