update docker deployment and changing seed kandang name

This commit is contained in:
Alberto-Audrix committed 2026-08-31 11:10:32 +07:00
1 parent 76f4d0106a
commit 74dd3faf60
40 files changed
+1253 -122

No files matched your search

+109 -1
View File
@@ -1,6 +1,7 @@
from datetime import date, timedelta
from unittest.mock import patch
from django.test import TestCase
from django.test import TestCase, override_settings
from rest_framework.test import APIClient
from apps.accounts.models import User
@@ -8,6 +9,7 @@ from apps.farms.models import Cycle, Flock, Kandang, Site
from apps.operations.models import ChickenWeight, FeedSacks, IotPanel
@override_settings(DASHBOARD_PUBLISH_HOUR=0)
class OperationsAPITests(TestCase):
def setUp(self):
self.user = User.objects.create_user(user_name="tester", password="secret")
@@ -306,6 +308,112 @@ class OperationsAPITests(TestCase):
self.assertEqual(kpi.harvest_weight_total, 20.5)
@override_settings(DASHBOARD_PUBLISH_HOUR=17, TIME_ZONE="Asia/Jakarta")
class DashboardVisibilityTests(TestCase):
def setUp(self):
self.user = User.objects.create_user(user_name="tester", password="secret")
self.client = APIClient()
self.client.force_authenticate(self.user)
site = Site.objects.create(site_name="Sukawarna", user=self.user)
self.kandang = Kandang.objects.create(kandang_name="Kandang 1", site=site)
self.cycle = Cycle.objects.create(
kandang=self.kandang,
total_days=35,
start_date=date(2026, 8, 26),
end_date=date(2026, 9, 29),
doc_in_weight=40,
doc_in_count=10000,
status=Cycle.STATUS_ACTIVE,
)
def test_hides_today_before_publish_time(self):
FeedSacks.objects.create(
cycle=self.cycle,
date=date(2026, 8, 27),
in_today=5,
out_today=3,
feed_use_today=3,
feed_use_total=3,
)
FeedSacks.objects.create(
cycle=self.cycle,
date=date(2026, 8, 28),
in_today=9,
out_today=7,
feed_use_today=7,
feed_use_total=10,
)
with patch(
"apps.operations.services.visibility.timezone.localtime",
) as mock_localtime:
from datetime import datetime
from zoneinfo import ZoneInfo
wib = ZoneInfo("Asia/Jakarta")
mock_localtime.return_value = datetime(2026, 8, 28, 16, 30, tzinfo=wib)
response = self.client.get("/api/v1/karungs/", {"cycle_id": self.cycle.pk})
self.assertEqual(response.status_code, 200, response.data)
results = response.data["results"] if isinstance(response.data, dict) else response.data
self.assertEqual(len(results), 1)
self.assertEqual(results[0]["date"], "2026-08-27")
def test_shows_today_after_publish_time(self):
FeedSacks.objects.create(
cycle=self.cycle,
date=date(2026, 8, 28),
in_today=9,
out_today=7,
feed_use_today=7,
feed_use_total=10,
)
with patch(
"apps.operations.services.visibility.timezone.localtime",
) as mock_localtime:
from datetime import datetime
from zoneinfo import ZoneInfo
wib = ZoneInfo("Asia/Jakarta")
mock_localtime.return_value = datetime(2026, 8, 28, 17, 0, tzinfo=wib)
response = self.client.get("/api/v1/karungs/latest/", {"cycle_id": self.cycle.pk})
self.assertEqual(response.status_code, 200, response.data)
self.assertEqual(response.data["date"], "2026-08-28")
def test_panel_iot_not_hidden_before_publish_time(self):
flock = Flock.objects.create(flock_name="Flock A", cycle=self.cycle)
IotPanel.objects.create(
flock=flock,
date=date(2026, 8, 28),
average_temperature=28.5,
)
with patch(
"apps.operations.services.visibility.timezone.localtime",
) as mock_localtime:
from datetime import datetime
from zoneinfo import ZoneInfo
wib = ZoneInfo("Asia/Jakarta")
mock_localtime.return_value = datetime(2026, 8, 28, 10, 0, tzinfo=wib)
response = self.client.get("/api/v1/panel-iot/", {"cycle_id": self.cycle.pk})
self.assertEqual(response.status_code, 200, response.data)
results = response.data["results"] if isinstance(response.data, dict) else response.data
self.assertEqual(len(results), 1)
self.assertEqual(results[0]["date"], "2026-08-28")
def test_health_includes_visible_through_date(self):
with patch(
"apps.operations.services.visibility.timezone.localtime",
) as mock_localtime:
from datetime import datetime
from zoneinfo import ZoneInfo
wib = ZoneInfo("Asia/Jakarta")
mock_localtime.return_value = datetime(2026, 8, 28, 10, 0, tzinfo=wib)
response = self.client.get("/api/v1/health/")
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data["visible_through_date"], "2026-08-27")
self.assertEqual(response.data["dashboard_publish_time"], "17:00")
class ErdPrimaryKeyTests(TestCase):
ERD_PRIMARY_KEYS = {
"user_access": "user_id",