Add unit test updating a post with EXIF metadata
The test creates a new post, containing a known image which has been rotated 90 degrees. It then checks: - the size of the canvas - the size of the thumbnail - if the image is searchable using non-exif data
This commit is contained in:
parent
dadeeb6abd
commit
4ad90007aa
2 changed files with 39 additions and 0 deletions
BIN
server/szurubooru/tests/assets/exif.jpg
Normal file
BIN
server/szurubooru/tests/assets/exif.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.2 KiB |
|
@ -773,6 +773,45 @@ def test_update_post_content_convert_heif_to_png_when_processing(
|
||||||
assert os.path.exists(generated_path)
|
assert os.path.exists(generated_path)
|
||||||
|
|
||||||
|
|
||||||
|
def test_update_post_content_with_exif_orientation(
|
||||||
|
tmpdir, config_injector, read_asset, post_factory):
|
||||||
|
# exif.jpg is a copy of jpeg.jpg,
|
||||||
|
# rotated counter-clockwise by 90 degrees,
|
||||||
|
# and assigned the EXIF Orientation tag "Rotate 90 CW"
|
||||||
|
config_injector(
|
||||||
|
{
|
||||||
|
"data_dir": str(tmpdir.mkdir("data")),
|
||||||
|
"thumbnails": {
|
||||||
|
"post_width": 300,
|
||||||
|
"post_height": 300,
|
||||||
|
},
|
||||||
|
"secret": "test",
|
||||||
|
"allow_broken_uploads": False,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
post = post_factory(id=1)
|
||||||
|
db.session.add(post)
|
||||||
|
posts.update_post_content(post, read_asset("exif.jpg"))
|
||||||
|
thumbnail_path = (
|
||||||
|
"{}/data/generated-thumbnails/1_244c8840887984c4.jpg".format(tmpdir))
|
||||||
|
db.session.flush()
|
||||||
|
|
||||||
|
assert post.canvas_width == 100
|
||||||
|
assert post.canvas_height == 75
|
||||||
|
|
||||||
|
with open(thumbnail_path, "rb") as handle:
|
||||||
|
thumbnail = images.Image(handle.read())
|
||||||
|
assert thumbnail.width == 400
|
||||||
|
assert thumbnail.height == 300
|
||||||
|
|
||||||
|
search_result = posts.search_by_image(read_asset("jpeg.jpg"))
|
||||||
|
assert len(search_result) == 1
|
||||||
|
search_distance, search_post = search_result[0]
|
||||||
|
assert search_post.post_id == post.post_id
|
||||||
|
assert abs(search_distance) < 0.15
|
||||||
|
|
||||||
|
|
||||||
def test_update_post_tags(tag_factory):
|
def test_update_post_tags(tag_factory):
|
||||||
post = model.Post()
|
post = model.Post()
|
||||||
with patch("szurubooru.func.tags.get_or_create_tags_by_names"):
|
with patch("szurubooru.func.tags.get_or_create_tags_by_names"):
|
||||||
|
|
Loading…
Reference in a new issue