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
Ejemplo n.º 2
0
 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
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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,
             },
         },
     )