def test_view_filter_same_attrib_two_element(self): """Test that choosing 2 att elems from same attribute should return matching view filter in body.""" f = Filter(attributes=self.attributes, metrics=self.metrics, attr_elements=self.elements) f._select_attr_el(self.element_sel_same_list) vf = f._view_filter() self.assertIn("operator", vf) self.assertEqual( vf["operator"], "In") # should be In because elems are for same parent attr self.assertIn("operands", vf) att, elems = vf["operands"] self.assertEqual(att["type"], "attribute") self.assertEqual(elems["type"], "elements") for obj_id in self.element_sel_same_list: self.assertEqual(att["id"], f.attr_elems.get(obj_id)["attribute_id"]) for elem, obj_id in zip(elems["elements"], self.element_sel_same_list): self.assertEqual(elem["id"], obj_id)
def test_view_filter_none(self): """Test that adding no attributes elements yields None view filter.""" f = Filter(attributes=self.attributes, metrics=self.metrics, attr_elements=self.elements) # should be none if none are obj_id vf = f._view_filter() self.assertIsNone(vf)
def test_filter_body_attribute_element_list(self): """Test for presence of attribute element ids in the filter body.""" f = Filter(attributes=self.attributes, metrics=self.metrics, attr_elements=self.elements) f._select_attr_el(self.element_sel_list) vf = f._view_filter() fb = f._filter_body() self.assertDictEqual(fb["viewFilter"], vf)
def test_view_filter_not_none(self): """Test that adding no attributes elements yields None view filter.""" f = Filter(attributes=self.attributes, metrics=self.metrics, attr_elements=self.elements) # should not be none if some are obj_id f._select_attr_el(self.element_sel) vf = f._view_filter() self.assertIsNotNone(vf)
def test_view_filter_same_attrib_one_element(self): """Test that choosing 1 att elem should return matching view filter in body.""" f = Filter(attributes=self.attributes, metrics=self.metrics, attr_elements=self.elements) f._select_attr_el(self.element_sel) vf = f._view_filter() self.assertIn("operator", vf) self.assertEqual(vf["operator"], "In") self.assertIn("operands", vf) att, elems = vf["operands"] self.assertEqual(att["type"], "attribute") self.assertEqual(att["id"], f.attr_elems.get(self.element_sel)["attribute_id"]) self.assertEqual(elems["type"], "elements") for elem, obj_id in zip(elems["elements"], self.element_sel): self.assertEqual(elem["id"], self.element_sel)
def test_view_filter_multi_attrib_element(self): """Test that choosing att elem across attributes forms a correct view filter body.""" f = Filter(attributes=self.attributes, metrics=self.metrics, attr_elements=self.elements) f._select_attr_el(self.element_sel_list) vf = f._view_filter() self.assertEqual( vf["operator"], "And") # should be And because elements span parent attributes self.assertIn("operator", vf) self.assertIn("operands", vf) self.assertIsInstance(vf["operands"], list) for operand in vf["operands"]: self.assertIn("operator", operand) self.assertIn("operands", operand) self.assertEqual( operand["operator"], "In") # should be In because elems are for same parent attr att, elems = operand["operands"] self.assertEqual(att["type"], "attribute") self.assertEqual(elems["type"], "elements") for obj_id in elems["elements"]: self.assertEqual( att["id"], f.attr_elems.get(obj_id["id"])["attribute_id"]) for elem, obj_id in zip(elems["elements"], elems["elements"]): self.assertEqual(elem["id"], obj_id["id"])