import pytest
from birds.models import Bird


class TestBirdModel:
    def test_create_bird(self, db):
        bird = Bird.objects.create(common_name="Blue Jay")
        assert bird.common_name == "Blue Jay"
        assert bird.uuid is not None
        assert str(bird) == "Blue Jay"

    def test_find_or_create_new(self, db):
        bird = Bird.find_or_create("American Robin")
        assert bird.common_name == "American Robin"

    def test_find_or_create_existing(self, db, bird):
        result = Bird.find_or_create("Northern Cardinal")
        assert result.id == bird.id
        assert result.common_name == "Northern Cardinal"

    def test_find_or_create_case_insensitive(self, db, bird):
        result = Bird.find_or_create("northern cardinal")
        assert result.id == bird.id

    def test_bird_str(self, db):
        bird = Bird.objects.create(common_name="Mourning Dove")
        assert str(bird) == "Mourning Dove"

    def test_bird_scientific_name(self, db, bird):
        assert bird.scientific_name == "Cardinalis cardinalis"
