Spaces:
No application file
No application file
import pytest | |
import requests | |
from embedchain.loaders.discourse import DiscourseLoader | |
def discourse_loader_config(): | |
return { | |
"domain": "https://example.com/", | |
} | |
def discourse_loader(discourse_loader_config): | |
return DiscourseLoader(config=discourse_loader_config) | |
def test_discourse_loader_init_with_valid_config(): | |
config = {"domain": "https://example.com/"} | |
loader = DiscourseLoader(config=config) | |
assert loader.domain == "https://example.com/" | |
def test_discourse_loader_init_with_missing_config(): | |
with pytest.raises(ValueError, match="DiscourseLoader requires a config"): | |
DiscourseLoader() | |
def test_discourse_loader_init_with_missing_domain(): | |
config = {"another_key": "value"} | |
with pytest.raises(ValueError, match="DiscourseLoader requires a domain"): | |
DiscourseLoader(config=config) | |
def test_discourse_loader_check_query_with_valid_query(discourse_loader): | |
discourse_loader._check_query("sample query") | |
def test_discourse_loader_check_query_with_empty_query(discourse_loader): | |
with pytest.raises(ValueError, match="DiscourseLoader requires a query"): | |
discourse_loader._check_query("") | |
def test_discourse_loader_check_query_with_invalid_query_type(discourse_loader): | |
with pytest.raises(ValueError, match="DiscourseLoader requires a query"): | |
discourse_loader._check_query(123) | |
def test_discourse_loader_load_post_with_valid_post_id(discourse_loader, monkeypatch): | |
def mock_get(*args, **kwargs): | |
class MockResponse: | |
def json(self): | |
return {"raw": "Sample post content"} | |
def raise_for_status(self): | |
pass | |
return MockResponse() | |
monkeypatch.setattr(requests, "get", mock_get) | |
post_data = discourse_loader._load_post(123) | |
assert post_data["content"] == "Sample post content" | |
assert "meta_data" in post_data | |
def test_discourse_loader_load_post_with_invalid_post_id(discourse_loader, monkeypatch, caplog): | |
def mock_get(*args, **kwargs): | |
class MockResponse: | |
def raise_for_status(self): | |
raise requests.exceptions.RequestException("Test error") | |
return MockResponse() | |
monkeypatch.setattr(requests, "get", mock_get) | |
discourse_loader._load_post(123) | |
assert "Failed to load post" in caplog.text | |
def test_discourse_loader_load_data_with_valid_query(discourse_loader, monkeypatch): | |
def mock_get(*args, **kwargs): | |
class MockResponse: | |
def json(self): | |
return {"grouped_search_result": {"post_ids": [123, 456, 789]}} | |
def raise_for_status(self): | |
pass | |
return MockResponse() | |
monkeypatch.setattr(requests, "get", mock_get) | |
def mock_load_post(*args, **kwargs): | |
return { | |
"content": "Sample post content", | |
"meta_data": { | |
"url": "https://example.com/posts/123.json", | |
"created_at": "2021-01-01", | |
"username": "test_user", | |
"topic_slug": "test_topic", | |
"score": 10, | |
}, | |
} | |
monkeypatch.setattr(discourse_loader, "_load_post", mock_load_post) | |
data = discourse_loader.load_data("sample query") | |
assert len(data["data"]) == 3 | |
assert data["data"][0]["content"] == "Sample post content" | |
assert data["data"][0]["meta_data"]["url"] == "https://example.com/posts/123.json" | |
assert data["data"][0]["meta_data"]["created_at"] == "2021-01-01" | |
assert data["data"][0]["meta_data"]["username"] == "test_user" | |
assert data["data"][0]["meta_data"]["topic_slug"] == "test_topic" | |
assert data["data"][0]["meta_data"]["score"] == 10 | |