Skip to content
Snippets Groups Projects
test_commands.py 1.74 KiB
Newer Older
  • Learn to ignore specific revisions
  • from django.core.management import call_command
    
    from funkwhale_api.federation import models as federation_models
    from funkwhale_api.federation.management.commands import fix_federation_ids
    from funkwhale_api.music import models as music_models
    
    
    def test_fix_fids_dry_run(factories, mocker):
        replace_prefix = mocker.patch("funkwhale_api.common.utils.replace_prefix")
    
        call_command("fix_federation_ids", "http://old/", "https://new/", interactive=False)
    
        replace_prefix.assert_not_called()
    
    
    def test_fix_fids_no_dry_run(factories, mocker, queryset_equal_queries):
        replace_prefix = mocker.patch("funkwhale_api.common.utils.replace_prefix")
        factories["federation.Actor"](fid="http://old/test")
        call_command(
            "fix_federation_ids",
            "http://old",
            "https://new",
            interactive=False,
            dry_run=False,
        )
    
        models = [
            (music_models.Artist, ["fid"]),
            (music_models.Album, ["fid"]),
            (music_models.Track, ["fid"]),
            (music_models.Upload, ["fid"]),
            (music_models.Library, ["fid", "followers_url"]),
            (
                federation_models.Actor,
                [
                    "fid",
                    "url",
                    "outbox_url",
                    "inbox_url",
                    "following_url",
                    "followers_url",
                    "shared_inbox_url",
                ],
            ),
            (federation_models.Activity, ["fid"]),
            (federation_models.Follow, ["fid"]),
            (federation_models.LibraryFollow, ["fid"]),
        ]
        assert models == fix_federation_ids.MODELS
    
        for kls, fields in models:
            for field in fields:
                replace_prefix.assert_any_call(
                    kls.objects.all(), field, old="http://old", new="https://new"
                )