Esempio n. 1
0
def test_register_review():
    """
    Test registration of a Review.
    """
    review = object_encode(
        Review(
            authors=[
                object_encode(Person(givenNames=["Joe"],
                                     familyNames=["James"]))
            ],
            title="Review of my preprint",
            itemReviewed=object_encode(
                Article(identifiers=[
                    object_encode(
                        PropertyValue(name="doi", value="10.5555/54320"))
                ])),
        ))

    job = Register(credentials=credentials)
    result = job.do(
        node=review,
        doi="10.47704/54321",
        url="https://example.org",
        batch="the-unique-batch-id",
    )

    assert isinstance(result, dict)
    assert is_isodate(result["deposited"])
    assert isinstance(result["deposit_request"], dict)
    assert isinstance(result["deposit_response"], dict)
    assert result["deposit_success"]
Esempio n. 2
0
def test_register_article():
    """
    Test registration of an Article.
    """
    article = object_encode(
        Article(
            authors=[
                object_encode(Person(givenNames=["Joe"],
                                     familyNames=["James"]))
            ],
            title="My preprint",
        ))

    job = Register(credentials=credentials)
    result = job.do(
        node=article,
        doi="10.47704/54320",
        url="https://example.org",
        batch="the-unique-batch-id",
    )

    assert isinstance(result, dict)
    assert is_isodate(result["deposited"])
    assert isinstance(result["deposit_request"], dict)
    assert isinstance(result["deposit_response"], dict)
    assert result["deposit_success"]
Esempio n. 3
0
def create_nodes_for_project(project):
    """
    Create some nodes for a project.

    The purpose of this is mainly to able to be able to preview
    the HTML templates used for `Nodes` with real-ish data.

    Generates the same nodes for every project (so you can
    view them regardless of which test user you are logged in
    as).
    """

    nodes = [
        Article(),
        CodeChunk(programmingLanguage="r", text="plot(mtcars)"),
        CodeExpression(programmingLanguage="js", text="x * y"),
        MathBlock(mathLanguage="tex",
                  text="\\int\\limits_a^b x^2  \\mathrm{d} x"),
        MathFragment(mathLanguage="asciimath", text="2 pi r"),
    ]

    for node in nodes:
        Node.objects.create(
            project=project,
            app="gsuita",
            host="https://example.com/some-doc",
            json=object_encode(node),
        )
Esempio n. 4
0
def rpc_json_object_encode(node: Node) -> typing.Union[dict, str]:
    """
    Like `stencila.schema.json.object_encode` but with support for `JsonRpcError`.
    """
    if isinstance(node, JsonRpcError):
        return {"code": node.code.value, "message": str(node), "data": node.data}

    return object_encode(node)
Esempio n. 5
0
def run(*args):
    for project in Project.objects.all():
        for node in nodes:
            Node.objects.get_or_create(
                project=project,
                key="{}-{}".format(project.name,
                                   node.__class__.__name__.lower()),
                app="gsuita",
                host="https://example.com/some-doc",
                json=object_encode(node),
            )
Esempio n. 6
0
def test_register_utf8():
    """
    Test registration of an article with UTF-8 chars.
    """
    job = Register(credentials=credentials)
    result = job.do(
        node=object_encode(
            Article(title="A title with non-ASCII chars Й in it.")),
        doi="10.47704/54321",
        url="https://example.org",
        batch="the-unique-batch-id",
    )

    assert result["deposit_success"]
Esempio n. 7
0
def test_no_credentials():
    """
    Test no credentials error.
    """
    if "CROSSREF_DEPOSIT_CREDENTIALS" in os.environ:
        del os.environ["CROSSREF_DEPOSIT_CREDENTIALS"]
    job = Register()
    result = job.do(
        node=object_encode(Article()),
        doi="10.5555/54321",
        url="https://example.org",
        batch="the-unique-batch-id",
    )
    assert isinstance(result, dict)
    assert len(result.keys()) == 0
Esempio n. 8
0
def test_bad_credentials():
    """
    Test incorrect credentials error.
    """
    job = Register(credentials="foo:bar")
    result = job.do(
        node=object_encode(Article()),
        doi="10.5555/54321",
        url="https://example.org",
        batch="the-unique-batch-id",
    )

    assert isinstance(result, dict)
    assert is_isodate(result["deposited"])
    assert isinstance(result["deposit_request"], dict)
    assert isinstance(result["deposit_response"], dict)
    assert not result["deposit_success"]