Ejemplo n.º 1
0
def test_shelter():
    s = Shelter()
    now = date.today()

    # add_animal
    res = s.add_animal(name="Doz",
                       year_of_birth=2000,
                       gender="Male",
                       date_of_entry=now - timedelta(days=200),
                       species="Dog",
                       breed="Staff")

    assert type(res) == Animal
    assert len(s.animals) == 1

    res = s.add_animal(name="Doz2",
                       year_of_birth=1992,
                       gender="Female",
                       date_of_entry=now - timedelta(days=200),
                       species="Doge",
                       breed="Staffe")

    assert type(res) == Animal
    assert len(s.animals) == 2

    # list_animals
    assert len(s.list_animals(date=now, )) == 2
    assert len(s.list_animals(date=now, name="Doz")) == 1
    assert len(s.list_animals(date=now, name="Doz2")) == 1
    assert len(s.list_animals(date=now, name="Dozzzz")) == 0
    assert len(s.list_animals(date=now, year_of_birth=2000)) == 1
    assert len(s.list_animals(date=now, year_of_birth=1992)) == 1
    assert len(s.list_animals(date=now, year_of_birth=1337)) == 0
    assert len(s.list_animals(date=now, gender="Male")) == 1
    assert len(s.list_animals(date=now, gender="Female")) == 1
    assert len(s.list_animals(date=now, gender="Hybrid")) == 0
    assert len(
        s.list_animals(date=now, date_of_entry=now - timedelta(days=200))) == 2
    assert len(s.list_animals(date=now, date_of_entry=now)) == 0
    assert len(s.list_animals(date=now, species="Dog")) == 1
    assert len(s.list_animals(date=now, species="Doge")) == 1
    assert len(s.list_animals(date=now, species="Dog3")) == 0
    assert len(s.list_animals(date=now, breed="Staff")) == 1
    assert len(s.list_animals(date=now, breed="Staffe")) == 1
    assert len(s.list_animals(date=now, breed="Staff3")) == 0

    doz = s.list_animals(date=now, name="Doz")[0]
    doz.adopt(date=now, adopter_name="Kek", adopter_address="Bur 1337")

    assert len(s.list_animals(date=now - timedelta(days=1))) == 2
    assert len(s.list_animals(date=now)) == 1

    # add_foster_parent
    p = s.add_foster_parent(name="Kek",
                            address="Bur 1337",
                            phone_number="13371337",
                            max_animals=1)

    assert type(p) == FosterParent
    assert len(s.foster_parents) == 1

    # available_foster_parents
    assert len(s.available_foster_parents(date=now)) == 1

    p.fosters = [make_foster(start_date=now)]

    assert len(s.available_foster_parents(date=now)) == 0
Ejemplo n.º 2
0
def test_shelter():
    s1 = Shelter()
    s1d = Shelter()
    s2 = Shelter()
    now = date.today()

    # add_animal
    s1.add_animal(name="Doz", year_of_birth=2000, gender="Male",
                  date_of_entry=now - timedelta(days=200), species="Dog", breed="Staff")

    s1.add_animal(name="Doz2", year_of_birth=1992, gender="Female",
                       date_of_entry=now - timedelta(days=200), species="Doge", breed="Staffe")

    s1d.add_animal(name="Doz", year_of_birth=2000, gender="Male",
                   date_of_entry=now - timedelta(days=200), species="Dog", breed="Staff")

    s1d.add_animal(name="Doz2", year_of_birth=1992, gender="Female",
                   date_of_entry=now - timedelta(days=200), species="Doge", breed="Staffe")

    s2.add_animal(name="Doz", year_of_birth=2000, gender="Male",
                  date_of_entry=now - timedelta(days=100), species="Dog", breed="Staff")

    s2.add_animal(name="Doz2", year_of_birth=1992, gender="Female",
                       date_of_entry=now - timedelta(days=100), species="Doge", breed="Staffe")

    # add_foster_parent
    fp1 = s1.add_foster_parent(name="Kek", address="Bur 1337",
                               phone_number="13371337", max_animals=1)

    s1d.add_foster_parent(name="Kek", address="Bur 1337",
                               phone_number="13371337", max_animals=1)

    fp2 = s2.add_foster_parent(name="Kek2", address="Bur",
                               phone_number="13371337", max_animals=2)

    s2.add_foster_parent(name="Kek", address="Bur 1337",
                         phone_number="13371337", max_animals=2)

    for a in s1.animals:
        a.fosters = [make_foster(parent=fp1, animal=a)]
        fp1.fosters = [make_foster(parent=fp1, animal=a)]
        a.exams = [make_exam()]
        a.adoption = make_adoption()

    for a in s1d.animals:
        a.fosters = [make_foster(parent=fp1, animal=a)]
        fp1.fosters = [make_foster(parent=fp1, animal=a)]
        a.exams = [make_exam()]
        a.adoption = make_adoption()

    for a in s2.animals:
        a.fosters = [make_foster(parent=fp2, animal=a)]
        fp2.fosters = [make_foster(parent=fp2, animal=a)]
        a.exams = [make_exam()]

    # === SQL ===
    db = sqlite3.connect(':memory:')
    db.execute("PRAGMA foreign_keys = on")

    store(s1, db=db)
    store(s1d, db=db, deduplicate=True)
    store(s2, db=db)

    assert s1 == s1d
    assert s1.id == s1d.id

    s1l = load(s1.id, db=db)

    assert s1 == s1l

    db.close()

    # === JSON ===
    a_jsons = []
    for a in s1.animals:
        j = shelter_json.store(a)
        res = shelter_json.load(j)
        a_jsons.append(shelter_json.parse(j))
        assert res == a

    p_jsons = []
    for p in s1.foster_parents:
        j = shelter_json.store(p)
        res = shelter_json.load(j)
        p_jsons.append(shelter_json.parse(j))
        assert res == p

    s_res = shelter_json.load(shelter_json.format(a_jsons), shelter_json.format(p_jsons))
    assert s_res == s1
Ejemplo n.º 3
0
def test():
    shelter = Shelter()
    now = date.today()
    day = timedelta(days=1)

    # add_animal
    a1 = shelter.add_animal(name="Doz",
                            year_of_birth=2000,
                            gender="Male",
                            date_of_entry=now - day * 200,
                            species="Dog",
                            breed="Staff")

    a1.add_exam(vet="Kekega", date=now - day, report="OK")
    a1.add_exam(vet="Kekega", date=now, report="OK")

    res = shelter.add_animal(name="Doz",
                             year_of_birth=2000,
                             gender="Male",
                             date_of_entry=now - day * 200,
                             species="Dog",
                             breed="Staff")
    assert a1 == res, f"{a1} == {res}"
    assert a1 is res, f"{a1} is {res}"

    a2 = shelter.add_animal(name="Doz2",
                            year_of_birth=1992,
                            gender="Female",
                            date_of_entry=now - day * 200,
                            species="Doge",
                            breed="Staffe")

    a2.add_exam(vet="Kekega", date=now - day, report="OK")
    a2.add_exam(vet="Kekega", date=now, report="OK")

    a3 = shelter.add_animal(name="Doz3",
                            year_of_birth=1992,
                            gender="Female",
                            date_of_entry=now - day * 200,
                            species="Dogee",
                            breed="Staffe")

    a3.add_exam(vet="Kekega", date=now - day, report="OK")

    # add_foster_parent
    fp1 = shelter.add_foster_parent(name="Kek",
                                    address="Bur 1337",
                                    phone_number="13371337",
                                    max_animals=3)

    a1.start_foster(date=now - day * 2, parent=fp1)
    a1.end_foster(date=now - day)
    a1.adopt(date=now, adopter_name="Kek", adopter_address="Lol")

    res = shelter.add_foster_parent(name="Kek",
                                    address="Bur 1337",
                                    phone_number="13371337",
                                    max_animals=3)
    assert fp1 == res, f"{fp1} == {res}"
    assert fp1 is res, f"{fp1} is {res}"

    fp2 = shelter.add_foster_parent(name="Kek2",
                                    address="Bur 1337",
                                    phone_number="13371337",
                                    max_animals=3)

    a2.start_foster(date=now - day, parent=fp2)
    a3.start_foster(date=now - day, parent=fp2)

    # === SQL ===
    db = sqlite3.connect(':memory:')
    db.execute("PRAGMA foreign_keys = on")

    id_ = store(shelter, db=db)
    shelter_2 = load(id_, db=db)
    id_2 = store(shelter_2, db=db, deduplicate=True)
    id_3 = store(shelter, db=db, deduplicate=True)

    assert id_ == id_2, f"{id_} == {id_2}"
    assert id_ == id_3, f"{id_} == {id_3}"

    # === JSON ===
    res = sj.load(sj.store(a1))
    assert res == a1, f"{res} == {a1}"

    res = sj.load(sj.store(fp1))
    assert res == fp1, f"{res} == {fp1}"

    a_jsons = []
    for a in shelter.animals:
        j = sj.store(a)
        res = sj.load(j)
        a_jsons.append(sj.parse(j))
        assert res == a, f"{res} == {a}"

    p_jsons = []
    for p in shelter.foster_parents:
        j = sj.store(p)
        res = sj.load(j)
        p_jsons.append(sj.parse(j))
        assert res == p, f"{res} == {p}"

    sj.store(shelter.animals)
    sj.store(shelter.foster_parents)

    res = sj.load(sj.format(a_jsons), sj.format(p_jsons))
    assert res == shelter, f"{res} == {shelter}"

    # === e2e ===
    res = load(store(res, db=db, deduplicate=True), db=db)
    assert res == shelter, f"{res} == {shelter}"

    print("OK")