93 lines
2.6 KiB
Python
93 lines
2.6 KiB
Python
import pytest
|
|
from unittest.mock import MagicMock, patch
|
|
import os
|
|
import sys
|
|
# Add the src directory to the Python path
|
|
src_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..', 'src'))
|
|
sys.path.insert(0, src_dir)
|
|
|
|
from models.data import TextData
|
|
|
|
def test_init():
|
|
data = TextData()
|
|
assert data.url == ""
|
|
assert data.text == ""
|
|
assert data.result == ""
|
|
assert data.is_fake_news == False
|
|
assert data.provider == ""
|
|
assert data.confidence is None
|
|
assert data._extractor is None
|
|
|
|
def test_set_url():
|
|
data = TextData()
|
|
url = "https://www.example.com"
|
|
data.set_url(url)
|
|
assert data.url == url
|
|
assert data.text == ""
|
|
assert data._extractor is None
|
|
|
|
def test_text_from_url_with_url():
|
|
data = TextData()
|
|
url = "https://www.example.com"
|
|
data.set_url(url)
|
|
|
|
# Mock the WebTextExtractor
|
|
mock_extractor = MagicMock()
|
|
mock_extractor.get_text.return_value = "Example text"
|
|
|
|
# Patch the WebTextExtractor import in the TextData module
|
|
with patch('models.data.WebTextExtractor', return_value=mock_extractor):
|
|
result = data.text_from_url()
|
|
|
|
assert result is True
|
|
assert data.text == "Example text"
|
|
mock_extractor.fetch_content.assert_called_once()
|
|
mock_extractor.extract_text.assert_called_once()
|
|
mock_extractor.get_text.assert_called_once()
|
|
|
|
|
|
def test_text_from_url_without_url():
|
|
data = TextData()
|
|
assert data.text_from_url() is False
|
|
|
|
def test_get_output():
|
|
data = TextData()
|
|
data.result = "Fake"
|
|
data.confidence = 0.95
|
|
output = data.get_output()
|
|
assert output == "Prediction: Fake Confidence: 0.9500"
|
|
|
|
def test_get_provider():
|
|
data = TextData()
|
|
url = "https://www.example.com"
|
|
data.set_url(url)
|
|
assert data.get_provider() == "example.com"
|
|
|
|
def test_extract_provider():
|
|
data = TextData()
|
|
url = "https://www.example.com"
|
|
data.set_url(url)
|
|
data.extract_provider()
|
|
assert data.provider == "example.com"
|
|
|
|
def test_extract_provider_with_invalid_url():
|
|
data = TextData()
|
|
url = "invalid_url"
|
|
data.set_url(url)
|
|
data.extract_provider()
|
|
assert data.provider == "Unknown"
|
|
|
|
def test__is_valid_url_with_valid_url():
|
|
data = TextData()
|
|
url = "https://www.example.com"
|
|
assert data._is_valid_url(url) is True
|
|
|
|
def test__is_valid_url_with_invalid_url():
|
|
data = TextData()
|
|
url = "invalid_url"
|
|
assert data._is_valid_url(url) is False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pytest.main([__file__])
|