def testRegisterForConference(self): """ TEST: Register user for selected conference.""" self.initDatabase() # verify database fixture self.login() prof = ndb.Key(Profile, self.getUserId()).get() conf = Conference.query(Conference.name == 'room #2').get() assert conf and conf.seatsAvailable == 1 and len(prof.conferenceKeysToAttend) == 0, \ "This shouldn't fail. Maybe someone messed with database fixture" container = CONF_GET_REQUEST.combined_message_class( websafeConferenceKey=conf.key.urlsafe(), ) # register to conference r = self.api.registerForConference(container) # re-fetch profile and conference, then check if user was properly registered prof = prof.key.get() conf = conf.key.get() assert r.data, 'Returned an invalid response' assert len(prof.conferenceKeysToAttend) == 1, "Failed to add conference to user's conferenceKeysToAttend" assert conf.seatsAvailable == 0, 'Failed to decrement available seats' # Verify users cant re-register to conferences that are already in user's conferenceKeysToAttend. container = CONF_GET_REQUEST.combined_message_class( websafeConferenceKey=conf.key.urlsafe(), ) try: r = self.api.registerForConference(container) assert False, 'ConflictException should of been thrown...' except ConflictException: pass # re-fetch profile and check that the user wasn't re-registered prof = prof.key.get() assert len(prof.conferenceKeysToAttend) == 1, "User's can't registered to the same conference" # Login as a different user and attempt to register a conference with zero seats available self.login(email='*****@*****.**') prof = ndb.Key(Profile, self.getUserId()).get() assert len(prof.conferenceKeysToAttend) == 0, "This shouldn't fail. Maybe someone messed with database fixture" try: r = self.api.registerForConference(container) assert False, 'ConflictException should of been thrown...' except ConflictException: pass # re-fetch profile and conference prof = prof.key.get() conf = conf.key.get() assert len(prof.conferenceKeysToAttend) == 0, "User's can't register to a conference with zero seats available." assert conf.seatsAvailable == 0, "seatsAvailable shouldn't have changed since user never registered..."
def testUnregisterFromConference(self): """ TEST: Unregister user for selected conference.""" self.initDatabase() # verify database fixture self.login() prof = ndb.Key(Profile, self.getUserId()).get() conf = Conference.query(Conference.name == 'room #2').get() assert conf and conf.seatsAvailable == 1 and len(prof.conferenceKeysToAttend) == 0, \ "This shouldn't fail. Maybe someone messed with database fixture" prof.conferenceKeysToAttend.append(conf.key) prof.put() container = CONF_GET_REQUEST.combined_message_class( websafeConferenceKey=conf.key.urlsafe(), ) # unregister conference r = self.api.unregisterFromConference(container) # re-fetch profile and conference, then check if user was properly unregistered prof = prof.key.get() conf = conf.key.get() assert r.data, 'Returned an invalid response' assert len(prof.conferenceKeysToAttend) == 0, "Failed to remove conference from user's conferenceKeysToAttend" assert conf.seatsAvailable == 2, 'Failed to increment available seats'
def testGetConference(self): """ TEST: Return requested conference (by websafeConferenceKey) """ self.initDatabase() self.login() conf = Conference.query(ancestor=ndb.Key(Profile, self.getUserId())).get() container = CONF_GET_REQUEST.combined_message_class( websafeConferenceKey=conf.key.urlsafe(), ) r = self.api.getConference(container) assert r.websafeKey == conf.key.urlsafe(), 'Returned an invalid conference'
def testGetConferenceSessions(self): """ TEST: Return all sessions for a given conference""" self.initDatabase() conf = Conference.query(Conference.name == 'room #1').fetch(1)[0] container = CONF_GET_REQUEST.combined_message_class(websafeConferenceKey=conf.key.urlsafe()) # manually fetch conference sessions and compare it against response sessions = {str(s.key.urlsafe()): s for s in conf.sessions.fetch()} r = self.api.getConferenceSessions(container) r_sessions = r.items assert len(r_sessions) == len(sessions), 'returned an invalid number of sessions' for r_session in r_sessions: assert sessions[r_session.websafeKey], 'returned an invalid session websafeKey'