import pytest
from unittest.mock import patch,Mock
from apps.process.tasks import convert
from apps.process.models import Status
from apps.process.models import File, Media
from django.urls import reverse

# @pytest.mark.django_db
# # @pytest.mark.skip
# @patch('apps.process.handler.start_removing_sounds')
# def test_convert_task_is_called(client,mock_convert,media_factory,file_factory,login_user_for_subscribe):
#     data_process = {
#         'file_name':'adidas___Ready_for_Sport_08_40_01.mp4',
#         'existingPath':'media/original_videos/',
#     }
#     res = client.post(path=reverse('process'),data=data_process)
#     login_user_for_subscribe
#     client.login(
#        username=login_user_for_subscribe.username, password=login_user_for_subscribe
#     )
#     media = media_factory.create()
#     file = file_factory.create(existingPath='media/original_videos/adidas___Ready_for_Sport_08_40_01.mp4')
#     parts = [[0,10],[10,20],[20,26]]

#     convert(args=[file.existingPath,parts,media.id_media])
#     mock_convert.assert_called_once()
#     assert True


@pytest.mark.django_db
@pytest.mark.skip
def test_convert_task(media_factory,normal_user_factory,processed_media_factory):
    with patch('apps.process.models.ProcessedMedia') as MockProcessedMedia, \
         patch('apps.process.handler.start_removing_sounds') as mock_start_removing_sounds:
        MockProcessedMedia.return_value = Mock(id=1)
        filename = 'testfile'
        parts = '[["00:00:00", "1:00:00"]]'
        media = media_factory.create(user=normal_user_factory.create())
        media_id = media.id_media
        user = media.user
        user_id = user.id
        MLmodel = None
        result = convert(filename, parts, media_id, user_id)
        # assert result == 1
        MockProcessedMedia.assert_called_once_with(
            user=Mock(id=user_id),
            parts=[[0, 60]],
            status=Mock(status=Status.Processing),
            media=Mock(id_media=media_id)
        )
        mock_start_removing_sounds.assert_called_once_with(
            MLmodel,
            [[0, 60]],
            filename,
            media_id
        )



