Fixes all lowercase issue (#3302)
This commit is contained in:
parent
184c766fa7
commit
b65b78a736
11 changed files with 377 additions and 65 deletions
|
|
@ -6,7 +6,6 @@ using System.Threading.Tasks;
|
|||
using API.Data;
|
||||
using API.Data.Repositories;
|
||||
using API.DTOs;
|
||||
using API.DTOs.CollectionTags;
|
||||
using API.DTOs.Metadata;
|
||||
using API.DTOs.SeriesDetail;
|
||||
using API.Entities;
|
||||
|
|
@ -892,6 +891,62 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// I'm not sure how I could handle this use-case
|
||||
/// </summary>
|
||||
//[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldUpdate_ExistingPeople_NewName()
|
||||
{
|
||||
await ResetDb(); // Resets the database for a clean state
|
||||
|
||||
// Arrange: Build series, metadata, and existing people
|
||||
var series = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
series.Library = new LibraryBuilder("Test Library", LibraryType.Book).Build();
|
||||
|
||||
var existingPerson = new PersonBuilder("Existing Person").Build();
|
||||
var existingWriter = new PersonBuilder("ExistingWriter").Build(); // Pre-existing writer
|
||||
|
||||
series.Metadata.People = new List<SeriesMetadataPeople>
|
||||
{
|
||||
new SeriesMetadataPeople { Person = existingWriter, Role = PersonRole.Writer },
|
||||
new SeriesMetadataPeople { Person = new PersonBuilder("Existing Translator").Build(), Role = PersonRole.Translator },
|
||||
new SeriesMetadataPeople { Person = new PersonBuilder("Existing Publisher 2").Build(), Role = PersonRole.Publisher }
|
||||
};
|
||||
|
||||
_context.Series.Add(series);
|
||||
_context.Person.Add(existingPerson);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
// Act: Update series metadata, attempting to update the writer to "Existing Writer"
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = series.Id, // Use the series ID
|
||||
Writers = new List<PersonDto> { new() { Id = 0, Name = "Existing Writer" } }, // Trying to update writer's name
|
||||
WriterLocked = true
|
||||
}
|
||||
});
|
||||
|
||||
// Assert: Ensure the operation was successful
|
||||
Assert.True(success);
|
||||
|
||||
// Reload the series from the database
|
||||
var updatedSeries = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(series.Id);
|
||||
Assert.NotNull(updatedSeries.Metadata);
|
||||
|
||||
// Assert that the people list still contains the updated person with the new name
|
||||
var updatedPerson = updatedSeries.Metadata.People.FirstOrDefault(p => p.Role == PersonRole.Writer)?.Person;
|
||||
Assert.NotNull(updatedPerson); // Make sure the person exists
|
||||
Assert.Equal("Existing Writer", updatedPerson.Name); // Check if the person's name was updated
|
||||
|
||||
// Assert that the publisher lock is still true
|
||||
Assert.True(updatedSeries.Metadata.WriterLocked);
|
||||
}
|
||||
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldRemoveExistingPerson()
|
||||
{
|
||||
|
|
@ -989,6 +1044,199 @@ public class SeriesServiceTests : AbstractDbTest
|
|||
|
||||
#endregion
|
||||
|
||||
#region UpdateGenres
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldAddNewGenre_NoExistingGenres()
|
||||
{
|
||||
await ResetDb();
|
||||
var s = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
s.Library = new LibraryBuilder("Test Lib", LibraryType.Book).Build();
|
||||
|
||||
_context.Series.Add(s);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = s.Id,
|
||||
Genres = new List<GenreTagDto> {new () {Id = 0, Title = "New Genre"}},
|
||||
},
|
||||
});
|
||||
|
||||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Contains("New Genre".SentenceCase(), series.Metadata.Genres.Select(g => g.Title));
|
||||
Assert.False(series.Metadata.GenresLocked); // Ensure the lock is not activated unless specified.
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldReplaceExistingGenres()
|
||||
{
|
||||
await ResetDb();
|
||||
var s = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
s.Library = new LibraryBuilder("Test Lib", LibraryType.Book).Build();
|
||||
|
||||
var g = new GenreBuilder("Existing Genre").Build();
|
||||
s.Metadata.Genres = new List<Genre> { g };
|
||||
|
||||
_context.Series.Add(s);
|
||||
_context.Genre.Add(g);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = s.Id,
|
||||
Genres = new List<GenreTagDto> { new() { Id = 0, Title = "New Genre" }},
|
||||
},
|
||||
});
|
||||
|
||||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.DoesNotContain("Existing Genre".SentenceCase(), series.Metadata.Genres.Select(g => g.Title));
|
||||
Assert.Contains("New Genre".SentenceCase(), series.Metadata.Genres.Select(g => g.Title));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldRemoveAllGenres()
|
||||
{
|
||||
await ResetDb();
|
||||
var s = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
s.Library = new LibraryBuilder("Test Lib", LibraryType.Book).Build();
|
||||
|
||||
var g = new GenreBuilder("Existing Genre").Build();
|
||||
s.Metadata.Genres = new List<Genre> { g };
|
||||
|
||||
_context.Series.Add(s);
|
||||
_context.Genre.Add(g);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = s.Id,
|
||||
Genres = new List<GenreTagDto>(), // Removing all genres
|
||||
},
|
||||
});
|
||||
|
||||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Empty(series.Metadata.Genres);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region UpdateTags
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldAddNewTag_NoExistingTags()
|
||||
{
|
||||
await ResetDb();
|
||||
var s = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
s.Library = new LibraryBuilder("Test Lib", LibraryType.Book).Build();
|
||||
|
||||
_context.Series.Add(s);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = s.Id,
|
||||
Tags = new List<TagDto> { new() { Id = 0, Title = "New Tag" }},
|
||||
},
|
||||
});
|
||||
|
||||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Contains("New Tag".SentenceCase(), series.Metadata.Tags.Select(t => t.Title));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldReplaceExistingTags()
|
||||
{
|
||||
await ResetDb();
|
||||
var s = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
s.Library = new LibraryBuilder("Test Lib", LibraryType.Book).Build();
|
||||
|
||||
var t = new TagBuilder("Existing Tag").Build();
|
||||
s.Metadata.Tags = new List<Tag> { t };
|
||||
|
||||
_context.Series.Add(s);
|
||||
_context.Tag.Add(t);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = s.Id,
|
||||
Tags = new List<TagDto> { new() { Id = 0, Title = "New Tag" }},
|
||||
},
|
||||
});
|
||||
|
||||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.DoesNotContain("Existing Tag".SentenceCase(), series.Metadata.Tags.Select(t => t.Title));
|
||||
Assert.Contains("New Tag".SentenceCase(), series.Metadata.Tags.Select(t => t.Title));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task UpdateSeriesMetadata_ShouldRemoveAllTags()
|
||||
{
|
||||
await ResetDb();
|
||||
var s = new SeriesBuilder("Test")
|
||||
.WithMetadata(new SeriesMetadataBuilder().Build())
|
||||
.Build();
|
||||
s.Library = new LibraryBuilder("Test Lib", LibraryType.Book).Build();
|
||||
|
||||
var t = new TagBuilder("Existing Tag").Build();
|
||||
s.Metadata.Tags = new List<Tag> { t };
|
||||
|
||||
_context.Series.Add(s);
|
||||
_context.Tag.Add(t);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var success = await _seriesService.UpdateSeriesMetadata(new UpdateSeriesMetadataDto
|
||||
{
|
||||
SeriesMetadata = new SeriesMetadataDto
|
||||
{
|
||||
SeriesId = s.Id,
|
||||
Tags = new List<TagDto>(), // Removing all tags
|
||||
},
|
||||
});
|
||||
|
||||
Assert.True(success);
|
||||
|
||||
var series = await _unitOfWork.SeriesRepository.GetSeriesByIdAsync(s.Id);
|
||||
Assert.NotNull(series.Metadata);
|
||||
Assert.Empty(series.Metadata.Tags);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region GetFirstChapterForMetadata
|
||||
|
||||
private static Series CreateSeriesMock()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue