from unittest.mock import patch

import pytest

from core.tasks import get_disk_usage


def mock_notification_service():
    class NotificationService:
        def send(self, *args, **kwargs):
            pass
    return NotificationService


@pytest.mark.django_db
@pytest.mark.unit
class TestTask:

    @patch('core.tasks.shutil.disk_usage', lambda _: (100, 99, 1))
    @patch('core.tasks.NotificationService', mock_notification_service())
    def test_get_disk_usage_no_disk_space(self, caplog):
        get_disk_usage()
        assert 'Send Notification "Free disk space is running out"' in caplog.text

    @patch('core.tasks.shutil.disk_usage', lambda _: (100, 50, 50))
    def test_get_disk_usage(self, caplog):
        get_disk_usage()
        assert 'Send Notification "Free disk space is running out"' not in caplog.text
