added new gemini creations
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
import unittest
|
||||
from unittest.mock import patch, MagicMock
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Add src to python path to import tracker
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'src'))
|
||||
|
||||
import tracker
|
||||
|
||||
class TestTrueNASStorageTracker(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.mock_pool_data = [
|
||||
{
|
||||
"name": "tank",
|
||||
"size": 10995116277760, # 10 TB
|
||||
"allocated": 5497558138880, # 5 TB
|
||||
"free": 5497558138880 # 5 TB
|
||||
},
|
||||
{
|
||||
"name": "boot-pool",
|
||||
"size": 256000000000, # 256 GB
|
||||
"allocated": 64000000000, # 64 GB
|
||||
"free": 192000000000 # 192 GB
|
||||
}
|
||||
]
|
||||
|
||||
@patch('tracker.requests.get')
|
||||
@patch('tracker.os.getenv')
|
||||
def test_fetch_pool_data_success(self, mock_getenv, mock_get):
|
||||
# Configure mocks
|
||||
mock_getenv.side_effect = lambda key: {
|
||||
'TRUENAS_API_URL': 'http://mock-url',
|
||||
'TRUENAS_API_KEY': 'mock-key'
|
||||
}.get(key)
|
||||
|
||||
mock_response = MagicMock()
|
||||
mock_response.json.return_value = self.mock_pool_data
|
||||
mock_response.raise_for_status.return_value = None
|
||||
mock_get.return_value = mock_response
|
||||
|
||||
# Call function
|
||||
data = tracker.fetch_pool_data()
|
||||
|
||||
# Assertions
|
||||
self.assertEqual(data, self.mock_pool_data)
|
||||
mock_get.assert_called_once()
|
||||
|
||||
def test_process_pool_data(self):
|
||||
processed = tracker.process_pool_data(self.mock_pool_data)
|
||||
|
||||
self.assertEqual(len(processed), 2)
|
||||
|
||||
# Check first pool
|
||||
self.assertEqual(processed[0]['pool_name'], "tank")
|
||||
self.assertEqual(processed[0]['total_size_bytes'], 10995116277760)
|
||||
self.assertEqual(processed[0]['percent_used'], 50.0)
|
||||
|
||||
# Check second pool
|
||||
self.assertEqual(processed[1]['pool_name'], "boot-pool")
|
||||
self.assertEqual(processed[1]['percent_used'], 25.0)
|
||||
|
||||
@patch('tracker.os.getenv')
|
||||
def test_missing_env_vars(self, mock_getenv):
|
||||
mock_getenv.return_value = None
|
||||
with self.assertRaises(ValueError):
|
||||
tracker.fetch_pool_data()
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user