prosli testovi nakon dodavanja user-a

This commit is contained in:
2024-01-22 15:32:17 +01:00
parent bc9afd396b
commit 279c7df84a
12 changed files with 197 additions and 14 deletions

View File

@@ -0,0 +1,21 @@
# Generated by Django 4.2.9 on 2024-01-22 12:45
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('plovidba_aplikacija', '0009_objektsigurnosti_operater'),
]
operations = [
migrations.AlterField(
model_name='objektsigurnosti',
name='operater',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='imenovana_mjesta', to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -0,0 +1,21 @@
# Generated by Django 4.2.9 on 2024-01-22 14:29
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('plovidba_aplikacija', '0010_alter_objektsigurnosti_operater'),
]
operations = [
migrations.AlterField(
model_name='objektsigurnosti',
name='operater',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL),
),
]

View File

@@ -13,7 +13,8 @@ class ObjektSigurnosti(models.Model):
fotografija = models.CharField(max_length=255, null=True, blank=True)
id_ais = models.CharField(max_length=255, null=True, blank=True)
simbol_oznaka = models.CharField(max_length=255, null=True, blank=True)
operater = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
operater = models.ForeignKey("user.User", on_delete=models.SET_NULL, null=True, blank=True)
def __str__(self):
return self.naziv

View File

@@ -27,7 +27,7 @@ class ObjektSigurnostiSerializer(serializers.ModelSerializer):
objekt = ObjektSigurnosti.objects.create(lokacija=lokacija, **validated_data)
return objekt
raise ValidationError("Invalid 'lon' or 'lat' vrijednosti za 'lokacija'.")
raise ValidationError("Nevaljani 'lon' i 'lat' vrijednosti za 'lokacija'.")
def to_representation(self, instance): #u sklopu ovog definiran i update
@@ -35,3 +35,29 @@ class ObjektSigurnostiSerializer(serializers.ModelSerializer):
representation['lon'] = instance.lokacija.x
representation['lat'] = instance.lokacija.y
return representation
def update(self, instance, validated_data):
lokacija_data = validated_data.get('lokacija', None)
if lokacija_data:
try:
lokacija_data = json.loads(lokacija_data)
except (json.JSONDecodeError, TypeError):
raise ValidationError("Nevaljan format za 'lokacija'. Mora biti JSON.")
if isinstance(lokacija_data, dict):
lon = lokacija_data.get('lon')
lat = lokacija_data.get('lat')
if lon is not None and lat is not None:
lokacija = Point(lon, lat, srid=3765)
instance.lokacija = lokacija
instance.save()
return instance
raise ValidationError("Nevaljani 'lon' i 'lat' vrijednosti za 'lokacija'.")
return super().update(instance, validated_data)

View File

@@ -1,3 +1,60 @@
# from django.test import TestCase
# from django.contrib.gis.geos import Point
# from django.urls import reverse
# from rest_framework import status
# from rest_framework.test import APITestCase
# from plovidba_aplikacija.models import ObjektSigurnosti
# # Testiranje listanja objekata
# class ObjektSigurnostiListTest(APITestCase):
# def test_list_objekti_sigurnosti(self):
# url = reverse('objektisigurnosti-list')
# response = self.client.get(url)
# self.assertEqual(response.status_code, status.HTTP_200_OK)
# # Testiranje stvaranja objekata
# class ObjektSigurnostiCreateTest(APITestCase):
# def setUp(self):
# self.url = reverse('objektisigurnosti-list')
# def test_create_objekt_sigurnosti(self):
# data = {
# 'lokacija': {'lat': 45.123, 'lon': 18.456},
# 'naziv': 'test-naziv',
# }
# response = self.client.post(self.url, data, format='json')
# self.assertEqual(response.status_code, status.HTTP_201_CREATED)
# self.assertTrue(ObjektSigurnosti.objects.filter(naziv='test-naziv').exists())
# # Testiranje dohvaćanja pojedinog objekata
# class ObjektSigurnostiDetailTest(APITestCase):
# def setUp(self):
# self.objekt = ObjektSigurnosti.objects.create(
# lokacija=Point(18.456, 45.123),
# naziv='test-naziv',
# )
# self.url = reverse('objektisigurnosti-detail', args=[self.objekt.pk])
# def test_get_objekt_sigurnosti(self):
# response = self.client.get(self.url)
# self.assertEqual(response.status_code, status.HTTP_200_OK)
# def test_update_objekt_sigurnosti(self):
# data = {
# 'lokacija': {'type': 'Point', 'coordinates': [45.123,18.456]},
# 'naziv' : 'updated-naziv',
# }
# response = self.client.patch(self.url, data, format='json')
# self.assertEqual(response.status_code, status.HTTP_200_OK)
from django.test import TestCase
from django.contrib.gis.geos import Point
from django.urls import reverse
@@ -21,7 +78,7 @@ class ObjektSigurnostiCreateTest(APITestCase):
def test_create_objekt_sigurnosti(self):
data = {
'lokacija': {'lat': 45.123, 'lon': 18.456},
'lokacija': '{"lat": 45.123, "lon": 18.456}',
'naziv': 'test-naziv',
}
response = self.client.post(self.url, data, format='json')
@@ -45,13 +102,8 @@ class ObjektSigurnostiDetailTest(APITestCase):
def test_update_objekt_sigurnosti(self):
data = {
'lokacija': {'lat': 45.123, 'lon': 18.456},
'naziv' : 'updated-naziv',
}
'lokacija': '{"lat": 45.123, "lon": 18.456}',
'naziv': 'test-naziv',
}
response = self.client.patch(self.url, data, format='json')
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.status_code, status.HTTP_200_OK)