Files
PageManager/PageManager.Api/PageManager.Api.Tests/Helpers/BookFactory.cs
T

79 lines
2.4 KiB
C#

using PageManager.Api.Data.Models;
namespace PageManager.Api.Tests.Helpers;
public static class BookFactory
{
public static Book Create(
int id = 1,
string title = "Test Book",
int? year = 2024,
string? publisher = "Test Publisher",
int? pages = 300,
string? description = "A test book.",
string[] formats = null!,
string color = "#6366f1",
string[] genres = null!,
string? coverUrl = null,
string? isbn = null,
int? hardcoverId = null)
{
return new Book
{
Id = id,
Title = title,
Year = year,
Publisher = publisher,
Pages = pages,
Description = description,
Formats = formats ?? ["epub"],
Color = color,
Genres = genres ?? ["Fiction"],
CoverUrl = coverUrl,
Isbn = isbn,
HardcoverId = hardcoverId,
BookAuthors = [],
SeriesEntries = [],
Editions = [],
};
}
public static Book WithAuthors(this Book book, params (int Id, string Name)[] authors)
{
foreach (var (id, name) in authors)
{
var author = new Author { Id = id, Name = name };
book.BookAuthors.Add(new BookAuthor
{
BookId = book.Id,
AuthorId = id,
Author = author,
Book = book,
});
}
return book;
}
public static Book WithEditions(this Book book, params (string? Isbn, string? Publisher, string? CoverUrl)[] editions)
{
foreach (var (isbn, publisher, coverUrl) in editions)
book.Editions.Add(new Edition { BookId = book.Id, Isbn = isbn, Publisher = publisher, CoverUrl = coverUrl });
return book;
}
public static Book WithSeries(this Book book, int seriesId = 1, string seriesName = "Test Series", double position = 1.0, string? arc = null)
{
var series = new Series { Id = seriesId, Name = seriesName };
book.SeriesEntries.Add(new SeriesEntry
{
SeriesId = seriesId,
BookId = book.Id,
Series = series,
Book = book,
Position = position,
Arc = arc,
});
return book;
}
}