9
9
import pytest
10
10
from aiohttp import ClientSession
11
11
from servicelib .client_session import get_client_session
12
- from simcore_service_webserver .scicrunch import (
13
- SciCrunchAPI ,
14
- SciCrunchSettings ,
15
- ValidationResult ,
16
- )
12
+ from simcore_service_webserver .scicrunch import SciCrunchAPI , SciCrunchSettings
13
+ from simcore_service_webserver .scicrunch_api import ValidationResult
14
+ from simcore_service_webserver .scicrunch_models import ListOfResourceHits
17
15
18
16
# TODO: emulate server for testing
19
17
RRID_PORTAL_API_KEY = os .environ .get ("RRID_PORTAL_API_KEY" )
@@ -29,19 +27,32 @@ async def fake_app(monkeypatch, loop):
29
27
30
28
31
29
@pytest .fixture
32
- async def scicrunch (fake_app ):
33
- scicrunch_api = SciCrunchAPI .create_instance (
30
+ async def scicrunch (fake_app ) -> SciCrunchAPI :
31
+ scicrunch_api = SciCrunchAPI .acquire_instance (
34
32
app = fake_app , settings = SciCrunchSettings (api_key = RRID_PORTAL_API_KEY )
35
33
)
36
34
assert scicrunch_api is SciCrunchAPI .get_instance (fake_app )
37
35
return scicrunch_api
38
36
39
37
38
+ # From https://scicrunch.org/resources
39
+ VALID_RRID_SAMPLES = [
40
+ ("Antibody" , "RRID:AB_90755" ),
41
+ ("Plasmid" , "RRID:Addgene_44362" ),
42
+ ("Organism" , "RRID:MMRRC_026409-UCD" ),
43
+ ("Cell Line" , "RRID:CVCL_0033" ),
44
+ ("Tool" , "RRID:SCR_007358" ),
45
+ ]
46
+
47
+
48
+ ## TESTS -------------------------------------------------------
49
+
50
+
40
51
@pytest .mark .skipif (
41
52
RRID_PORTAL_API_KEY is None ,
42
53
reason = "Testing agains actual service is intended for manual exploratory testing" ,
43
54
)
44
- async def test_scicrunch_api_specs (loop ):
55
+ async def test_scicrunch_service_api_specs (loop ):
45
56
async with ClientSession () as client :
46
57
resp = await client .get ("https://scicrunch.org/swagger-docs/swagger.json" )
47
58
openapi_specs = await resp .json ()
@@ -63,9 +74,10 @@ async def test_scicrunch_api_specs(loop):
63
74
("Octave" , "RRID:SCR_014398" ), # TODO: should be valid!
64
75
(None , "SCR_INVALID_XXXXX" ),
65
76
(None , "ANOTHER_INVALID_RRID" ),
66
- ],
77
+ ]
78
+ + VALID_RRID_SAMPLES ,
67
79
)
68
- async def test_rrid_validation (name , rrid , scicrunch ):
80
+ async def test_scicrunch_service_rrid_validation (name , rrid , scicrunch ):
69
81
70
82
validation_result = await scicrunch .validate_rrid (rrid )
71
83
@@ -85,8 +97,36 @@ async def test_rrid_validation(name, rrid, scicrunch):
85
97
("Language::Python" , "SCR_008394" ),
86
98
("Language::Octave" , "SCR_014398" ),
87
99
("osparc" , "SCR_018997" ), # proper citation: (o²S²PARC, RRID:SCR_018997)
88
- ],
100
+ ]
101
+ + VALID_RRID_SAMPLES ,
89
102
)
90
- async def test_get_rrid_fields (name , rrid , scicrunch ):
103
+ async def test_scicrunch_service_get_rrid_fields (name , rrid , scicrunch ):
104
+ assert name is not None
91
105
resource = await scicrunch .get_resource_fields (rrid )
92
106
assert resource .scicrunch_id == rrid
107
+
108
+
109
+ @pytest .mark .skipif (
110
+ RRID_PORTAL_API_KEY is None ,
111
+ reason = "Testing agains actual service is intended for manual exploratory testing" ,
112
+ )
113
+ async def test_scicrunch_service_autocomplete (scicrunch ):
114
+
115
+ expected = ListOfResourceHits (
116
+ __root__ = [
117
+ {
118
+ "rid" : "SCR_000860" ,
119
+ "original_id" : "nlx_155680" ,
120
+ "name" : "cbiNifti: Matlab/Octave Nifti library" ,
121
+ },
122
+ {
123
+ "rid" : "SCR_009637" ,
124
+ "original_id" : "nlx_155924" ,
125
+ "name" : "Pipeline System for Octave and Matlab" ,
126
+ },
127
+ {"rid" : "SCR_014398" , "original_id" : "SCR_014398" , "name" : "GNU Octave" },
128
+ ]
129
+ )
130
+
131
+ hits = await scicrunch .search_resource ("octave" )
132
+ assert expected == hits
0 commit comments