forked from learn-co-curriculum/python-p3-freebie-tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebug.py
More file actions
90 lines (64 loc) · 2.83 KB
/
Copy pathdebug.py
File metadata and controls
90 lines (64 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models import Company, Dev, Freebie, Base
def display_data(session):
"""Helper function to display current data"""
print("\n=== CURRENT DATABASE STATE ===")
companies = session.query(Company).all()
devs = session.query(Dev).all()
freebies = session.query(Freebie).all()
print("Companies:")
for company in companies:
print(f"- {company.name} (founded {company.founding_year})")
print("\nDevelopers:")
for dev in devs:
print(f"- {dev.name}")
print("\nFreebies:")
for freebie in freebies:
print(f"- {freebie.print_details()}")
def test_relationships(session):
"""Test all relationship properties"""
print("\n=== TESTING RELATIONSHIPS ===")
for company in session.query(Company):
dev_names = [dev.name for dev in company.devs]
print(f"{company.name} has developers: {', '.join(dev_names) if dev_names else 'None'}")
for dev in session.query(Dev):
company_names = [company.name for company in dev.companies]
print(f"{dev.name} has freebies from: {', '.join(company_names) if company_names else 'None'}")
def test_methods(session):
"""Test all class methods"""
print("\n=== TESTING METHODS ===")
oldest = Company.oldest_company(session)
print(f"Oldest company is {oldest.name} (founded {oldest.founding_year})")
dev = session.query(Dev).filter_by(name="Musk").first()
print(f"Does Musk have a T-shirt? {dev.received_one('T-shirt')}")
print(f"Does Musk have a Mug? {dev.received_one('Mug')}")
freebie = session.query(Freebie).filter_by(item_name="T-shirt").first()
print(f"\nBefore give_away: {freebie.print_details()}")
dev.give_away(dev=session.query(Dev).filter_by(name="Louis").first(),
freebie=freebie,
session=session)
print(f"After give_away: {freebie.print_details()}")
def add_new_data(session):
"""Add new test data"""
print("\n=== ADDING NEW TEST DATA ===")
new_company = Company(name="Nvidia", founding_year=1993)
session.add(new_company)
new_dev = Dev(name="Linus")
session.add(new_dev)
session.commit()
company = session.query(Company).filter_by(name="Nvidia").first()
dev = session.query(Dev).filter_by(name="Linus").first()
company.give_freebie(session, dev, "GPU", 1500)
print("Added Nvidia company, Linus developer, and a GPU freebie")
if __name__ == '__main__':
engine = create_engine('sqlite:///freebies.db')
Session = sessionmaker(bind=engine)
session = Session()
display_data(session)
test_relationships(session)
test_methods(session)
add_new_data(session)
display_data(session)
session.close()
print("\nDebugging complete!")