SIENTIAPDE-1005
Full coverage Refactor code structure and improve logging configuration; update tests for activities and connectors
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
import pytest
|
||||
from unittest.mock import MagicMock, patch, call
|
||||
from scouter.activities.faker import Faker
|
||||
from logging import Logger
|
||||
from unittest.mock import MagicMock, patch, call
|
||||
import pytest
|
||||
from sientia_do.notifications.handlers import NotificationHandler
|
||||
from scouter.activities.faker import Faker
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
@@ -39,12 +39,14 @@ async def test_faker_init(faker_instance, mock_kafka_producer):
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_generate_and_send_data_default_count(faker_instance, mock_kafka_producer, mock_datetime):
|
||||
async def test_generate_and_send_data_default_count(faker_instance,
|
||||
mock_kafka_producer, mock_datetime):
|
||||
"""Test generating data with default message count"""
|
||||
# Mock random.choice to control the output
|
||||
with patch('random.choice') as mock_choice, \
|
||||
patch('random.uniform', return_value=42.5), \
|
||||
patch('random.randint', return_value=3):
|
||||
patch('random.randint', return_value=3), \
|
||||
patch('random.random', return_value=0.5):
|
||||
|
||||
# Setup mock for tag and name selection
|
||||
mock_choice.side_effect = [
|
||||
@@ -61,14 +63,27 @@ async def test_generate_and_send_data_default_count(faker_instance, mock_kafka_p
|
||||
mock_kafka_producer.flush.assert_called_once()
|
||||
|
||||
# Verify the message format
|
||||
expected_data = {
|
||||
expected_data = [{
|
||||
'tag': 'ns=1;i=1001',
|
||||
'name': 'Temperature Sensor',
|
||||
'timestamp': '2025-05-14 14:54:24',
|
||||
'value': 42.5
|
||||
}
|
||||
mock_kafka_producer.send.assert_any_call(
|
||||
'test_topic', value=expected_data)
|
||||
}, {
|
||||
'tag': 'ns=1;i=1002',
|
||||
'name': 'Vibration Meter',
|
||||
'timestamp': '2025-05-14 14:54:24',
|
||||
'value': 42.5
|
||||
}, {
|
||||
'tag': 'ns=1;i=1003',
|
||||
'name': 'Pressure Gauge',
|
||||
'timestamp': '2025-05-14 14:54:24',
|
||||
'value': 42.5
|
||||
}]
|
||||
mock_kafka_producer.send.assert_has_calls([
|
||||
call('test_topic', value=expected_data[0]),
|
||||
call('test_topic', value=expected_data[1]),
|
||||
call('test_topic', value=expected_data[2])
|
||||
])
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -106,3 +121,22 @@ async def test_generate_and_send_data_random_values(faker_instance, mock_kafka_p
|
||||
assert call_args['tag'] in faker_instance.tags
|
||||
assert 'value' in call_args
|
||||
assert 0 <= call_args['value'] <= 100
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@patch('scouter.activities.faker.random.random', return_value=0.05)
|
||||
async def test_generate_and_send_data_generate_null_values(
|
||||
_random_mock,
|
||||
faker_instance,
|
||||
mock_kafka_producer):
|
||||
# Call the method
|
||||
await faker_instance.generate_and_send_data({'topic': 'test_topic',
|
||||
'num_messages': 1})
|
||||
|
||||
# Get the call arguments
|
||||
call_args = mock_kafka_producer.send.call_args[1]['value']
|
||||
|
||||
assert call_args['value'] is None
|
||||
assert call_args['tag'] in faker_instance.tags
|
||||
assert 'name' in call_args
|
||||
assert 'timestamp' in call_args
|
||||
|
||||
Reference in New Issue
Block a user