mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-08 03:01:24 +00:00
56 lines
1.9 KiB
Python
56 lines
1.9 KiB
Python
from typing import Any, Optional
|
|
|
|
from typing_extensions import override
|
|
|
|
from approval_utilities.utils import write_to_temporary_file
|
|
from approvaltests import FileApprover
|
|
from approvaltests.approvals import (
|
|
get_default_namer,
|
|
initialize_options,
|
|
verify_with_namer,
|
|
)
|
|
from approvaltests.core import Reporter
|
|
from approvaltests.core.options import Options
|
|
from approvaltests.namer.stack_frame_namer import StackFrameNamer
|
|
from approvaltests.reporters.testing_reporter import ReporterForTesting
|
|
|
|
|
|
class FilePathNamer(StackFrameNamer):
|
|
def __init__(self, file_path: str, extension: None = None) -> None:
|
|
StackFrameNamer.__init__(self, extension)
|
|
self.file_path = file_path
|
|
|
|
@override
|
|
def get_approved_filename(self, base: Optional[str] = None) -> str:
|
|
return self.file_path
|
|
|
|
|
|
def assert_against_file(
|
|
actual: str, file_path: str, reporter: Optional[ReporterForTesting] = None
|
|
) -> None:
|
|
namer = FilePathNamer(file_path)
|
|
FileApprover.add_allowed_duplicates(lambda n: n == namer.get_approved_filename())
|
|
verify_with_namer(actual, namer, reporter)
|
|
|
|
|
|
def assert_equal_with_reporter(
|
|
expected: str,
|
|
actual: Any,
|
|
reporter: Optional[Reporter] = None,
|
|
*, # enforce keyword arguments - https://www.python.org/dev/peps/pep-3102/
|
|
options: Optional[Options] = None,
|
|
) -> None:
|
|
options = initialize_options(options, reporter)
|
|
actual = options.scrub(actual)
|
|
if actual == expected:
|
|
return
|
|
|
|
name = get_default_namer().get_file_name()
|
|
extention = options.for_file.file_extention
|
|
expected_file = write_to_temporary_file(expected, name + ".expected.", extention)
|
|
actual_file = write_to_temporary_file(actual, name + ".actual.", extention)
|
|
options.reporter.report(actual_file, expected_file)
|
|
raise AssertionError(
|
|
f'expected != actual\n actual: "{actual}"\nexpected: "{expected}"'
|
|
)
|