diff options
| author | Paul Buetow <paul@buetow.org> | 2026-06-04 15:26:14 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-06-04 15:26:14 +0300 |
| commit | 685036b810f519fa42c2e5254fb385d6593458f6 (patch) | |
| tree | b3aeb11b13a25f151f15f358055a8d733b4ec0e8 /tests/cli.sh | |
| parent | ade6c544dc474fd32378067b7b179580495fcb84 (diff) | |
Add image details pages for task 9j0
Diffstat (limited to 'tests/cli.sh')
| -rwxr-xr-x | tests/cli.sh | 69 |
1 files changed, 67 insertions, 2 deletions
diff --git a/tests/cli.sh b/tests/cli.sh index 6cd363a..e59cf86 100755 --- a/tests/cli.sh +++ b/tests/cli.sh @@ -1290,6 +1290,9 @@ test_dry_run_reports_cli_overrides_without_writes() { " $dist_dir/html/[page]-[image].html (6 view pages)" \ "$output" test::assert_contains \ + " $dist_dir/html/[page]-[image]-details.html (6 details pages)" \ + "$output" + test::assert_contains \ " $dist_dir/html/[redirect].html (6 navigation redirects)" \ "$output" test::assert_contains \ @@ -1671,7 +1674,7 @@ test_generate_preflight_rejects_missing_templates() { ) test::assert_contains \ - "ERROR: template file $template_dir/footer.tmpl must be readable" \ + "ERROR: template file $template_dir/details.tmpl must be readable" \ "$output" test::assert_path_absent "$dist_dir" test::teardown @@ -1713,6 +1716,7 @@ test_dry_run_rejects_missing_default_template_dir() { test_integration_generates_album_outputs_and_cleans() { local config_file + local details_html local fake_bin local page_html local tarball @@ -1746,16 +1750,21 @@ test_integration_generates_album_outputs_and_cleans() { test::assert_file_exists "$TEST_TMPDIR/dist/html/page-2.html" test::assert_file_exists "$TEST_TMPDIR/dist/html/page-3.html" test::assert_file_exists "$TEST_TMPDIR/dist/html/1-1.html" + test::assert_file_exists "$TEST_TMPDIR/dist/html/1-1-details.html" test::assert_file_exists "$TEST_TMPDIR/dist/html/3-2.html" + test::assert_file_exists "$TEST_TMPDIR/dist/html/3-2-details.html" test::assert_file_exists "$TEST_TMPDIR/dist/html/index.html" test::assert_file_exists "$TEST_TMPDIR/dist/index.html" test::assert_file_exists "$TEST_TMPDIR/dist/photoalbum.json" page_html=$(<"$TEST_TMPDIR/dist/html/page-1.html") + details_html=$(<"$TEST_TMPDIR/dist/html/1-1-details.html") top_index_html=$(<"$TEST_TMPDIR/dist/index.html") test::assert_contains "name='04 filename with spaces.jpg'" \ "$(<"$TEST_TMPDIR/dist/html/page-2.html")" test::assert_contains 'Next 2 pictures' "$page_html" + test::assert_contains 'No EXIF details available.' "$details_html" + test::assert_contains 'href="1-1.html">Image view</a>' "$details_html" test::assert_contains 'url=./html/index.html' "$top_index_html" test::assert_find_count 0 "$TEST_TMPDIR/dist" '*.tar' test::assert_generation_metadata \ @@ -2049,6 +2058,8 @@ test_generate_missing_imagemagick_fails() { test_generate_escapes_html_values() { local config_file local css_photo + local details_html + local exif_value_html local fake_bin local original_basepath local original_basepath_html @@ -2067,6 +2078,7 @@ test_generate_escapes_html_values() { css_photo='kid\000027s_\000022\00003ctag\00003e\000026.jpg' title="A & \"quoted\" <title> 'ok'" title_html='A & "quoted" <title> 'ok'' + exif_value_html='O'Neil & "<camera>"' original_basepath="https://example.test/original?album=\"<x>&owner=O'Neil" original_basepath_html='https://example.test/original?album="<x>&owner=O'Neil' @@ -2089,11 +2101,14 @@ test_generate_escapes_html_values() { ( cd "$TEST_TMPDIR" - PATH="$fake_bin:$PATH" "$TEST_PHOTOALBUM" --generate + PATH="$fake_bin:$PATH" \ + TEST_IMAGEMAGICK_IDENTIFY_OUTPUT=$' exif:Artist: O\'Neil & "<camera>"' \ + "$TEST_PHOTOALBUM" --generate ) page_html=$(<"$TEST_TMPDIR/dist/html/page-1.html") view_html=$(<"$TEST_TMPDIR/dist/html/1-1.html") + details_html=$(<"$TEST_TMPDIR/dist/html/1-1-details.html") test::assert_contains "<title>$title_html</title>" "$page_html" test::assert_contains \ @@ -2103,12 +2118,59 @@ test_generate_escapes_html_values() { test::assert_contains "src='../thumbs/$photo_html'" "$page_html" test::assert_contains '&"'.tar' "$page_html" test::assert_contains "href=\"page-1.html#$photo_html\"" "$view_html" + test::assert_contains 'href="1-1-details.html">Details</a>' "$view_html" test::assert_contains "href ='../photos/$photo_html'" "$view_html" test::assert_contains \ "href=\"$original_basepath_html/$photo_html\"" \ "$view_html" + test::assert_contains "src='../photos/$photo_html'" "$details_html" + test::assert_contains '<th>exif:Artist</th>' "$details_html" + test::assert_contains "<td>$exif_value_html</td>" "$details_html" + test::assert_contains "href=\"1-1.html\">Image view</a>" "$details_html" test::assert_not_contains '<title>A & "quoted" <title>' "$page_html" test::assert_not_contains "$photo_name" "$view_html" + test::assert_not_contains "O'Neil & \"<camera>\"" "$details_html" + + test::teardown +} + +test_generate_renders_exif_details() { + local config_file + local details_html + local fake_bin + local identify_output + local view_html + + test::setup + fake_bin="$TEST_TMPDIR/bin" + config_file="$TEST_TMPDIR/photoalbum.conf" + identify_output=$'Image:\n exif:DateTime: 2026:06:04 12:34:56\n exif:Make: ExampleCam\n geometry: 120x90' + + test::install_fake_imagemagick "$fake_bin" + mkdir -p "$TEST_TMPDIR/incoming" + printf 'fake image\n' > "$TEST_TMPDIR/incoming/01.jpg" + test::write_album_config \ + "$config_file" "$TEST_TMPDIR/incoming" "$TEST_TMPDIR/dist" \ + 'EXIF album' 1 + + ( + cd "$TEST_TMPDIR" + PATH="$fake_bin:$PATH" \ + TEST_IMAGEMAGICK_IDENTIFY_OUTPUT="$identify_output" \ + "$TEST_PHOTOALBUM" --generate + ) + + view_html=$(<"$TEST_TMPDIR/dist/html/1-1.html") + details_html=$(<"$TEST_TMPDIR/dist/html/1-1-details.html") + + test::assert_contains 'href="1-1-details.html">Details</a>' "$view_html" + test::assert_contains '<table class="details">' "$details_html" + test::assert_contains '<th>exif:DateTime</th>' "$details_html" + test::assert_contains '<td>2026:06:04 12:34:56</td>' "$details_html" + test::assert_contains '<th>exif:Make</th>' "$details_html" + test::assert_contains '<td>ExampleCam</td>' "$details_html" + test::assert_not_contains 'geometry: 120x90' "$details_html" + test::assert_not_contains 'No EXIF details available.' "$details_html" test::teardown } @@ -2461,6 +2523,9 @@ main() { '--generate escapes generated HTML values' \ test_generate_escapes_html_values test::run_case \ + '--generate renders image EXIF details' \ + test_generate_renders_exif_details + test::run_case \ '--generate metadata escapes JSON and custom tarball suffix' \ test_generate_metadata_escapes_json_and_custom_tarball_suffix test::run_case \ |
