import shelve import pytest import schedule2 as schedule @pytest.yield_fixture def db(): with shelve.open(schedule.DB_NAME) as the_db: if schedule.CONFERENCE not in the_db: schedule.load_db(the_db) yield the_db def test_record_attr_access(): rec = schedule.Record(spam=99, eggs=12) assert rec.spam == 99 assert rec.eggs == 12 def test_record_repr(): rec = schedule.DbRecord(spam=99, eggs=12) assert 'DbRecord object at 0x' in repr(rec) rec2 = schedule.DbRecord(serial=13) assert repr(rec2) == "" def test_conference_record(db): assert schedule.CONFERENCE in db def test_speaker_record(db): speaker = db['speaker.3471'] assert speaker.name == 'Anna Martelli Ravenscroft' def test_missing_db_exception(): with pytest.raises(schedule.MissingDatabaseError): schedule.DbRecord.fetch('venue.1585') def test_dbrecord(db): schedule.DbRecord.set_db(db) venue = schedule.DbRecord.fetch('venue.1585') assert venue.name == 'Exhibit Hall B' def test_event_record(db): event = db['event.33950'] assert repr(event) == "" def test_event_venue(db): schedule.Event.set_db(db) event = db['event.33950'] assert event.venue_serial == 1449 assert event.venue == db['venue.1449'] assert event.venue.name == 'Portland 251' def test_event_speakers(db): schedule.Event.set_db(db) event = db['event.33950'] assert len(event.speakers) == 2 anna_and_alex = [db['speaker.3471'], db['speaker.5199']] assert event.speakers == anna_and_alex def test_event_no_speakers(db): schedule.Event.set_db(db) event = db['event.36848'] assert len(event.speakers) == 0