Skip to content

test_merge

Test the merge_contributors function.

TestMergeContributors

Source code in tests/test_merge.py
class TestMergeContributors:
    def test_merge_contributors(self, contributor_1, contributor_2):
        """Test that the merge_contributors function merges contributors correctly."""
        contributors_list = [contributor_1, contributor_2]
        # Merge a list with duplicates
        merged_contributors = merge_contributors(contributors_list + contributors_list)
        # the merged list should just have 2 contributors
        assert len(merged_contributors) == 2
        # the merged list should have the same contributors as the original lists
        assert contributor_in(contributor_1, merged_contributors)
        assert contributor_in(contributor_2, merged_contributors)

    def test_merge_contributors_duplicate(
        self,
        contributor_1,
        contributor_1_duplicate,
        contributor_1_merged,
        contributor_2,
    ):
        """Test that the merge_contributors function merges contributors correctly."""
        contributors_list = [contributor_1, contributor_1_duplicate, contributor_2]
        # Merge a list with duplicates
        merged_contributors = merge_contributors(contributors_list)
        # the merged list should just have 2 contributors
        assert len(merged_contributors) == 2
        # the merged list should have contributor 2, but a merged entry for contributor 1
        assert not contributor_in(contributor_1, merged_contributors)
        assert not contributor_in(contributor_1_duplicate, merged_contributors)
        assert contributor_in(contributor_1_merged, merged_contributors)
        assert contributor_in(contributor_2, merged_contributors)

test_merge_contributors(contributor_1, contributor_2)

Test that the merge_contributors function merges contributors correctly.

Source code in tests/test_merge.py
def test_merge_contributors(self, contributor_1, contributor_2):
    """Test that the merge_contributors function merges contributors correctly."""
    contributors_list = [contributor_1, contributor_2]
    # Merge a list with duplicates
    merged_contributors = merge_contributors(contributors_list + contributors_list)
    # the merged list should just have 2 contributors
    assert len(merged_contributors) == 2
    # the merged list should have the same contributors as the original lists
    assert contributor_in(contributor_1, merged_contributors)
    assert contributor_in(contributor_2, merged_contributors)

test_merge_contributors_duplicate(contributor_1, contributor_1_duplicate, contributor_1_merged, contributor_2)

Test that the merge_contributors function merges contributors correctly.

Source code in tests/test_merge.py
def test_merge_contributors_duplicate(
    self,
    contributor_1,
    contributor_1_duplicate,
    contributor_1_merged,
    contributor_2,
):
    """Test that the merge_contributors function merges contributors correctly."""
    contributors_list = [contributor_1, contributor_1_duplicate, contributor_2]
    # Merge a list with duplicates
    merged_contributors = merge_contributors(contributors_list)
    # the merged list should just have 2 contributors
    assert len(merged_contributors) == 2
    # the merged list should have contributor 2, but a merged entry for contributor 1
    assert not contributor_in(contributor_1, merged_contributors)
    assert not contributor_in(contributor_1_duplicate, merged_contributors)
    assert contributor_in(contributor_1_merged, merged_contributors)
    assert contributor_in(contributor_2, merged_contributors)

contributor_in(contributor, contributor_list)

Check if a contributor appears in a list

Source code in tests/test_merge.py
def contributor_in(contributor, contributor_list):
    """Check if a contributor appears in a list"""
    key = contributor.get(_unique_key)
    contributions = contributor.get(_contributions)

    for contributor_b in contributor_list:
        # Match contributor by unique key
        if contributor_b.get(_unique_key) == key:
            contributions_b = contributor_b.get(_contributions)
            if (
                # Ensure length of contributions lists are identical
                len(contributions) == len(contributions_b)
                # and that all contributions feature in each list
                and all(
                    [contribution in contributions_b for contribution in contributions]
                )
            ):
                return True
            else:
                return False

    # Return false if no matching contributor is found
    return False