From 95facd40195d184bc6842be0fe216265a5db3597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=A4felfinger?= Date: Fri, 21 Oct 2022 21:20:21 +0200 Subject: [PATCH] completes get images by album implementation and adds verify to makes testing a bit easier --- ...ld_return_all_existing_albums.verified.txt | 16 ++ .../Piwigo.Client.Tests/AlbumApiTests.cs | 17 +- ...should_return_expected_images.verified.txt | 272 ++++++++++++++++++ .../Piwigo.Client.Tests/ImageApiTests.cs | 6 +- .../Piwigo.Client.Tests.csproj | 7 + PiwigoDotnet/Piwigo.Client/Contract/Image.cs | 29 +- .../Piwigo.Client/Contract/ImageAlbum.cs | 15 + .../Piwigo.Client/Contract/ImageDerivative.cs | 15 + 8 files changed, 354 insertions(+), 23 deletions(-) create mode 100644 PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.GetAll_should_return_all_existing_albums.verified.txt create mode 100644 PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.GetImages_should_return_expected_images.verified.txt create mode 100644 PiwigoDotnet/Piwigo.Client/Contract/ImageAlbum.cs create mode 100644 PiwigoDotnet/Piwigo.Client/Contract/ImageDerivative.cs diff --git a/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.GetAll_should_return_all_existing_albums.verified.txt b/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.GetAll_should_return_all_existing_albums.verified.txt new file mode 100644 index 0000000..ff41af6 --- /dev/null +++ b/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.GetAll_should_return_all_existing_albums.verified.txt @@ -0,0 +1,16 @@ +[ + { + id: 1, + name: UnitTestMain + }, + { + id: 3, + name: UnitTestSub2, + id_uppercat: 1 + }, + { + id: 2, + name: UnitTestSub1, + id_uppercat: 1 + } +] \ No newline at end of file diff --git a/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.cs b/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.cs index 34e9f45..61b38ef 100644 --- a/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.cs +++ b/PiwigoDotnet/Piwigo.Client.Tests/AlbumApiTests.cs @@ -130,21 +130,6 @@ public class AlbumApiTests : ApiTestsBase CorrectMethodShouldGetCalled("pwg.categories.getList"); - response.Should().HaveCount(3); - response.Should().SatisfyRespectively(c => - { - c.Id.Should().Be(1); - c.Name.Should().Be("UnitTestMain"); - }, c => - { - c.Id.Should().Be(3); - c.Name.Should().Be("UnitTestSub2"); - c.IdUpperCat.Should().Be(1); - }, c => - { - c.Id.Should().Be(2); - c.Name.Should().Be("UnitTestSub1"); - c.IdUpperCat.Should().Be(1); - }); + await Verify(response); } } \ No newline at end of file diff --git a/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.GetImages_should_return_expected_images.verified.txt b/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.GetImages_should_return_expected_images.verified.txt new file mode 100644 index 0000000..eaa1518 --- /dev/null +++ b/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.GetImages_should_return_expected_images.verified.txt @@ -0,0 +1,272 @@ +{ + paging: { + per_page: 100, + count: 4 + }, + images: [ + { + id: 4, + width: 4452, + height: 2968, + hit: 2, + file: 2017-08-30-20-38-c7d_7682.jpg, + name: 2017-08-30-20-38-c7d 7682, + date_creation: DateTime_1, + date_available: DateTime_2, + page_url: http://localhost:8080/picture.php?/4, + element_url: http://localhost:8080/upload/2022/10/20/20221020220132-2c6d9eab.jpg, + derivatives: { + 2small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220132-2c6d9eab-2s.jpg, + width: 240, + height: 160 + }, + large: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220132-2c6d9eab-la.jpg, + width: 1008, + height: 672 + }, + medium: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220132-2c6d9eab-me.jpg, + width: 792, + height: 528 + }, + small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220132-2c6d9eab-sm.jpg, + width: 576, + height: 384 + }, + square: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220132-2c6d9eab-sq.jpg, + width: 120, + height: 120 + }, + thumb: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220132-2c6d9eab-th.jpg, + width: 144, + height: 96 + }, + xlarge: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220132-2c6d9eab-xl.jpg, + width: 1224, + height: 816 + }, + xsmall: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220132-2c6d9eab-xs.jpg, + width: 432, + height: 288 + }, + xxlarge: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220132-2c6d9eab-xx.jpg, + width: 1656, + height: 1104 + } + }, + categories: [ + { + id: 7, + url: http://localhost:8080/index.php?/category/7, + page_url: http://localhost:8080/picture.php?/4/category/7 + } + ] + }, + { + id: 3, + width: 3961, + height: 2641, + hit: 4, + file: 2017-05-24-20-35-c7d_6283.jpg, + name: 2017-05-24-20-35-c7d 6283, + date_creation: DateTime_3, + date_available: DateTime_4, + page_url: http://localhost:8080/picture.php?/3, + element_url: http://localhost:8080/upload/2022/10/20/20221020220131-9a567bdb.jpg, + derivatives: { + 2small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220131-9a567bdb-2s.jpg, + width: 240, + height: 160 + }, + large: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220131-9a567bdb-la.jpg, + width: 1008, + height: 672 + }, + medium: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220131-9a567bdb-me.jpg, + width: 792, + height: 528 + }, + small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220131-9a567bdb-sm.jpg, + width: 576, + height: 384 + }, + square: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220131-9a567bdb-sq.jpg, + width: 120, + height: 120 + }, + thumb: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220131-9a567bdb-th.jpg, + width: 144, + height: 96 + }, + xlarge: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220131-9a567bdb-xl.jpg, + width: 1224, + height: 816 + }, + xsmall: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220131-9a567bdb-xs.jpg, + width: 432, + height: 288 + }, + xxlarge: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220131-9a567bdb-xx.jpg, + width: 1656, + height: 1104 + } + }, + categories: [ + { + id: 7, + url: http://localhost:8080/index.php?/category/7, + page_url: http://localhost:8080/picture.php?/3/category/7 + } + ] + }, + { + id: 2, + width: 3107, + height: 4660, + hit: 4, + file: 2017-04-21-11-53-C7D_4469.jpg, + name: 2017-04-21-11-53-C7D 4469, + date_creation: DateTime_5, + date_available: DateTime_6, + page_url: http://localhost:8080/picture.php?/2, + element_url: http://localhost:8080/upload/2022/10/20/20221020220130-8e50dbd3.jpg, + derivatives: { + 2small: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220130-8e50dbd3-2s.jpg, + width: 160, + height: 240 + }, + large: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220130-8e50dbd3-la.jpg, + width: 504, + height: 756 + }, + medium: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220130-8e50dbd3-me.jpg, + width: 396, + height: 594 + }, + small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220130-8e50dbd3-sm.jpg, + width: 288, + height: 432 + }, + square: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220130-8e50dbd3-sq.jpg, + width: 120, + height: 120 + }, + thumb: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220130-8e50dbd3-th.jpg, + width: 96, + height: 144 + }, + xlarge: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220130-8e50dbd3-xl.jpg, + width: 612, + height: 918 + }, + xsmall: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220130-8e50dbd3-xs.jpg, + width: 216, + height: 324 + }, + xxlarge: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220130-8e50dbd3-xx.jpg, + width: 828, + height: 1242 + } + }, + categories: [ + { + id: 7, + url: http://localhost:8080/index.php?/category/7, + page_url: http://localhost:8080/picture.php?/2/category/7 + } + ] + }, + { + id: 1, + width: 5184, + height: 3456, + hit: 2, + file: 2017-01-05-11-25-c7d_2770.jpg, + name: 2017-01-05-11-25-c7d 2770, + date_creation: DateTime_7, + date_available: DateTime_8, + page_url: http://localhost:8080/picture.php?/1, + element_url: http://localhost:8080/upload/2022/10/20/20221020220129-6b8c2a7d.jpg, + derivatives: { + 2small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220129-6b8c2a7d-2s.jpg, + width: 240, + height: 160 + }, + large: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220129-6b8c2a7d-la.jpg, + width: 1008, + height: 672 + }, + medium: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220129-6b8c2a7d-me.jpg, + width: 792, + height: 528 + }, + small: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220129-6b8c2a7d-sm.jpg, + width: 576, + height: 384 + }, + square: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220129-6b8c2a7d-sq.jpg, + width: 120, + height: 120 + }, + thumb: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220129-6b8c2a7d-th.jpg, + width: 144, + height: 96 + }, + xlarge: { + url: http://localhost:8080/i.php?/upload/2022/10/20/20221020220129-6b8c2a7d-xl.jpg, + width: 1224, + height: 816 + }, + xsmall: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220129-6b8c2a7d-xs.jpg, + width: 432, + height: 288 + }, + xxlarge: { + url: http://localhost:8080/_data/i/upload/2022/10/20/20221020220129-6b8c2a7d-xx.jpg, + width: 1656, + height: 1104 + } + }, + categories: [ + { + id: 7, + url: http://localhost:8080/index.php?/category/7, + page_url: http://localhost:8080/picture.php?/1/category/7 + } + ] + } + ] +} \ No newline at end of file diff --git a/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.cs b/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.cs index 90fe964..68d8656 100644 --- a/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.cs +++ b/PiwigoDotnet/Piwigo.Client.Tests/ImageApiTests.cs @@ -27,10 +27,6 @@ public class ImageApiTests : ApiTestsBase CorrectParamShouldGetSent("per_page", "100"); CorrectParamShouldGetSent("page", "0"); - result.Images.Should().HaveCount(4); - result.Images.First().Id.Should().Be(4); - result.Paging.Page.Should().Be(0); - result.Paging.PageSize.Should().Be(100); - result.Paging.TotalItems.Should().Be(4); + await Verify(result); } } \ No newline at end of file diff --git a/PiwigoDotnet/Piwigo.Client.Tests/Piwigo.Client.Tests.csproj b/PiwigoDotnet/Piwigo.Client.Tests/Piwigo.Client.Tests.csproj index 124decf..ede3f2f 100644 --- a/PiwigoDotnet/Piwigo.Client.Tests/Piwigo.Client.Tests.csproj +++ b/PiwigoDotnet/Piwigo.Client.Tests/Piwigo.Client.Tests.csproj @@ -15,6 +15,7 @@ + @@ -25,6 +26,12 @@ Always + + ImageApiTests.cs + + + AlbumApiTests.cs + diff --git a/PiwigoDotnet/Piwigo.Client/Contract/Image.cs b/PiwigoDotnet/Piwigo.Client/Contract/Image.cs index bffee8b..916c84c 100644 --- a/PiwigoDotnet/Piwigo.Client/Contract/Image.cs +++ b/PiwigoDotnet/Piwigo.Client/Contract/Image.cs @@ -15,6 +15,31 @@ public class Image [JsonProperty("hit")] public int Hit { get; init; } - - //TODO: add additional fields + + [JsonProperty("file")] + public string? File { get; init; } + + [JsonProperty("name")] + public string? Name { get; init; } + + [JsonProperty("comment")] + public string? Comment { get; init; } + + [JsonProperty("date_creation")] + public DateTime? DateCreation { get; init; } + + [JsonProperty("date_available")] + public DateTime? DateAvailable { get; init; } + + [JsonProperty("page_url")] + public string? PageUrl { get; init; } + + [JsonProperty("element_url")] + public string? ElementUrl { get; init; } + + [JsonProperty("derivatives")] + public IDictionary? Derivatives { get; init; } + + [JsonProperty("categories")] + public IReadOnlyCollection? Albums { get; init; } } \ No newline at end of file diff --git a/PiwigoDotnet/Piwigo.Client/Contract/ImageAlbum.cs b/PiwigoDotnet/Piwigo.Client/Contract/ImageAlbum.cs new file mode 100644 index 0000000..725b8c4 --- /dev/null +++ b/PiwigoDotnet/Piwigo.Client/Contract/ImageAlbum.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; + +namespace Piwigo.Client.Contract; + +public class ImageAlbum +{ + [JsonProperty("id")] + public int Id { get; init; } + + [JsonProperty("url")] + public string? Url { get; init; } + + [JsonProperty("page_url")] + public string? PageUrl { get; init; } +} \ No newline at end of file diff --git a/PiwigoDotnet/Piwigo.Client/Contract/ImageDerivative.cs b/PiwigoDotnet/Piwigo.Client/Contract/ImageDerivative.cs new file mode 100644 index 0000000..344985c --- /dev/null +++ b/PiwigoDotnet/Piwigo.Client/Contract/ImageDerivative.cs @@ -0,0 +1,15 @@ +using Newtonsoft.Json; + +namespace Piwigo.Client.Contract; + +public class ImageDerivative +{ + [JsonProperty("url")] + public string? Url { get; init; } + + [JsonProperty("width")] + public int? Width { get; init; } + + [JsonProperty("height")] + public int? Height { get; init; } +} \ No newline at end of file