def test_M2M_empty(self) -> None: self.set_models({"fake_model_a/1": {}, "fake_model_b/2": {}}) handler = SingleRelationHandler( datastore=self.datastore, field=FakeModelA.fake_model_b_mm, field_name="fake_model_b_mm", instance={ "id": 1, "fake_model_b_mm": [2] }, ) result = handler.perform() expected = { get_fqfield("fake_model_b/2/fake_model_a_mm"): { "type": "add", "value": [1], "modified_element": 1, } } assert result == expected
def test_O2O_empty(self) -> None: self.create_model("fake_model_a/1", {}) self.create_model("fake_model_b/2", {}) handler = SingleRelationHandler( datastore=self.datastore, field=FakeModelA.fake_model_b_oo, field_name="fake_model_b_oo", instance={ "id": 1, "fake_model_b_oo": 2 }, ) result = handler.perform() expected = { get_fqfield("fake_model_b/2/fake_model_a_oo"): { "type": "add", "value": 1, "modified_element": 1, } } assert result == expected
def test_M2M_delete(self) -> None: self.create_model("fake_model_a/1", {"fake_model_b_mm": [2]}) self.create_model("fake_model_b/2", {"fake_model_a_mm": [1]}) handler = SingleRelationHandler( datastore=self.datastore, field=FakeModelA.fake_model_b_mm, field_name="fake_model_b_mm", instance={ "id": 1, "fake_model_b_mm": [] }, ) result = handler.perform() expected = { get_fqfield("fake_model_b/2/fake_model_a_mm"): { "type": "remove", "value": [], "modified_element": 1, } } assert result == expected
def test_O2M_add(self) -> None: self.create_model("fake_model_a/1", {"fake_model_b_om": 3}) self.create_model("fake_model_a/2", {}) self.create_model("fake_model_b/3", {"fake_model_a_mo": [1]}) handler = SingleRelationHandler( datastore=self.datastore, field=FakeModelA.fake_model_b_om, field_name="fake_model_b_om", instance={ "id": 2, "fake_model_b_om": 3 }, ) result = handler.perform() expected = { get_fqfield("fake_model_b/3/fake_model_a_mo"): { "type": "add", "value": [1, 2], "modified_element": 2, } } assert result == expected
def test_generic_O2O_delete(self) -> None: self.create_model("fake_model_a/1", {"fake_model_b_generic_oo": 2}) self.create_model("fake_model_b/2", {"fake_model_a_generic_oo": "fake_model_a/1"}) handler = SingleRelationHandler( datastore=self.datastore, field=FakeModelA.fake_model_b_generic_oo, field_name="fake_model_b_generic_oo", instance={ "id": 1, "fake_model_b_generic_oo": None }, ) result = handler.perform() expected = { get_fqfield("fake_model_b/2/fake_model_a_generic_oo"): { "type": "remove", "value": None, "modified_element": get_fqid("fake_model_a/1"), } } assert result == expected
def test_simple_structured_relation(self) -> None: meeting_id = 222 self.set_models({ "fake_model_a/333": {}, "fake_model_b/111": { "meeting_id": meeting_id } }) field = cast( fields.BaseRelationField, FakeModelB().get_field("structured_relation_field"), ) relations_handler = SingleRelationHandler( datastore=self.datastore, field=field, field_name="structured_relation_field", instance={ "id": 111, "structured_relation_field": 333 }, ) result = relations_handler.perform() self.assertEqual( result, { get_fqfield("fake_model_a/333/fake_model_b_$_ids"): { "type": "add", "value": [str(meeting_id)], "modified_element": str(meeting_id), }, get_fqfield(f"fake_model_a/333/fake_model_b_${meeting_id}_ids"): { "type": "add", "value": [111], "modified_element": 111, }, }, )