diff --git a/src/fediblockhole/__init__.py b/src/fediblockhole/__init__.py index 67b1f06..f1bc354 100755 --- a/src/fediblockhole/__init__.py +++ b/src/fediblockhole/__init__.py @@ -307,10 +307,14 @@ def merge_comments(oldcomment:str, newcomment:str) -> str: if oldcomment in ['', None] and newcomment in ['', None]: return '' - # If both comments are the same, don't merge - if oldcomment == newcomment: + # If both comments are the same, or new comment is empty, don't merge + if oldcomment == newcomment or newcomment in ['', None]: return oldcomment + # If old comment is empty, just return the new one + if oldcomment in ['', None]: + return newcomment + # We want to skip duplicate fragments so we don't end up # re-concatenating the same strings every time there's an # update, causing the comment to grow without bound. diff --git a/tests/test_merge_comments.py b/tests/test_merge_comments.py new file mode 100644 index 0000000..a6ae8b1 --- /dev/null +++ b/tests/test_merge_comments.py @@ -0,0 +1,68 @@ +""" Test merging of comments +""" +import pytest + +from fediblockhole import merge_comments + +def test_merge_blank_comments(): + + oldcomment = '' + newcomment = '' + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == '' + +def test_merge_None_comments(): + + oldcomment = None + newcomment = None + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == '' + +def test_merge_oldstr_newNone(): + + oldcomment = 'fred, bibble' + newcomment = None + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == 'fred, bibble' + +def test_merge_oldempty_newcomment(): + + oldcomment = '' + newcomment = 'fred, bibble' + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == 'fred, bibble' + +def test_merge_oldNone_newcomment(): + + oldcomment = None + newcomment = 'fred, bibble' + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == 'fred, bibble' + +def test_merge_two_different(): + + oldcomment = 'happy, medium, spinning' + newcomment = 'fred, bibble' + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == 'happy, medium, spinning, fred, bibble' + +def test_merge_overlaps(): + + oldcomment = 'happy, medium, spinning' + newcomment = 'fred, medium, bibble, spinning' + + merged_comment = merge_comments(oldcomment, newcomment) + + assert merged_comment == 'happy, medium, spinning, fred, bibble' \ No newline at end of file