Files
Backend/sensor_catalog/tests.py
T
2026-04-03 15:15:41 +03:30

56 lines
2.2 KiB
Python

from django.contrib.auth import get_user_model
from django.test import TestCase
from rest_framework.test import APIRequestFactory, force_authenticate
from sensor_catalog.models import SensorCatalog
from sensor_catalog.views import SensorCatalogListView
class SensorCatalogListViewTests(TestCase):
def setUp(self):
self.factory = APIRequestFactory()
self.user = get_user_model().objects.create_user(
username="sensor-user",
password="secret123",
email="sensor@example.com",
phone_number="09120000002",
)
SensorCatalog.objects.update_or_create(
name="Sensor 7 - Soil Moisture Sensor v1.2",
defaults={
"description": (
"Measures only soil moisture using electrical resistance between two metal probes. "
"Provides analog and digital outputs."
),
"customizable_fields": [],
"supported_power_sources": ["solar", "direct_power"],
"returned_data_fields": ["soil_moisture", "analog_output", "digital_output"],
"sample_payload": {"soil_moisture": 42, "analog_output": 610, "digital_output": 1},
"is_active": True,
},
)
SensorCatalog.objects.update_or_create(
name="Legacy Sensor",
defaults={
"customizable_fields": [],
"supported_power_sources": ["direct_power"],
"returned_data_fields": ["status"],
"sample_payload": {"status": "offline"},
"is_active": False,
},
)
def test_list_returns_all_existing_sensors(self):
request = self.factory.get("/api/sensor-catalog/")
force_authenticate(request, user=self.user)
response = SensorCatalogListView.as_view()(request)
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["code"], 200)
self.assertEqual(len(response.data["data"]), 2)
self.assertEqual(
{item["name"] for item in response.data["data"]},
{"Sensor 7 - Soil Moisture Sensor v1.2", "Legacy Sensor"},
)