def test_that_only_locations_with_data_show_up(self): url = "/api/tests/preview/locations" gen_adult_record() gen_adult_record(cycle="cycle2") gen_adult_record(name="loc2", cycle="cycle2") gen_adult_record(name="loc3", cycle="cycle3", existing=None, new=None) params = DefinitionFactory().initial().get() response = self.app.post_json(url, user="******", params=params) json_response = response.content.decode("utf8") self.assertEqual(200, response.status_code) locations = loads(json_response).get("locations", []) self.assertEqual(2, len(locations)) assert_that( locations, has_item( has_entries({ "name": equal_to("loc1"), "district": equal_to("dis1"), "cycles": equal_to(["cycle1", "cycle2"]), })), ) assert_that( locations, has_item( has_entries({ "name": equal_to("loc2"), "district": equal_to("dis1"), "cycles": equal_to(["cycle2"]), })), )
def test_result_with_adult_records(self): gen_adult_record() params = DefinitionFactory().sampled().are_equal().get() response = self.app.post_json(self.url, user="******", params=params, expect_errors=True) json_response = loads(response.content.decode("utf8")) self.assertEqual(200, response.status_code) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G1"), "aggregation": "SUM", "values": equal_to([["form_a", 1.0, 12.0]]), "factored_values": equal_to([["form_a", 1.0, 12.0]]), "headers": equal_to(["new", "existing"]), "result": equal_to(13.0), })), ), )
def test_result_with_consumption_records(self): gen_consumption_record(opening_balance=10, closing_balance=20) params = DefinitionFactory().sampled().are_equal().fields( "opening_balance", "closing_balance").model("Consumption").factors(form_a=10).get() response = self.app.post_json(self.url, user="******", params=params, expect_errors=True) json_response = loads(response.content.decode("utf8")) self.assertEqual(200, response.status_code) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G1"), "aggregation": "SUM", "values": equal_to([["form_a", 10.0, 20.0]]), "factored_values": equal_to([["form_a", 100.0, 200.0]]), "headers": equal_to(["opening_balance", "closing_balance"]), "result": equal_to(300.0), })), ), )
def test_get_preview_formulations_for_other_test(self): definition = Definition.from_dict(DefinitionFactory().initial().get()) group = DefinitionGroup.from_dict({ "model": { "id": "Adult" }, "selected_formulations": ["a", "b"] }) check = DBBasedCheckPreview(definition=definition) formulations = check.get_preview_formulations(group) self.assertEqual(len(formulations), 2) self.assertEqual(formulations, ["a", "b"])
def test_that_models_can_be_overridden(self): gen_paed_record(formulation="form_tra") gen_paed_record(formulation="form_trb") gen_adult_record(formulation="form_tra", new=300, existing=300) definition_builder = DefinitionFactory().traced( tracer={ "slug": "trace1", "patient_formulations": ["form_tra", "form_trb"] }) definition_builder.model("Paed").model_overrides( {"trace1": { "id": "Adult", "formulations": ["form_tra"] }}) definition_builder.tracing_formulations("patient_formulations", "form_tra", "form_trb") definition_builder.are_equal() definition = definition_builder.get() response = self.app.post_json(self.url, user="******", params=definition, expect_errors=True) json_response = loads(response.content.decode("utf8")) self.assertEqual(200, response.status_code) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G1"), "aggregation": "SUM", "values": equal_to([["form_tra", 300.0, 300.0]]), "factored_values": equal_to([["form_tra", 300.0, 300.0]]), "headers": equal_to(["new", "existing"]), "result": equal_to(600.0), })), ), )
def test_that_a_sample_is_required(self): response = self.app.post_json( self.url, user="******", params=DefinitionFactory().initial().get(), expect_errors=True, ) json_response = loads(response.content.decode("utf8")) self.assertEqual(400, response.status_code) assert_that( json_response, has_entry(equal_to("sample"), has_item(equal_to("This field is required."))), )
def test_two_facility_with_tracing_type(self): gen_consumption_record(formulation="form_tra", opening_balance=10, closing_balance=20) params = DefinitionFactory().traced( tracer={ "slug": "trace1", "formulations": ["form_tra", "form_trb"] }).model("Consumption").tracing_formulations( "consumption_formulations", "form_tra", "form_trb").fields("opening_balance", "closing_balance").are_equal().get() response = self.app.post_json(self.url, user="******", params=params, expect_errors=True) json_response = loads(response.content.decode("utf8")) self.assertEqual(200, response.status_code) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G1"), "aggregation": "SUM", "values": equal_to([["form_tra", 10.0, 20.0]]), "factored_values": equal_to([["form_tra", 10.0, 20.0]]), "headers": equal_to(["opening_balance", "closing_balance"]), "result": equal_to(30.0), })), ), )
def test_get_preview_formulations_for_traced_test(self): definition = Definition.from_dict(DefinitionFactory().traced().get()) tracing_formulations = [ tf.as_dict_obj() for tf in TracingFormulations.objects.all() ] model = {"id": "Adult", "tracingFormulations": tracing_formulations} group = DefinitionGroup.from_dict({"model": model}) check = DBBasedCheckPreview(definition=definition) formulations = check.get_preview_formulations(group) self.assertEqual(len(formulations), 7) self.assertEqual( formulations, [ u"TDF/3TC/EFV (PMTCT)", u"TDF/3TC/EFV (ADULT)", u"ABC/3TC/LPV/r", u"ABC/3TC/EFV", u"ABC/3TC/NVP", u"ABC/3TC/EFV", u"AZT/3TC/EFV", ], )
def test_no_negatives(self): gen_consumption_record(formulation="form1", opening_balance=10, closing_balance=20) gen_consumption_record(formulation="form2", opening_balance=40, closing_balance=30) definition_builder = DefinitionFactory().sampled().formulations( "form1", "form2") definition_builder.fields("opening_balance", "closing_balance") definition_builder.model("Consumption") definition_builder.aggregation("VALUE") definition_builder.has_no_negatives() response = self.app.post_json( self.url, user="******", params=definition_builder.get(), expect_errors=True, ) json_response = loads(response.content.decode("utf8")) self.assertEqual(200, response.status_code) # assert_that(json_response, has_entry(equal_to("groups"), has_item( # has_entries( # { # "name": equal_to('G1'), # "aggregation": "VALUES", # "values": equal_to([['form1', 10.0, 20.0], ['form2', 40.0, 30.0]]), # "headers": equal_to(['opening_balance', 'closing_balance']), # "result": equal_to(100.0) # } # # ) # ))) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G2"), "aggregation": "VALUE", "values": equal_to([["form1", 10.0, 20.0], ["form2", 40.0, 30.0]]), "headers": equal_to(["opening_balance", "closing_balance"]), "result": equal_to([10.0, 20.0, 40.0, 30.0]), })), ), ) assert_that( json_response, has_entry(equal_to("result"), has_entries({"DEFAULT": equal_to("YES")})), )
def test_less_than(self): gen_consumption_record(formulation="form1", opening_balance=10, closing_balance=20) gen_consumption_record(formulation="form2", opening_balance=40, closing_balance=30) definition_builder = DefinitionFactory().sampled().formulations( "form1", "form2") definition_builder.fields("opening_balance", "closing_balance") definition_builder.model("Consumption") definition_builder.percentage_variance_is_less_than(50) response = self.app.post_json( self.url, user="******", params=definition_builder.get(), expect_errors=True, ) json_response = loads(response.content.decode("utf8")) self.assertEqual(200, response.status_code) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G1"), "aggregation": "SUM", "values": equal_to([["form1", 10.0, 20.0], ["form2", 40.0, 30.0]]), "headers": equal_to(["opening_balance", "closing_balance"]), "result": equal_to(100.0), })), ), ) assert_that( json_response, has_entry( equal_to("groups"), has_item( has_entries({ "name": equal_to("G2"), "aggregation": "SUM", "values": equal_to([["form1", 10.0, 20.0], ["form2", 40.0, 30.0]]), "headers": equal_to(["opening_balance", "closing_balance"]), "result": equal_to(100.0), })), ), ) assert_that( json_response, has_entry(equal_to("result"), has_entries({"DEFAULT": equal_to("YES")})), )
def test_can_get_check_by_type(self): definition = DefinitionFactory().initial().getDef() check = get_check(definition) self.assertIsInstance(check, UserDefinedFacilityCheck)
def test_can_get_check_by_class_name(self): definition = DefinitionFactory().based_on_class( "dashboard.checks.legacy.blanks.MultipleCheck" ).getDef() check = get_check(definition) self.assertIsInstance(check, MultipleCheck)
def test_get_result_key_should_return_key_for_tracer(self): definition = Definition.from_dict(DefinitionFactory().initial().get()) check = DBBasedCheckPreview(definition=definition) key = check.get_result_key(Tracer.F1()) self.assertEqual(key, "tdf3tcefv-adult")
def test_get_result_key_should_return_default_if_no_tracer_is_given(self): definition = Definition.from_dict(DefinitionFactory().initial().get()) check = DBBasedCheckPreview(definition=definition) key = check.get_result_key(None) self.assertEqual(key, "DEFAULT")