Added --print to dump, added {tab}

This commit is contained in:
Rhet Turnbull
2022-08-27 10:50:25 -07:00
parent 320fb86559
commit 5eaeb72c3e
4 changed files with 140 additions and 5 deletions

71
tests/test_cli_dump.py Normal file
View File

@@ -0,0 +1,71 @@
"""Test osxphotos dump command."""
import json
import os
import os.path
import pytest
from click.testing import CliRunner
from osxphotos.cli import dump
from osxphotos.photosdb import PhotosDB
from .test_cli import CLI_PHOTOS_DB
@pytest.fixture
def photos():
"""Return photos from CLI_PHOTOS_DB"""
cwd = os.getcwd()
db_path = os.path.join(cwd, CLI_PHOTOS_DB)
return PhotosDB(db_path).photos(intrash=True)
def test_dump_basic(photos):
"""Test osxphotos dump"""
runner = CliRunner()
cwd = os.getcwd()
db_path = os.path.join(cwd, CLI_PHOTOS_DB)
# pylint: disable=not-context-manager
with runner.isolated_filesystem():
result = runner.invoke(dump, ["--db", db_path, "--deleted"])
assert result.exit_code == 0
assert result.output.startswith("uuid,filename")
for photo in photos:
assert photo.uuid in result.output
def test_dump_json(photos):
"""Test osxphotos dump --json"""
runner = CliRunner()
cwd = os.getcwd()
db_path = os.path.join(cwd, CLI_PHOTOS_DB)
# pylint: disable=not-context-manager
with runner.isolated_filesystem():
result = runner.invoke(dump, ["--db", db_path, "--deleted", "--json"])
assert result.exit_code == 0
json_data = {record["uuid"]: record for record in json.loads(result.output)}
for photo in photos:
assert photo.uuid in json_data
def test_dump_print(photos):
"""Test osxphotos dump --print"""
runner = CliRunner()
cwd = os.getcwd()
db_path = os.path.join(cwd, CLI_PHOTOS_DB)
# pylint: disable=not-context-manager
with runner.isolated_filesystem():
result = runner.invoke(
dump,
[
"--db",
db_path,
"--deleted",
"--print",
"{uuid}_{photo.original_filename}",
],
)
assert result.exit_code == 0
for photo in photos:
assert f"{photo.uuid}_{photo.original_filename}" in result.output

View File

@@ -8,12 +8,13 @@ import osxphotos
from osxphotos.exiftool import get_exiftool_path
from osxphotos.export_db import ExportDBInMemory
from osxphotos.phototemplate import (
PUNCTUATION,
TEMPLATE_SUBSTITUTIONS,
TEMPLATE_SUBSTITUTIONS_MULTI_VALUED,
PhotoTemplate,
RenderOptions,
)
from osxphotos.photoinfo import PhotoInfoNone
from .photoinfo_mock import PhotoInfoMock
try:
@@ -1345,3 +1346,16 @@ def test_bad_sslice(photosdb):
# bad function raises ValueError
with pytest.raises((SyntaxError, ValueError)):
rendered, _ = photo.render_template("{photo.original_filename|sslice(1:2:3:4)}")
def test_punctuation():
"""Test punctuation template fields"""
template_string = ""
expected_string = ""
for field, value in PUNCTUATION.items():
template_string += "{" + field + "}"
expected_string += f"{value}"
template = PhotoTemplate(PhotoInfoNone())
options = RenderOptions()
rendered, _ = template.render(template_string, options)
assert rendered == [expected_string]