Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F90357098
test_selfcites.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Oct 31, 22:26
Size
5 KB
Mime Type
text/x-python
Expires
Sat, Nov 2, 22:26 (2 d)
Engine
blob
Format
Raw Data
Handle
22059876
Attached To
R3600 invenio-infoscience
test_selfcites.py
View Options
# -*- coding: utf-8 -*-
#
# This file is part of Invenio.
# Copyright (C) 2011, 2012, 2013 CERN.
#
# Invenio is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# Invenio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Invenio; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
"""Unit tests for the search engine query parsers."""
try
:
from
mock
import
patch
HAS_MOCK
=
True
except
ImportError
:
HAS_MOCK
=
False
from
invenio.testsuite
import
make_test_suite
,
run_test_suite
,
InvenioTestCase
def
get_author_tags_mock
():
return
{
'collaboration_name'
:
'1'
}
def
get_fieldvalues_mock
(
dummy_recID
,
tag
):
return
[
tag
]
def
get_personids_from_bibrec_mock
(
recID
):
graph
=
{
1
:
(
1
,),
2
:
(
1
,
2
),
3
:
(
2
,),
4
:
(
3
,),
5
:
(
4
,),
}
return
graph
[
recID
]
def
get_person_bibrecs_mock
(
personID
):
graph
=
{
1
:
(
1
,
2
),
2
:
(
2
,
3
),
3
:
(
4
,),
4
:
(
5
,),
}
return
graph
[
personID
]
def
get_authors_from_record_mock
(
recID
,
dummy_tags
):
return
get_personids_from_bibrec_mock
(
recID
)
def
get_collaborations_from_record_mock
(
dummy_recID
):
return
()
def
get_cited_by_mock
(
*
args
):
def
f
(
dummy
):
return
args
return
f
def
get_record_coauthors_mock
(
recID
,
dummy_tags
):
coauthors
=
set
()
for
personid
in
get_personids_from_bibrec_mock
(
recID
):
recs
=
get_person_bibrecs_mock
(
personid
)
for
recid
in
recs
:
coauthors
.
update
(
get_personids_from_bibrec_mock
(
recid
))
return
coauthors
# Document Graph
# Docid -> Authorid
# 1 -> 1
# 2 -> 1,2
# 3 -> 2
# 4 -> 3
# 5 -> 4
class
SelfCitesOtherTests
(
InvenioTestCase
):
if
HAS_MOCK
:
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_fieldvalues'
,
get_fieldvalues_mock
)
def
get_collaborations_from_record
(
self
):
"""
Check that it's fetching collaborations
"""
from
invenio.legacy.bibrank.selfcites_indexer
import
get_collaborations_from_record
tags
=
get_author_tags_mock
()
collaborations
=
get_collaborations_from_record
(
2
,
tags
)
self
.
assertEqual
(
collaborations
,
[
'1'
])
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_collaborations_from_record'
,
get_collaborations_from_record_mock
)
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_authors_from_record'
,
get_authors_from_record_mock
)
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_cited_by'
,
get_cited_by_mock
(
4
,
5
))
def
test_compute_self_citations_no_self_citations
(
self
):
"""
Check self citations count matches when no self citations
are present
see document graph up in this file
"""
from
invenio.legacy.bibrank.selfcites_indexer
import
compute_self_citations
tags
=
get_author_tags_mock
()
self_citations
=
compute_self_citations
(
1
,
tags
,
get_record_coauthors_mock
)
self
.
assertEqual
(
self_citations
,
set
())
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_collaborations_from_record'
,
get_collaborations_from_record_mock
)
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_authors_from_record'
,
get_authors_from_record_mock
)
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_cited_by'
,
get_cited_by_mock
(
3
,
4
))
def
test_compute_self_citations
(
self
):
"""Check self citations count matches in a typical case
1 has a self-citation
see document graph up in this file
"""
from
invenio.legacy.bibrank.selfcites_indexer
import
compute_self_citations
tags
=
get_author_tags_mock
()
self_citations
=
compute_self_citations
(
1
,
tags
,
get_record_coauthors_mock
)
self
.
assertEqual
(
self_citations
,
set
([
3
]))
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_collaborations_from_record'
,
get_collaborations_from_record_mock
)
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_authors_from_record'
,
get_authors_from_record_mock
)
@patch
(
'invenio.legacy.bibrank.selfcites_indexer.get_cited_by'
,
get_cited_by_mock
(
1
,
2
,
3
))
def
test_compute_self_citations_all_self_citations
(
self
):
"""
Check self citations count matches when all citations
are self citations
see document graph up in this file
"""
from
invenio.legacy.bibrank.selfcites_indexer
import
compute_self_citations
tags
=
get_author_tags_mock
()
total_citations
=
compute_self_citations
(
1
,
tags
,
get_record_coauthors_mock
)
self
.
assertEqual
(
total_citations
,
set
([
1
,
2
,
3
]))
TEST_SUITE
=
make_test_suite
(
SelfCitesOtherTests
)
if
__name__
==
"__main__"
:
run_test_suite
(
TEST_SUITE
)
Event Timeline
Log In to Comment