def test_get_with_uri(db200final_cfg):
    "Test the connector get method for a single statement when using an uri instead of the id."
    connector = statement.StatementConnector(db200final_cfg)
    pers = connector.get('https://example.com/statements/2a')
    assert pers['@id'] == 'Stmt00002'
    pers = connector.get('https://example.com/statements/2b')
    assert pers['@id'] == 'Stmt00002'
def test_search_sorting(db200final_cfg):
    "Test if sort_by parameter works."
    connector = statement.StatementConnector(db200final_cfg)

    # default sort_by is 'createdWhen'
    result = connector.search(size=10, page=1)
    sort_fields = [s["createdWhen"] for s in result]
    assert sort_fields == sorted(sort_fields)

    # I've ommitted uris here, because ist does not make much sense
    # TODO: add addditional sort_by test values
    for fieldname in ("@id", "createdBy", "createdWhen", "modifiedBy",
                      "modifiedWhen"):
        result = connector.search(size=10, page=1, sort_by=fieldname)
        sort_fields = [s[fieldname] for s in result]
        assert sort_fields == sorted(
            sort_fields), "sorting for {} does not work".format(fieldname)

        result = connector.search(size=10,
                                  page=1,
                                  sort_by=fieldname,
                                  sort_order="ASC")
        sort_fields = [s[fieldname] for s in result]
        assert sort_fields == sorted(
            sort_fields), "sorting for {} does not work".format(fieldname)

        result = connector.search(size=10,
                                  page=1,
                                  sort_by=fieldname,
                                  sort_order="DESC")
        sort_fields = [s[fieldname] for s in result]
        assert sort_fields == sorted(
            sort_fields,
            reverse=True), "sorting for {} does not work".format(fieldname)
Beispiel #3
0
def test_filter_by_statement_id(db200final_cfg):
    "Test the statementId filter."
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=200, page=1,
                                statementId="Stmt00024")) == 1
    # searching for ids only matches full ids (not parts of id)
    assert connector.search(size=100, page=1, factoidId="Stmt001") == []
def test_get(db200final_cfg):
    "Test the connector get method without filters."
    connector = statement.StatementConnector(db200final_cfg)
    stmt = connector.get('Stmt00001')
    assert stmt['@id'] == 'Stmt00001'
    assert stmt['createdBy'] == 'Creator 00001'
    assert stmt['createdWhen'] == '2003-02-15T00:03:00'
    assert stmt['modifiedBy'] == ''
    assert stmt['modifiedWhen'] == ''
    assert stmt['name'] == 'Statement 00001'
    assert stmt['date']['sortDate'] == '1802-04-22'
    assert stmt['date']['label'] == 'Historical Date 00003'
    assert stmt['role']['uri'] == 'https://example.com/roles/00002'
    assert stmt['role']['label'] == 'Role 00002'
    assert stmt['statementContent'] == 'Statement content 00002'
    assert stmt['statementType'][
        'uri'] == 'https://example.com/statementtypes/00002'
    assert stmt['statementType']['label'] == 'Statement type 00002'
    assert stmt['memberOf']['uri'] == 'https://example.com/groups/00002'
    assert stmt['memberOf']['label'] == 'Group 00002'
    assert stmt['uris'] == ['https://example.com/statements/1a']
    assert stmt['places'][0]['uri'] == 'https://example.com/places/00002'
    assert stmt['places'][0]['label'] == 'Place 00002'
    assert stmt['places'][1]['label'] == 'Place 00003'
    assert stmt['relatesToPersons'][0][
        'uri'] == 'https://example.com/relatedpersons/00002'
    assert stmt['relatesToPersons'][0]['label'] == 'Related person 00002'
    assert stmt['relatesToPersons'][1]['label'] == 'Related person 00003'

    assert stmt['factoid-refs'][0]['@id'] == 'F00001'
    assert stmt['factoid-refs'][0]['source-ref']['@id'] == 'S00002'
    assert stmt['factoid-refs'][0]['person-ref']['@id'] == 'P00002'
    assert stmt['factoid-refs'][0]['statement-refs'][0]['@id'] == 'Stmt00001'
    assert stmt['factoid-refs'][0]['statement-refs'][1]['@id'] == 'Stmt00002'
Beispiel #5
0
def test_filter_by_relates_to_person(db200final_cfg):
    "Filter by name= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(
        connector.search(size=100,
                         page=1,
                         relatesToPerson="Related person 00056")) == 6
    assert len(
        connector.search(size=100,
                         page=1,
                         relatesToPerson="related person 00056")) == 6
    assert len(
        connector.search(size=100,
                         page=1,
                         relatesToPerson="lated person 00056")) == 6

    assert len(
        connector.search(
            size=100,
            page=1,
            relatesToPerson="https://example.com/relatedpersons/00058")) == 3
    assert connector.search(
        size=100,
        page=1,
        relatesToPerson="https://example.com/RelatedPersons/00058") == []
    assert connector.search(
        size=100,
        page=1,
        relatesToPerson="https://example.com/relatedpersons/0005") == []
def test_update_new(mockcfg, mockstatement1):
    "Create new source via PUT"
    connector = statement.StatementConnector(mockcfg)
    rdata = connector.update("Foo99", mockstatement1)
    for key in mockstatement1:
        assert rdata[key] == mockstatement1[key], "Uxexpected value for key {}".format(
            key
        )
Beispiel #7
0
def test_filter_by_source_label(db200final_cfg):
    "Test the label filter."
    connector = statement.StatementConnector(db200final_cfg)
    # search for exact label
    assert len(connector.search(size=100, page=1, label="Source 00002")) == 4
    # search for part of label
    assert len(connector.search(size=100, page=1, label="Source 0000")) == 40
    # search for non existing label
    assert connector.search(size=100, page=1, label="FooFooBar") == []
def test_create(mockcfg, mockstatement1):
    "Test the save() method."
    connector = statement.StatementConnector(mockcfg)
    rdata = connector.create(mockstatement1)

    for key in mockstatement1:
        assert rdata[key] == mockstatement1[key], "Uxexpected value for key {}".format(
            key
        )
def test_delete(mockcfg, mockstatement1):
    "Test the delete method."
    connector = statement.StatementConnector(mockcfg)
    # TODO: find a better way (without create)
    connector.create(mockstatement1)
    rdata = connector.get(mockstatement1["@id"])
    assert rdata
    connector.delete(mockstatement1["@id"])
    rdata = connector.get(mockstatement1["@id"])
    assert rdata is None
Beispiel #10
0
def test_get_factoid_refs(db200final_cfg):
    connector = statement.StatementConnector(db200final_cfg)
    st = connector.get('Stmt00001')
    refs = st['factoid-refs']
    assert len(refs) == 1

    assert refs[0]['@id'] == 'F00001'
    assert refs[0]['source-ref']['@id'] == 'S00002'
    assert refs[0]['person-ref']['@id'] == 'P00002'
    assert refs[0]['statement-refs'][0]['@id'] == 'Stmt00001'
Beispiel #11
0
def test_filter_factoid_and_source(db200final_cfg):
    "Test the sourceId filter together with factoid filter."
    connector = statement.StatementConnector(db200final_cfg)
    # there are 2 person with this source id
    assert len(connector.search(size=100, page=1, sourceId="S00055")) == 10
    # if we add a factoidId, there should be only one left
    assert len(
        connector.search(size=100,
                         page=1,
                         sourceId="S00055",
                         factoidId="F00054")) == 5
Beispiel #12
0
def test_filter_by_p(db200final_cfg):
    "Test the p= parameter."
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=200, page=1, p="P00058")) == 6
    assert len(connector.search(size=200, page=1, p="P0005")) == 66
    assert len(
        connector.search(size=200, page=1,
                         p="https://example.com/persons/22a")) == 6
    # Test if only full uris are matched, so only '6', but not 60
    assert len(
        connector.search(size=200, page=1,
                         p="https://example.com/persons/22")) == 0
Beispiel #13
0
def test_filter_by_st(db200final_cfg):
    "Test the st= parameter."
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, s="Source 00031")) == 2

    # id
    assert len(connector.search(size=100, page=1, st="Stmt00048")) == 1
    # date.label
    assert len(connector.search(size=100, page=1,
                                st="Historical Date 00061")) == 2
    # memberOf.label
    assert len(connector.search(size=100, page=1, st="Group 00061")) == 6
    # memberOf.uri
    assert len(
        connector.search(size=100,
                         page=1,
                         st="https://example.com/groups/00061")) == 3
    # name
    assert len(connector.search(size=100, page=1, st="Statement 00048")) == 1
    # role.label
    assert len(connector.search(size=100, page=1, st="Role 00061")) == 6
    # statementContent
    assert len(connector.search(size=100, page=1,
                                st="Statement content 00061")) == 3
    # statementtype.label
    assert len(connector.search(size=100, page=1,
                                st="Statement type 00061")) == 6
    # statementType.uri
    assert len(
        connector.search(size=100,
                         page=1,
                         st="https://example.com/statementtypes/00021")) == 9
    # places.label
    assert len(connector.search(size=100, page=1, st="Place 00051")) == 12
    # places.uri
    assert len(
        connector.search(size=100,
                         page=1,
                         st="https://example.com/places/00053")) == 6
    # relatesToPersons.label
    assert len(connector.search(size=100, page=1,
                                st="Related person 00056")) == 6
    # relatesToPersons.uri
    assert len(
        connector.search(size=100,
                         page=1,
                         st="https://example.com/relatedpersons/00058")) == 3
    # uris
    assert len(
        connector.search(size=100,
                         page=1,
                         st="https://example.com/statements/61a")) == 1
Beispiel #14
0
def test_filter_by_statement_content(db200final_cfg):
    "Filter by statementContent= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(
        connector.search(size=100,
                         page=1,
                         statementContent="Statement content 00061")) == 3
    assert len(
        connector.search(size=100,
                         page=1,
                         statementContent="statement content 00061")) == 3
    assert len(
        connector.search(size=100,
                         page=1,
                         statementContent="ement content 00061")) == 3
def test_search_paging(db200final_cfg):
    "Test search() without filtering."
    connector = statement.StatementConnector(db200final_cfg)
    result = connector.search(size=30, page=1)
    assert len(result) == 30

    result = connector.search(size=30, page=2)
    assert len(result) == 30

    # Make sure all remaining sources are returned if size > number of pages
    result = connector.search(size=1000, page=1)
    assert len(result) == 600

    # make sure accessing objects outside range does return an empty list
    result = connector.search(size=600, page=2)
    assert result == []
Beispiel #16
0
def test_filter_by_place(db200final_cfg):
    "Filter by name= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, place="Place 00053")) == 12
    assert len(connector.search(size=100, page=1, place="place 00053")) == 12
    assert len(connector.search(size=100, page=1, place="ace 00053")) == 12

    assert len(
        connector.search(size=100,
                         page=1,
                         place="https://example.com/places/00053")) == 6
    assert connector.search(size=100,
                            page=1,
                            place="https://example.com/PLaces/00053") == []
    assert connector.search(size=100,
                            page=1,
                            place="https://example.com/places/0005") == []
Beispiel #17
0
def test_filter_by_role(db200final_cfg):
    "Filter by name= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, role="Role 00051")) == 6
    assert len(connector.search(size=100, page=1, role="role 00051")) == 6
    assert len(connector.search(size=100, page=1, role="le 00051")) == 6

    assert len(
        connector.search(size=100,
                         page=1,
                         role="https://example.com/roles/00053")) == 6
    assert connector.search(size=100,
                            page=1,
                            role="https://example.com/ROLES/00053") == []
    assert connector.search(size=100,
                            page=1,
                            role="https://example.com/roles/0005") == []
def test_update_update(mockcfg, mockstatement1):
    "Test updating an existing person"
    # create entry
    connector = statement.StatementConnector(mockcfg)
    connector.update("Foo99", mockstatement1)

    mockstatement1["name"] = "Name 1a"
    mockstatement1["date"] = {
        "label": "On christmas eve 1855",
        "sortDate": "1855-12-24",
    }
    mockstatement1["role"] = {"label": "Role 1a", "uri": "https://example.com/roles/1a"}
    mockstatement1["statementContent"] = "Statement Content 1a"
    mockstatement1["statementType"] = {
        "label": "Statement Type 1a",
        "uri": "https://example.com/stmttypes/1a",
    }
    mockstatement1["memberOf"] = {
        "label": "Member of 1a",
        "uri": "https://example.com/members/1a",
    }
    mockstatement1["relatesToPersons"] = [
        {"label": "RelPerson 1a", "uri": "https://example.com/relpersons/1a"},
        {"label": "RelPerson 2a", "uri": "https://example.com/relpersons/2a"},
    ]
    mockstatement1["places"] = [
        {"label": "Place 1a", "uri": "http://eample.com/places/1a"},
        {"label": "Place 2a", "uri": "http://eample.com/places/2a"},
    ]
    mockstatement1["uris"] = [
        "https://example.com/statements/1a",
        "https://example.com/statements/2a",
    ]

    # update entry
    rdata = connector.update("Foo99", copy.deepcopy(mockstatement1))

    for key in mockstatement1:
        assert rdata[key] == mockstatement1[key], "Uxexpected value for key {}".format(
            key
        )
Beispiel #19
0
def test_filter_by_statement_type(db200final_cfg):
    "Filter by statementContent= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(
        connector.search(size=100,
                         page=1,
                         statementType="Statement type 00061")) == 6
    assert len(
        connector.search(size=100,
                         page=1,
                         statementType="statement TYPE 00061")) == 6
    assert len(
        connector.search(size=100, page=1,
                         statementType="tement type 00061")) == 6
    assert len(
        connector.search(
            size=100,
            page=1,
            statementType="https://example.com/statementtypes/00021")) == 9
    assert connector.search(
        size=100,
        page=1,
        statementType="https://example.com/statementtypes/0002") == []
Beispiel #20
0
def test_filter_by_member_of(db200final_cfg):
    "Filter by memberOf= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, memberOf='Group 00051')) == 6
    # search for partial entry in label
    assert len(connector.search(size=100, page=1, memberOf='oup 00051')) == 6
    # searching in label is case insensitive
    assert len(connector.search(size=100, page=1, memberOf='group 00051')) == 6

    # searching in uri is case sensitive and only matches full matches
    assert len(
        connector.search(size=100,
                         page=1,
                         memberOf='https://example.com/groups/00053')) == 6
    # Upercase 'G' should not be found
    assert connector.search(size=100,
                            page=1,
                            memberOf='https://example.com/Groups/00053') == []
    assert connector.search(size=100,
                            page=1,
                            memberOf='https://example.com/Groups/00053') == []
    assert connector.search(size=100,
                            page=1,
                            memberOf='https://example.com/Groups/0005') == []
def test_count(db200final_cfg):
    "Test the connectors count method."
    conector = statement.StatementConnector(db200final_cfg)
    assert conector.count() == 600
def test_search_sorting_second_value(cfg_10_identical_statements):
    "If sortBy values are identical use id as secondary sort value."
    connector = statement.StatementConnector(cfg_10_identical_statements)
    result = connector.search(size=10, page=1, sort_by="createdWhen")
    sort_fields = [(s["createdWhen"], s["@id"]) for s in result]
    assert sort_fields == sorted(sort_fields)
Beispiel #23
0
def test_filter_by_name(db200final_cfg):
    "Filter by name= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, name="Statement 0001")) == 9
    assert len(connector.search(size=100, page=1, name="statement 0001")) == 9
    assert len(connector.search(size=100, page=1, name="atement 0001")) == 9
def test_delete_non_existing_object(mockcfg):
    "Calling delete() on a non exisiting object should cause an exception."
    connector = statement.StatementConnector(mockcfg)
    with pytest.raises(orm.ObjectNotFound):
        connector.delete("foobarfoo")
Beispiel #25
0
def test_filter_by_to(db200final_cfg):
    "Filter by statementContent= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, to='1800-06-01')) == 15
Beispiel #26
0
def test_filter_by_from(db200final_cfg):
    "Filter by from= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=100, page=1, from_='1803-03-30')) == 18
Beispiel #27
0
def test_filter_by_s(db200final_cfg):
    "Test the s= parameter."
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=200, page=1, s="S00033")) == 6
    assert len(connector.search(size=200, page=1, s="S0003")) == 60
    assert len(connector.search(size=200, page=1, s="Source 00031")) == 2
Beispiel #28
0
def test_filter_by_f(db200final_cfg):
    "Test the f= parameter"
    connector = statement.StatementConnector(db200final_cfg)
    assert len(connector.search(size=220, page=1, f="F00033")) == 4
    assert len(connector.search(size=200, page=1, f="F0003")) == 30