import pytest


from django.conf import settings as conf

from aircox.controllers.sound_file import SoundFile


# FIXME: use from tests.models.sound
@pytest.fixture
def path_infos():
    return {
        "test/20220101_10h13_1_sample_1.mp3": {
            "year": 2022,
            "month": 1,
            "day": 1,
            "hour": 10,
            "minute": 13,
            "n": 1,
            "name": "Sample 1",
        },
        "test/20220102_10h13_sample_2.mp3": {
            "year": 2022,
            "month": 1,
            "day": 2,
            "hour": 10,
            "minute": 13,
            "n": None,
            "name": "Sample 2",
        },
        "test/20220103_1_sample_3.mp3": {
            "year": 2022,
            "month": 1,
            "day": 3,
            "n": 1,
            "name": "Sample 3",
        },
        "test/20220104_sample_4.mp3": {
            "year": 2022,
            "month": 1,
            "day": 4,
            "name": "Sample 4",
        },
        "test/20220105.mp3": {
            "year": 2022,
            "month": 1,
            "day": 5,
            "name": "20220105",
        },
    }


@pytest.fixture
def sound_files(path_infos):
    return {k: r for k, r in ((path, SoundFile(conf.MEDIA_ROOT + "/" + path)) for path in path_infos.keys())}


@pytest.fixture
def sound_file(sound_files):
    return next(sound_files.items())


def test_sound_path(sound_files):
    for path, sound_file in sound_files.items():
        assert path == sound_file.sound_path


class TestSoundFile:
    def sound_path(self, sound_file):
        assert sound_file[0] == sound_file[1].sound_path

    def sync(self):
        raise NotImplementedError("test is not implemented")

    def create_episode_sound(self):
        raise NotImplementedError("test is not implemented")

    def _on_delete(self):
        raise NotImplementedError("test is not implemented")
