def test_sensitivity_analysis_empty(self, reqmock): # result can be an empty list reqmock.get('https://api/optimization_views/abc_id', status_code=200, text='{"id":"abc_id"}') ov = OptimizationView.retrieve('abc_id') reqmock.get('https://api/optimization_views/abc_id/sensitivity_analysis', status_code=200, text='{"sensitivities": []}') r = ov.sensitivity_analysis() assert hasattr(r, 'sensitivities') assert len(r.sensitivities) == 0
def test_sensitivity_analysis_with_candidates(self, reqmock, candidates, expected_len, get_string): # list of candidates should be translated to the correct api request reqmock.get('https://api/optimization_views/abc_id', status_code=200, text='{"id":"abc_id"}') ov = OptimizationView.retrieve('abc_id') reqmock.get(get_string, status_code=200, text=TestOptimizationResource.sensitivity_text) r = ov.sensitivity_analysis(candidates=candidates) assert hasattr(r, 'sensitivities') assert len(r.sensitivities) == expected_len for i in range(len(r.sensitivities)): for attribute in TestOptimizationResource.required_attributes: assert hasattr(r.sensitivities[i], attribute)
def test_candidate_parameters(self, reqmock): candidate_parameters_response = ('{' ' "items": [{"foo": "bar"}],' ' "meta": {"total_count": 1,"limit": 100,"offset": 0}' '}') reqmock.get('https://api/optimization_views/abc123/candidate_parameters', status_code=200, text=candidate_parameters_response) r = OptimizationView(id='abc123').candidate_parameters() assert isinstance(r, list) assert len(r) == 1 assert type(r[0]) == Candidate assert r[0].foo == 'bar'
def test_initial_portfolio_metrics(self, reqmock): reqmock.get('https://api/optimization_views/abc123/initial_portfolio_metrics', status_code=200, text='{"num": 1.0}') f = OptimizationView(id='abc123').initial_metrics() assert f.num == 1.0
def test_candidate_metrics(self, reqmock): reqmock.get('https://api/optimization_views/abc123/candidate_metrics', status_code=200, text='{"num": 1.0}') f = OptimizationView(id='abc123').candidate_metrics() assert f.num == 1.0
def test_result(self, reqmock): reqmock.get('https://api/optimization_views/abc123/result', status_code=200, text='{"num": 1.0}') f = OptimizationView(id='abc123').result() assert f.num == 1.0
def test_retrieve(self, reqmock): reqmock.get('https://api/optimization_views/abc123', status_code=200, text='{"num": 1.0}') f = OptimizationView.retrieve('abc123') assert f.num == 1.0