Skip to content

Module manubot.process.tests.test_util

View Source
import pathlib

import pytest

from ..util import add_author_affiliations, read_variable_files

directory = pathlib.Path(__file__).parent.resolve()

def test_read_variable_files_empty():

    paths = []

    user_variables = read_variable_files(paths)

    assert isinstance(user_variables, dict) and not user_variables

def test_read_variable_files():

    """

    Test reading multiple JSON files, from both local paths and URLs.

    """

    local_path = "manuscripts/variables/content/template-variables.json"

    local_path = directory.joinpath(local_path)

    paths = [

        "https://git.io/vbkqm",

        "https://git.io/vbkqm",

        "namespace_1=https://git.io/vbkqm",

        "namespace_2=https://git.io/vbkqm",

        f"namespace_2={local_path}",

        f"namespace_3={local_path}",

    ]

    user_variables = read_variable_files(paths)

    assert "namespace_1" in user_variables

    assert "namespace_2" in user_variables

    assert "namespace_3" in user_variables

    assert user_variables["generated_by"] == "Manubot"

    assert "violet" in user_variables["namespace_1"]["rainbow"]

    assert "yellow" in user_variables["namespace_2"]["rainbow"]

    assert "orange" in user_variables["namespace_3"]["rainbow"]

def test_add_author_affiliations_empty():

    variables = {}

    variables["authors"] = [{"name": "Jane Roe"}, {"name": "John Doe"}]

    returned_variables = add_author_affiliations(variables)

    assert variables is returned_variables

    assert "affiliations" not in variables

    for author in variables["authors"]:

        assert "affiliation_numbers" not in author

def test_add_author_affiliations():

    variables = {}

    variables["authors"] = [

        # Deprecated affiliations format (as a string that's `; ` separated)

        {

            "name": "Jane Roe",

            "affiliations": "Department of Doe, University of Roe; Peppertea University",

        },

        # Prefered affiliations format as a list

        {

            "name": "John Doe",

            "affiliations": ["Unique University", "Peppertea University"],

        },

    ]

    with pytest.warns(DeprecationWarning):

        returned_variables = add_author_affiliations(variables)

    assert variables is returned_variables

    assert variables["affiliations"] == [

        {

            "affiliation": "Department of Doe, University of Roe",

            "affiliation_number": 1,

        },

        {"affiliation": "Peppertea University", "affiliation_number": 2},

        {"affiliation": "Unique University", "affiliation_number": 3},

    ]

    authors = variables["authors"]

    assert authors[0]["affiliations"] == [

        "Department of Doe, University of Roe",

        "Peppertea University",

    ]

    assert authors[0]["affiliation_numbers"] == [1, 2]

    assert authors[1]["affiliation_numbers"] == [2, 3]

Variables

directory

Functions

test_add_author_affiliations

def test_add_author_affiliations(

)
View Source
def test_add_author_affiliations():

    variables = {}

    variables["authors"] = [

        # Deprecated affiliations format (as a string that's `; ` separated)

        {

            "name": "Jane Roe",

            "affiliations": "Department of Doe, University of Roe; Peppertea University",

        },

        # Prefered affiliations format as a list

        {

            "name": "John Doe",

            "affiliations": ["Unique University", "Peppertea University"],

        },

    ]

    with pytest.warns(DeprecationWarning):

        returned_variables = add_author_affiliations(variables)

    assert variables is returned_variables

    assert variables["affiliations"] == [

        {

            "affiliation": "Department of Doe, University of Roe",

            "affiliation_number": 1,

        },

        {"affiliation": "Peppertea University", "affiliation_number": 2},

        {"affiliation": "Unique University", "affiliation_number": 3},

    ]

    authors = variables["authors"]

    assert authors[0]["affiliations"] == [

        "Department of Doe, University of Roe",

        "Peppertea University",

    ]

    assert authors[0]["affiliation_numbers"] == [1, 2]

    assert authors[1]["affiliation_numbers"] == [2, 3]

test_add_author_affiliations_empty

def test_add_author_affiliations_empty(

)
View Source
def test_add_author_affiliations_empty():

    variables = {}

    variables["authors"] = [{"name": "Jane Roe"}, {"name": "John Doe"}]

    returned_variables = add_author_affiliations(variables)

    assert variables is returned_variables

    assert "affiliations" not in variables

    for author in variables["authors"]:

        assert "affiliation_numbers" not in author

test_read_variable_files

def test_read_variable_files(

)

Test reading multiple JSON files, from both local paths and URLs.

View Source
def test_read_variable_files():

    """

    Test reading multiple JSON files, from both local paths and URLs.

    """

    local_path = "manuscripts/variables/content/template-variables.json"

    local_path = directory.joinpath(local_path)

    paths = [

        "https://git.io/vbkqm",

        "https://git.io/vbkqm",

        "namespace_1=https://git.io/vbkqm",

        "namespace_2=https://git.io/vbkqm",

        f"namespace_2={local_path}",

        f"namespace_3={local_path}",

    ]

    user_variables = read_variable_files(paths)

    assert "namespace_1" in user_variables

    assert "namespace_2" in user_variables

    assert "namespace_3" in user_variables

    assert user_variables["generated_by"] == "Manubot"

    assert "violet" in user_variables["namespace_1"]["rainbow"]

    assert "yellow" in user_variables["namespace_2"]["rainbow"]

    assert "orange" in user_variables["namespace_3"]["rainbow"]

test_read_variable_files_empty

def test_read_variable_files_empty(

)
View Source
def test_read_variable_files_empty():

    paths = []

    user_variables = read_variable_files(paths)

    assert isinstance(user_variables, dict) and not user_variables