mirror of https://github.com/snachodog/mybuddy.git
250 lines
9.1 KiB
Python
250 lines
9.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from django.contrib.auth.models import User
|
|
from django.core.management import call_command
|
|
from django.test import TestCase
|
|
from django.utils import timezone
|
|
|
|
from core import models
|
|
|
|
|
|
class ChildTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
|
|
def test_child_create(self):
|
|
child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
self.assertEqual(child, models.Child.objects.get(first_name="First"))
|
|
self.assertEqual(child.slug, "first-last")
|
|
self.assertEqual(str(child), "First Last")
|
|
self.assertEqual(child.name(), "First Last")
|
|
self.assertEqual(child.name(reverse=True), "Last, First")
|
|
|
|
def test_child_count(self):
|
|
self.assertEqual(models.Child.count(), 0)
|
|
models.Child.objects.create(
|
|
first_name="First 1", last_name="Last 1", birth_date=timezone.localdate()
|
|
)
|
|
self.assertEqual(models.Child.count(), 1)
|
|
child = models.Child.objects.create(
|
|
first_name="First 2", last_name="Last 2", birth_date=timezone.localdate()
|
|
)
|
|
self.assertEqual(models.Child.count(), 2)
|
|
child.delete()
|
|
self.assertEqual(models.Child.count(), 1)
|
|
|
|
|
|
class PumpingTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
self.temp = models.Pumping.objects.create(
|
|
child=self.child,
|
|
time=timezone.localtime() - timezone.timedelta(days=1),
|
|
amount=98.6,
|
|
)
|
|
|
|
def test_pumping_create(self):
|
|
self.assertEqual(self.temp, models.Pumping.objects.first())
|
|
self.assertEqual(str(self.temp), "Pumping")
|
|
self.assertEqual(self.temp.amount, 98.6)
|
|
|
|
|
|
class DiaperChangeTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
self.change = models.DiaperChange.objects.create(
|
|
child=self.child,
|
|
time=timezone.localtime() - timezone.timedelta(days=1),
|
|
wet=1,
|
|
solid=1,
|
|
color="black",
|
|
amount=1.25,
|
|
)
|
|
|
|
def test_diaperchange_create(self):
|
|
self.assertEqual(self.change, models.DiaperChange.objects.first())
|
|
self.assertEqual(str(self.change), "Diaper Change")
|
|
self.assertEqual(self.change.child, self.child)
|
|
self.assertTrue(self.change.wet)
|
|
self.assertTrue(self.change.solid)
|
|
self.assertEqual(self.change.color, "black")
|
|
self.assertEqual(self.change.amount, 1.25)
|
|
|
|
def test_diaperchange_attributes(self):
|
|
self.assertListEqual(self.change.attributes(), ["Wet", "Solid", "Black"])
|
|
|
|
|
|
class FeedingTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
|
|
def test_feeding_create(self):
|
|
feeding = models.Feeding.objects.create(
|
|
child=self.child,
|
|
start=timezone.localtime() - timezone.timedelta(minutes=30),
|
|
end=timezone.localtime(),
|
|
type="formula",
|
|
method="bottle",
|
|
amount=2,
|
|
)
|
|
self.assertEqual(feeding, models.Feeding.objects.first())
|
|
self.assertEqual(str(feeding), "Feeding")
|
|
self.assertEqual(feeding.duration, feeding.end - feeding.start)
|
|
|
|
def test_method_both_breasts(self):
|
|
feeding = models.Feeding.objects.create(
|
|
child=self.child,
|
|
start=timezone.localtime() - timezone.timedelta(minutes=30),
|
|
end=timezone.localtime(),
|
|
type="breast milk",
|
|
method="both breasts",
|
|
)
|
|
self.assertEqual(feeding, models.Feeding.objects.first())
|
|
self.assertEqual(str(feeding), "Feeding")
|
|
self.assertEqual(feeding.method, "both breasts")
|
|
|
|
|
|
class NoteTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
|
|
def test_note_create(self):
|
|
note = models.Note.objects.create(
|
|
child=self.child, note="Note", time=timezone.localtime()
|
|
)
|
|
self.assertEqual(note, models.Note.objects.first())
|
|
self.assertEqual(str(note), "Note")
|
|
|
|
|
|
class SleepTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
|
|
def test_sleep_create(self):
|
|
sleep = models.Sleep.objects.create(
|
|
child=self.child,
|
|
start=timezone.localtime() - timezone.timedelta(minutes=30),
|
|
end=timezone.localtime(),
|
|
)
|
|
self.assertEqual(sleep, models.Sleep.objects.first())
|
|
self.assertEqual(str(sleep), "Sleep")
|
|
self.assertEqual(sleep.duration, sleep.end - sleep.start)
|
|
|
|
|
|
class TemperatureTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
self.temp = models.Temperature.objects.create(
|
|
child=self.child,
|
|
time=timezone.localtime() - timezone.timedelta(days=1),
|
|
temperature=98.6,
|
|
)
|
|
|
|
def test_temperature_create(self):
|
|
self.assertEqual(self.temp, models.Temperature.objects.first())
|
|
self.assertEqual(str(self.temp), "Temperature")
|
|
self.assertEqual(self.temp.temperature, 98.6)
|
|
|
|
|
|
class TimerTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
self.user = User.objects.first()
|
|
self.named = models.Timer.objects.create(
|
|
name="Named", end=timezone.localtime(), user=self.user, child=child
|
|
)
|
|
self.unnamed = models.Timer.objects.create(
|
|
end=timezone.localtime(), user=self.user
|
|
)
|
|
|
|
def test_timer_create(self):
|
|
self.assertEqual(self.named, models.Timer.objects.get(name="Named"))
|
|
self.assertEqual(str(self.named), "Named")
|
|
self.assertEqual(self.unnamed, models.Timer.objects.get(name=None))
|
|
self.assertEqual(str(self.unnamed), "Timer #{}".format(self.unnamed.id))
|
|
|
|
def test_timer_title_with_child(self):
|
|
self.assertEqual(self.named.title_with_child, str(self.named))
|
|
|
|
models.Child.objects.create(
|
|
first_name="Child", last_name="Two", birth_date=timezone.localdate()
|
|
)
|
|
self.assertEqual(
|
|
self.named.title_with_child,
|
|
"{} ({})".format(str(self.named), str(self.named.child)),
|
|
)
|
|
|
|
def test_timer_user_username(self):
|
|
self.assertEqual(self.named.user_username, self.user.get_username())
|
|
self.user.first_name = "User"
|
|
self.user.last_name = "Name"
|
|
self.user.save()
|
|
self.assertEqual(self.named.user_username, self.user.get_full_name())
|
|
|
|
def test_timer_restart(self):
|
|
self.named.restart()
|
|
self.assertIsNone(self.named.end)
|
|
self.assertIsNone(self.named.duration)
|
|
self.assertTrue(self.named.active)
|
|
|
|
def test_timer_stop(self):
|
|
stop_time = timezone.localtime()
|
|
self.unnamed.stop(end=stop_time)
|
|
self.assertEqual(self.unnamed.end, stop_time)
|
|
self.assertEqual(
|
|
self.unnamed.duration.seconds,
|
|
(self.unnamed.end - self.unnamed.start).seconds,
|
|
)
|
|
self.assertFalse(self.unnamed.active)
|
|
|
|
def test_timer_duration(self):
|
|
timer = models.Timer.objects.create(user=User.objects.first())
|
|
# Timer.start uses auto_now_add, so it cannot be set in create().
|
|
timer.start = timezone.localtime() - timezone.timedelta(minutes=30)
|
|
timer.save()
|
|
timer.refresh_from_db()
|
|
|
|
self.assertEqual(timer.duration.seconds, timezone.timedelta(minutes=30).seconds)
|
|
timer.stop()
|
|
self.assertEqual(timer.duration.seconds, timezone.timedelta(minutes=30).seconds)
|
|
|
|
|
|
class TummyTimeTestCase(TestCase):
|
|
def setUp(self):
|
|
call_command("migrate", verbosity=0)
|
|
self.child = models.Child.objects.create(
|
|
first_name="First", last_name="Last", birth_date=timezone.localdate()
|
|
)
|
|
|
|
def test_tummytime_create(self):
|
|
tummy_time = models.TummyTime.objects.create(
|
|
child=self.child,
|
|
start=timezone.localtime() - timezone.timedelta(minutes=30),
|
|
end=timezone.localtime(),
|
|
)
|
|
self.assertEqual(tummy_time, models.TummyTime.objects.first())
|
|
self.assertEqual(str(tummy_time), "Tummy Time")
|
|
self.assertEqual(tummy_time.duration, tummy_time.end - tummy_time.start)
|