diff --git a/md2cf/upsert.py b/md2cf/upsert.py index 7d757d6..f59b70a 100644 --- a/md2cf/upsert.py +++ b/md2cf/upsert.py @@ -147,8 +147,10 @@ def page_needs_updating(page, existing_page, replace_all_labels): # print(f"Page labels have changed: {page.title} {page.labels}") return True else: - existing_page_hash_match = CONTENT_HASH_REGEX.search( - existing_page.version.message + existing_page_hash_match = ( + CONTENT_HASH_REGEX.search(existing_page.version.message) + if hasattr(existing_page.version, "message") + else None ) if existing_page_hash_match is not None: original_page_hash = existing_page_hash_match.group(1) diff --git a/test_package/unit/test_upsert.py b/test_package/unit/test_upsert.py index 745dcbe..be55789 100644 --- a/test_package/unit/test_upsert.py +++ b/test_package/unit/test_upsert.py @@ -1,6 +1,7 @@ import pytest import md2cf.upsert +from md2cf.api import Bunch from md2cf.api import MinimalConfluence as Confluence from md2cf.document import Page @@ -224,6 +225,25 @@ def test_upsert_page_only_changed_no_changes(mocker): assert upsert_result.action == upsert_result.action.SKIPPED +def test_page_needs_updating_when_no_message(mocker): + existing_page_mock = mocker.Mock() + ancestor_mock = mocker.Mock() + ancestor_mock.id = mocker.sentinel.parent_id + existing_page_mock.ancestors = [ancestor_mock] + existing_page_mock.version = Bunch() + + page = Page( + space=mocker.sentinel.space, + title=mocker.sentinel.title, + body="hello there", + parent_id=mocker.sentinel.parent_id, + ) + + assert md2cf.upsert.page_needs_updating( + page, existing_page_mock, replace_all_labels=False + ) + + def test_page_needs_updating_page_not_changed(mocker): message_hash = "[v6e71b3cac15d32fe2d36c270887df9479c25c640]" existing_page_mock = mocker.Mock()