def test_dedupe_model_with_o2o_relationship_no_merge(self):
        primary_object = RestaurantFactory.create(place=None,
                                                  serves_hot_dogs=True,
                                                  serves_pizza=False)
        alias_object = RestaurantFactory.create(serves_hot_dogs=False,
                                                serves_pizza=True)

        merged_object = MergedModelInstance.create(primary_object,
                                                   [alias_object],
                                                   merge_field_values=False)

        assert not merged_object.place
        assert merged_object.serves_hot_dogs and not merged_object.serves_pizza
    def test_merge_model_with_o2o_relationship(self):
        primary_object = RestaurantFactory.create(place=None,
                                                  serves_hot_dogs=True,
                                                  serves_pizza=False)
        alias_object = RestaurantFactory.create(serves_hot_dogs=False,
                                                serves_pizza=True)
        alias_address = alias_object.place.address
        alias_name = alias_object.place.name

        merged_object = MergedModelInstance.create(primary_object,
                                                   [alias_object])

        assert merged_object.place.address == alias_address
        assert merged_object.place.name == alias_name
        assert merged_object.serves_hot_dogs and not merged_object.serves_pizza
    def test_o2o_merge_with_audit_trail(self):
        primary_object = RestaurantFactory.create(place=None,
                                                  serves_hot_dogs=True,
                                                  serves_pizza=False)
        alias_objects = RestaurantFactory.create_batch(3)
        related_object = set([alias_objects[0].place])

        _, audit_trail = MergedModelInstance.create_with_audit_trail(
            primary_object, alias_objects)

        assert set(audit_trail) == related_object