Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
import unittest | |
from unittest.mock import patch, MagicMock | |
import pandas as pd | |
import requests | |
import os | |
import asyncio | |
from app import ( | |
calculate_level, calculate_xp, add_exp, update_google_sheet, | |
update_hub_stats, on_ready, DISCORD_TOKEN, bot, global_df, test_merge | |
) | |
class TestAppFunctions(unittest.TestCase): | |
def setUpClass(cls): | |
# Set up any state needed before tests are run | |
cls.test_member_id = 123456789 | |
cls.test_xp = 1000 | |
cls.test_level = 10 | |
def test_calculate_level(self): | |
level = calculate_level(self.test_xp) | |
self.assertEqual(level, int(self.test_xp ** (1.0 / 3.0))) | |
def test_calculate_xp(self): | |
xp = calculate_xp(self.test_level) | |
self.assertEqual(xp, int(self.test_level ** 3)) | |
def test_add_exp(self, mock_update_google_sheet, mock_global_df): | |
# Mock the bot and guild setup | |
bot.get_guild.return_value.get_member.return_value = MagicMock() | |
# Add mock data to global_df | |
data = {'discord_user_id': ['L123456789L'], 'discord_exp': ['L1000L'], 'total_exp': ['L2000L'], 'hub_exp': ['L1000L']} | |
mock_global_df.return_value = pd.DataFrame(data) | |
# Run add_exp and assert it does not raise exceptions | |
try: | |
asyncio.run(add_exp(self.test_member_id)) | |
success = True | |
except Exception as e: | |
success = False | |
self.assertTrue(success) | |
def test_update_hub_stats(self, mock_get): | |
# Set up mock response for requests.get | |
mock_response = MagicMock() | |
mock_response.status_code = 200 | |
mock_response.json.return_value = { | |
"numLikes": 10, | |
"numModels": 5, | |
"numDatasets": 3, | |
"numSpaces": 2, | |
"numDiscussions": 7, | |
"numPapers": 1, | |
"numUpvotes": 4 | |
} | |
mock_get.return_value = mock_response | |
# Add mock data to global_df | |
data = {'hf_user_name': ['test_user'], 'discord_exp': ['L1000L'], 'total_exp': ['L2000L'], 'hub_exp': ['L1000L']} | |
global_df = pd.DataFrame(data) | |
try: | |
update_hub_stats() | |
success = True | |
except Exception as e: | |
success = False | |
self.assertTrue(success) | |
def test_on_ready(self): | |
# Test the real bot's on_ready method | |
async def run_on_ready(): | |
await on_ready() | |
try: | |
asyncio.run(run_on_ready()) | |
success = True | |
except Exception as e: | |
success = False | |
self.assertTrue(success) | |
def test_update_google_sheet(self): | |
# Mock gspread and related functions | |
with patch('app.set_with_dataframe') as mock_set_with_dataframe: | |
update_google_sheet() | |
mock_set_with_dataframe.assert_called() | |
def test_env_key_exists(self): | |
self.assertIn('KEY', os.environ, "The 'KEY' environment variable is not set.") | |
if __name__ == '__main__': | |
unittest.main() | |