def get_many(cls, ids: List[str] = None, terms: List[str] = None, vendors: List[str] = None, names: List[str] = None, coverages: List[str] = None, limit: int = None): """ Get a factor risk model from Marquee :param ids: list of model identifiers in Marquee :param terms: list of model terms :param vendors: list of model vendors :param names: list of model names :param coverages: list of model coverages :param limit: limit of number of models in response :return: Factor Risk Model object """ models = GsRiskModelApi.get_risk_models(ids=ids, terms=terms, vendors=vendors, names=names, coverages=coverages, limit=limit) return cls.from_many_targets(models)
def test_get_risk_models(mocker): mock_response = { 'results': [ RiskModel.from_dict({ "coverage": "Global", "id": "WW_TEST_MODEL", "name": "World Wide Medium Term Test Model", "term": "Medium", "vendor": "Goldman Sachs", "universeIdentifier": "gsid", "type": "Factor", "version": 4 }), RiskModel.from_dict({ "coverage": "Global", "id": "WW_TEST_MODEL_2", "name": "World Wide Medium Term Test Model 2", "term": "Medium", "vendor": "Goldman Sachs", "universeIdentifier": "gsid", "version": 2, "type": "Thematic" }) ], 'totalResults': 2 } expected_response = [ RiskModel(coverage='Global', id='WW_TEST_MODEL', name='World Wide Medium Term Test Model', term='Medium', vendor='Goldman Sachs', universe_identifier='gsid', version=4, type='Factor'), RiskModel(coverage='Global', id='WW_TEST_MODEL_2', name='World Wide Medium Term Test Model 2', term='Medium', vendor='Goldman Sachs', universe_identifier='gsid', version=2, type='Thematic') ] # mock GsSession mocker.patch.object(GsSession.__class__, 'default_value', return_value=GsSession.get(Environment.QA, 'client_id', 'secret')) mocker.patch.object(GsSession.current, '_get', return_value=mock_response) # run test response = GsRiskModelApi.get_risk_models() GsSession.current._get.assert_called_with('/risk/models?', cls=RiskModel) assert response == expected_response