Files
dbstorage/dbapp/mainapp/tests/test_kubsat.py

124 lines
5.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Тесты для страницы Кубсат
"""
from django.test import TestCase, Client
from django.contrib.auth.models import User
from django.urls import reverse
from mainapp.models import Source, ObjItem, Parameter, Satellite, Polarization, Modulation, ObjectInfo
from mainapp.forms import KubsatFilterForm
class KubsatViewTest(TestCase):
"""Тесты для представления KubsatView"""
def setUp(self):
"""Подготовка тестовых данных"""
self.client = Client()
self.user = User.objects.create_user(
username='testuser',
password='testpass123',
first_name='Test',
last_name='User'
)
self.client.login(username='testuser', password='testpass123')
# Создаем тестовые данные
self.satellite = Satellite.objects.create(name='Test Sat', norad=12345)
self.polarization = Polarization.objects.create(name='H')
self.modulation = Modulation.objects.create(name='QPSK')
self.object_info = ObjectInfo.objects.create(name='Test Type')
self.source = Source.objects.create(info=self.object_info)
self.objitem = ObjItem.objects.create(name='Test Object', source=self.source)
self.parameter = Parameter.objects.create(
objitem=self.objitem,
id_satellite=self.satellite,
frequency=11000.0,
freq_range=36.0,
polarization=self.polarization,
modulation=self.modulation
)
def test_kubsat_page_accessible(self):
"""Проверка доступности страницы Кубсат"""
response = self.client.get(reverse('mainapp:kubsat'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, 'mainapp/kubsat.html')
def test_kubsat_page_requires_login(self):
"""Проверка что страница требует авторизации"""
self.client.logout()
response = self.client.get(reverse('mainapp:kubsat'))
self.assertEqual(response.status_code, 302) # Redirect to login
def test_kubsat_filter_form(self):
"""Проверка работы формы фильтров"""
form = KubsatFilterForm()
self.assertIn('satellites', form.fields)
self.assertIn('polarization', form.fields)
self.assertIn('frequency_min', form.fields)
self.assertIn('modulation', form.fields)
def test_kubsat_filter_by_satellite(self):
"""Проверка фильтрации по спутнику"""
response = self.client.get(
reverse('mainapp:kubsat'),
{'satellites': [self.satellite.id]}
)
self.assertEqual(response.status_code, 200)
self.assertIn('sources', response.context)
def test_kubsat_export_view_accessible(self):
"""Проверка доступности экспорта"""
response = self.client.post(
reverse('mainapp:kubsat_export'),
{'source_ids': [self.source.id]}
)
self.assertEqual(response.status_code, 200)
self.assertEqual(
response['Content-Type'],
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
)
def test_kubsat_export_filename(self):
"""Проверка имени экспортируемого файла"""
response = self.client.post(
reverse('mainapp:kubsat_export'),
{'source_ids': [self.source.id]}
)
self.assertIn('attachment', response['Content-Disposition'])
self.assertIn('kubsat_', response['Content-Disposition'])
self.assertIn('.xlsx', response['Content-Disposition'])
class KubsatFilterFormTest(TestCase):
"""Тесты для формы KubsatFilterForm"""
def test_form_fields_exist(self):
"""Проверка наличия всех полей формы"""
form = KubsatFilterForm()
expected_fields = [
'satellites', 'band', 'polarization', 'frequency_min', 'frequency_max',
'freq_range_min', 'freq_range_max', 'modulation', 'object_type',
'object_ownership', 'objitem_count', 'has_plans', 'success_1',
'success_2', 'date_from', 'date_to'
]
for field in expected_fields:
self.assertIn(field, form.fields)
def test_form_valid_data(self):
"""Проверка валидации формы с корректными данными"""
form_data = {
'frequency_min': 10000.0,
'frequency_max': 12000.0,
'objitem_count': '1'
}
form = KubsatFilterForm(data=form_data)
self.assertTrue(form.is_valid())
def test_form_optional_fields(self):
"""Проверка что все поля необязательные"""
form = KubsatFilterForm(data={})
self.assertTrue(form.is_valid())