def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() event = Event( id="2011ct", end_date=datetime.datetime(2011, 4, 2, 0, 0), event_short="ct", event_type_enum=EventType.REGIONAL, first_eid="5561", name="Northeast Utilities FIRST Connecticut Regional", start_date=datetime.datetime(2011, 3, 31, 0, 0), year=2011, venue_address="Connecticut Convention Center\r\n100 Columbus Blvd\r\nHartford, CT 06103\r\nUSA", website="http://www.ctfirst.org/ctr" ) event.put() team = Team( id="frc177", team_number=177, website="http://www.bobcatrobotics.org" ) team.put() event_team = EventTeam( id="%s_%s" % (event.key.id(), team.key.id()), event=event.key, team=team.key, year=None) event_team.put()
def test_update_pastyear(self): teams, event_teams, et_keys_to_delete = EventTeamUpdater.update('{}tstupdaterpastyear'.format(CUR_YEAR - 1)) self.assertEqual(set([team.team_number for team in teams]).symmetric_difference({95, 178, 176, 1922, 173, 2785, 228, 177, 1099, 175, 1027, 3017, 1493, 118, 229, 2791, 155, 549, 195, 4134, 20, 2836, 869, 1665, 4055, 3555, 126, 1699, 1559, 3464, 2168, 3461, 1991, 3467, 2067, 230, 1124, 3104, 236, 237, 1511, 250, 1880, 558, 694, 571, 3634, 3525, 999, 181, 1073, 3146, 1071, 1740, 3719, 3718, 2170, 663, 4122, 3182, 839, 1784, 3654, 743}), set()) self.assertEqual(set([et.key_name for et in event_teams]).symmetric_difference({'{}tstupdaterpastyear_frc95'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc178'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc176'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1922'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc173'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2785'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc228'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc177'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1099'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc175'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1027'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3017'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1493'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc118'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc229'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2791'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc155'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc549'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc195'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc4134'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc20'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2836'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc869'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1665'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc4055'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3555'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc126'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1699'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1559'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3464'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2168'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3461'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1991'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3467'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2067'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc230'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1124'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3104'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc236'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc237'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1511'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc250'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1880'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc558'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc694'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc571'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3634'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3525'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc999'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc181'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1073'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3146'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1071'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1740'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3719'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3718'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2170'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc663'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc4122'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3182'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc839'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1784'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3654'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc743'.format(CUR_YEAR - 1)}), set()) self.assertEqual(et_keys_to_delete, set()) event_team = EventTeam( id="%s_%s" % ('{}tstupdaterpastyear'.format(CUR_YEAR - 1), 'frc9999'), event=ndb.Key(Event, '{}tstupdaterpastyear'.format(CUR_YEAR - 1)), team=ndb.Key(Team, 'frc9999'), year=CUR_YEAR - 1) event_team.put() teams, event_teams, et_keys_to_delete = EventTeamUpdater.update('{}tstupdaterpastyear'.format(CUR_YEAR - 1)) self.assertEqual(set([team.team_number for team in teams]).symmetric_difference({95, 178, 176, 1922, 173, 2785, 228, 177, 1099, 175, 1027, 3017, 1493, 118, 229, 2791, 155, 549, 195, 4134, 20, 2836, 869, 1665, 4055, 3555, 126, 1699, 1559, 3464, 2168, 3461, 1991, 3467, 2067, 230, 1124, 3104, 236, 237, 1511, 250, 1880, 558, 694, 571, 3634, 3525, 999, 181, 1073, 3146, 1071, 1740, 3719, 3718, 2170, 663, 4122, 3182, 839, 1784, 3654, 743}), set()) self.assertEqual(set([et.key_name for et in event_teams]).symmetric_difference({'{}tstupdaterpastyear_frc95'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc178'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc176'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1922'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc173'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2785'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc228'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc177'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1099'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc175'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1027'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3017'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1493'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc118'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc229'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2791'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc155'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc549'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc195'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc4134'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc20'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2836'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc869'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1665'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc4055'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3555'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc126'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1699'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1559'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3464'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2168'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3461'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1991'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3467'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2067'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc230'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1124'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3104'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc236'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc237'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1511'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc250'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1880'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc558'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc694'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc571'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3634'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3525'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc999'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc181'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1073'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3146'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1071'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1740'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3719'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3718'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc2170'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc663'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc4122'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3182'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc839'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc1784'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc3654'.format(CUR_YEAR - 1), '{}tstupdaterpastyear_frc743'.format(CUR_YEAR - 1)}), set()) self.assertEqual(et_keys_to_delete, set())
def test_update_future(self): if os.environ.get('TRAVIS', '') != 'true': # Flaky on Travis -gregmarra 20130921 teams, event_teams, et_keys_to_delete = EventTeamUpdater.update('2011tstupdaterfuture') self.assertEqual(set([team.team_number for team in teams]).symmetric_difference({95, 178, 176, 1922, 173, 2785, 228, 177, 1099, 175, 1027, 3017, 1493, 118, 229, 2791, 155, 549, 195, 4134, 20, 2836, 869, 1665, 4055, 3555, 126, 1699, 1559, 3464, 2168, 3461, 1991, 3467, 2067, 230, 1124, 3104, 236, 237, 1511, 250, 1880, 558, 694, 571, 3634, 3525, 999, 181, 1073, 3146, 1071, 1740, 3719, 3718, 2170, 663, 4122, 3182, 839, 1784, 3654, 743}), set()) self.assertEqual(set([et.key_name for et in event_teams]).symmetric_difference({'2011tstupdaterfuture_frc95', '2011tstupdaterfuture_frc178', '2011tstupdaterfuture_frc176', '2011tstupdaterfuture_frc1922', '2011tstupdaterfuture_frc173', '2011tstupdaterfuture_frc2785', '2011tstupdaterfuture_frc228', '2011tstupdaterfuture_frc177', '2011tstupdaterfuture_frc1099', '2011tstupdaterfuture_frc175', '2011tstupdaterfuture_frc1027', '2011tstupdaterfuture_frc3017', '2011tstupdaterfuture_frc1493', '2011tstupdaterfuture_frc118', '2011tstupdaterfuture_frc229', '2011tstupdaterfuture_frc2791', '2011tstupdaterfuture_frc155', '2011tstupdaterfuture_frc549', '2011tstupdaterfuture_frc195', '2011tstupdaterfuture_frc4134', '2011tstupdaterfuture_frc20', '2011tstupdaterfuture_frc2836', '2011tstupdaterfuture_frc869', '2011tstupdaterfuture_frc1665', '2011tstupdaterfuture_frc4055', '2011tstupdaterfuture_frc3555', '2011tstupdaterfuture_frc126', '2011tstupdaterfuture_frc1699', '2011tstupdaterfuture_frc1559', '2011tstupdaterfuture_frc3464', '2011tstupdaterfuture_frc2168', '2011tstupdaterfuture_frc3461', '2011tstupdaterfuture_frc1991', '2011tstupdaterfuture_frc3467', '2011tstupdaterfuture_frc2067', '2011tstupdaterfuture_frc230', '2011tstupdaterfuture_frc1124', '2011tstupdaterfuture_frc3104', '2011tstupdaterfuture_frc236', '2011tstupdaterfuture_frc237', '2011tstupdaterfuture_frc1511', '2011tstupdaterfuture_frc250', '2011tstupdaterfuture_frc1880', '2011tstupdaterfuture_frc558', '2011tstupdaterfuture_frc694', '2011tstupdaterfuture_frc571', '2011tstupdaterfuture_frc3634', '2011tstupdaterfuture_frc3525', '2011tstupdaterfuture_frc999', '2011tstupdaterfuture_frc181', '2011tstupdaterfuture_frc1073', '2011tstupdaterfuture_frc3146', '2011tstupdaterfuture_frc1071', '2011tstupdaterfuture_frc1740', '2011tstupdaterfuture_frc3719', '2011tstupdaterfuture_frc3718', '2011tstupdaterfuture_frc2170', '2011tstupdaterfuture_frc663', '2011tstupdaterfuture_frc4122', '2011tstupdaterfuture_frc3182', '2011tstupdaterfuture_frc839', '2011tstupdaterfuture_frc1784', '2011tstupdaterfuture_frc3654', '2011tstupdaterfuture_frc743'}), set()) self.assertEqual(et_keys_to_delete, set()) event_team = EventTeam( id="%s_%s" % ('2011tstupdaterfuture', 'frc9999'), event=ndb.Key(Event, '2011tstupdaterfuture'), team=ndb.Key(Team, 'frc9999'), year=2011) event_team.put() teams, event_teams, et_keys_to_delete = EventTeamUpdater.update('2011tstupdaterfuture') self.assertEqual(set([team.team_number for team in teams]).symmetric_difference({95, 178, 176, 1922, 173, 2785, 228, 177, 1099, 175, 1027, 3017, 1493, 118, 229, 2791, 155, 549, 195, 4134, 20, 2836, 869, 1665, 4055, 3555, 126, 1699, 1559, 3464, 2168, 3461, 1991, 3467, 2067, 230, 1124, 3104, 236, 237, 1511, 250, 1880, 558, 694, 571, 3634, 3525, 999, 181, 1073, 3146, 1071, 1740, 3719, 3718, 2170, 663, 4122, 3182, 839, 1784, 3654, 743}), set()) self.assertEqual(set([et.key_name for et in event_teams]).symmetric_difference({'2011tstupdaterfuture_frc95', '2011tstupdaterfuture_frc178', '2011tstupdaterfuture_frc176', '2011tstupdaterfuture_frc1922', '2011tstupdaterfuture_frc173', '2011tstupdaterfuture_frc2785', '2011tstupdaterfuture_frc228', '2011tstupdaterfuture_frc177', '2011tstupdaterfuture_frc1099', '2011tstupdaterfuture_frc175', '2011tstupdaterfuture_frc1027', '2011tstupdaterfuture_frc3017', '2011tstupdaterfuture_frc1493', '2011tstupdaterfuture_frc118', '2011tstupdaterfuture_frc229', '2011tstupdaterfuture_frc2791', '2011tstupdaterfuture_frc155', '2011tstupdaterfuture_frc549', '2011tstupdaterfuture_frc195', '2011tstupdaterfuture_frc4134', '2011tstupdaterfuture_frc20', '2011tstupdaterfuture_frc2836', '2011tstupdaterfuture_frc869', '2011tstupdaterfuture_frc1665', '2011tstupdaterfuture_frc4055', '2011tstupdaterfuture_frc3555', '2011tstupdaterfuture_frc126', '2011tstupdaterfuture_frc1699', '2011tstupdaterfuture_frc1559', '2011tstupdaterfuture_frc3464', '2011tstupdaterfuture_frc2168', '2011tstupdaterfuture_frc3461', '2011tstupdaterfuture_frc1991', '2011tstupdaterfuture_frc3467', '2011tstupdaterfuture_frc2067', '2011tstupdaterfuture_frc230', '2011tstupdaterfuture_frc1124', '2011tstupdaterfuture_frc3104', '2011tstupdaterfuture_frc236', '2011tstupdaterfuture_frc237', '2011tstupdaterfuture_frc1511', '2011tstupdaterfuture_frc250', '2011tstupdaterfuture_frc1880', '2011tstupdaterfuture_frc558', '2011tstupdaterfuture_frc694', '2011tstupdaterfuture_frc571', '2011tstupdaterfuture_frc3634', '2011tstupdaterfuture_frc3525', '2011tstupdaterfuture_frc999', '2011tstupdaterfuture_frc181', '2011tstupdaterfuture_frc1073', '2011tstupdaterfuture_frc3146', '2011tstupdaterfuture_frc1071', '2011tstupdaterfuture_frc1740', '2011tstupdaterfuture_frc3719', '2011tstupdaterfuture_frc3718', '2011tstupdaterfuture_frc2170', '2011tstupdaterfuture_frc663', '2011tstupdaterfuture_frc4122', '2011tstupdaterfuture_frc3182', '2011tstupdaterfuture_frc839', '2011tstupdaterfuture_frc1784', '2011tstupdaterfuture_frc3654', '2011tstupdaterfuture_frc743'}), set()) self.assertEqual(set([et_key.id() for et_key in et_keys_to_delete]), set())
class TestDatabaseCacheClearer(unittest2.TestCase): def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() ndb.get_context().clear_cache() # Prevent data from leaking between tests self.testbed.init_taskqueue_stub(root_path=".") self.eventteam_2015casj_frc254 = EventTeam( id='2015casj_frc254', event=ndb.Key(Event, '2015casj'), team=ndb.Key(Team, 'frc254'), year=2015, ) self.eventteam_2015cama_frc604 = EventTeam( id='2015cama_frc604', event=ndb.Key(Event, '2015cama'), team=ndb.Key(Team, 'frc604'), year=2015, ) self.eventteam_2010cama_frc604 = EventTeam( id='2010cama_frc604', event=ndb.Key(Event, '2010cama'), team=ndb.Key(Team, 'frc604'), year=2010, ) self.eventteam_2016necmp_frc125 = EventTeam( id='2016necmp_frc125', event=ndb.Key(Event, '2016necmp'), team=ndb.Key(Team, 'frc125'), year=2016, ) self.eventteam_2015casj_frc254.put() self.eventteam_2015cama_frc604.put() self.eventteam_2010cama_frc604.put() self.eventteam_2016necmp_frc125.put() self.districtteam_2015fim_frc254 = DistrictTeam( id='2015fim_frc254', district_key=ndb.Key(District, '2015fim'), team=ndb.Key(Team, 'frc254'), year=2015, ) self.districtteam_2015mar_frc604 = DistrictTeam( id='2015mar_frc604', district_key=ndb.Key(District, '2015mar'), team=ndb.Key(Team, 'frc604'), year=2015, ) self.districtteam_2016ne_frc604 = DistrictTeam( id='2016ne_frc604', district_key=ndb.Key(District, '2016ne'), team=ndb.Key(Team, 'frc604'), year=2016, ) self.districtteam_2015fim_frc254.put() self.districtteam_2015mar_frc604.put() self.districtteam_2016ne_frc604.put() self.district_2015ne = District( id='2015ne', year=2015, abbreviation='ne', ) self.district_2016chs = District( id='2016chs', year=2016, abbreviation='chs', ) self.district_2015ne.put() self.district_2016chs.put() self.event_2016necmp = Event( id='2016necmp', year=2016, district_key=ndb.Key(District, '2016ne'), event_short='necmp', event_type_enum=EventType.DISTRICT_CMP, ) self.event_2016necmp.put() def tearDown(self): self.testbed.deactivate() def test_award_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_list': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [q.cache_key for q in get_affected_queries.award_updated(affected_refs)] self.assertEqual(len(cache_keys), 12) self.assertTrue(EventAwardsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventAwardsQuery('2015cama').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc604', '2015cama').cache_key in cache_keys) def test_event_updated(self): affected_refs = { 'key': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'year': {2014, 2015}, 'district_key': {ndb.Key(District, '2015fim'), ndb.Key(District, '2014mar')} } cache_keys = [q.cache_key for q in get_affected_queries.event_updated(affected_refs)] self.assertEqual(len(cache_keys), 10) self.assertTrue(EventQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventListQuery(2014).cache_key in cache_keys) self.assertTrue(EventListQuery(2015).cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2014mar').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) def test_event_details_updated(self): affected_refs = { 'key': {ndb.Key(EventDetails, '2015casj'), ndb.Key(EventDetails, '2015cama')}, } cache_keys = [q.cache_key for q in get_affected_queries.event_details_updated(affected_refs)] self.assertEqual(len(cache_keys), 2) self.assertTrue(EventDetailsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventDetailsQuery('2015cama').cache_key in cache_keys) def test_match_updated(self): affected_refs = { 'key': {ndb.Key(Match, '2015casj_qm1'), ndb.Key(Match, '2015casj_qm2')}, 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_keys': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [q.cache_key for q in get_affected_queries.match_updated(affected_refs)] self.assertEqual(len(cache_keys), 12) self.assertTrue(MatchQuery('2015casj_qm1').cache_key in cache_keys) self.assertTrue(MatchQuery('2015casj_qm2').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015cama').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc604', '2015cama').cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc604', 2015).cache_key in cache_keys) def test_media_updated_team(self): affected_refs = { 'references': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [q.cache_key for q in get_affected_queries.media_updated(affected_refs)] self.assertEqual(len(cache_keys), 10) self.assertTrue(TeamYearMediaQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMediaQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamSocialMediaQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamYearMediaQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMediaQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamSocialMediaQuery('frc604').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015casj').cache_key in cache_keys) def test_media_updated_event(self): affected_refs = { 'references': {ndb.Key(Event, '2016necmp')}, 'year': {2016}, } cache_keys = [q.cache_key for q in get_affected_queries.media_updated(affected_refs)] self.assertEqual(len(cache_keys), 1) self.assertTrue(EventMediasQuery('2016necmp').cache_key in cache_keys) def test_robot_updated(self): affected_refs = { 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [q.cache_key for q in get_affected_queries.robot_updated(affected_refs)] self.assertEqual(len(cache_keys), 2) self.assertTrue(TeamRobotsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamRobotsQuery('frc604').cache_key in cache_keys) def test_team_updated(self): affected_refs = { 'key': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [q.cache_key for q in get_affected_queries.team_updated(affected_refs)] self.assertEqual(len(cache_keys), 13) self.assertTrue(TeamQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamListQuery(0).cache_key in cache_keys) self.assertTrue(TeamListQuery(1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2010, 1).cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2016ne').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2010cama').cache_key in cache_keys) def test_eventteam_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [q.cache_key for q in get_affected_queries.eventteam_updated(affected_refs)] self.assertEqual(len(cache_keys), 18) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamParticipationQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamParticipationQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015casj').cache_key in cache_keys) def test_districtteam_updated(self): affected_refs = { 'district_key': {ndb.Key(District, '2015fim'), ndb.Key(District, '2015mar')}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')} } cache_keys = [q.cache_key for q in get_affected_queries.districtteam_updated(affected_refs)] self.assertEqual(len(cache_keys), 4) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc604').cache_key in cache_keys) def test_district_updated(self): affected_refs = { 'key': {ndb.Key(District, '2016ne')}, 'year': {2015, 2016}, 'abbreviation': {'ne', 'chs'} } cache_keys = [q.cache_key for q in get_affected_queries.district_updated(affected_refs)] self.assertEqual(len(cache_keys), 11) self.assertTrue(DistrictsInYearQuery(2015).cache_key in cache_keys) self.assertTrue(DistrictsInYearQuery(2016).cache_key in cache_keys) self.assertTrue(DistrictHistoryQuery('ne').cache_key in cache_keys) self.assertTrue(DistrictHistoryQuery('chs').cache_key in cache_keys) self.assertTrue(DistrictQuery('2016ne').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc604').cache_key in cache_keys) # Necessary because APIv3 Event models include the District model self.assertTrue(EventQuery('2016necmp').cache_key in cache_keys) self.assertTrue(EventListQuery(2016).cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2016ne').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc125').cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc125', 2016).cache_key in cache_keys)
class TestApiTeamShow(unittest2.TestCase): # TODO: Add event_keys testing. -brandondean 10/21/2012 def setUp(self): app = webapp2.WSGIApplication([(r'/', ApiTeamsShow)], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", address="Greenville, SC, USA", website="www.entech.org", ) self.team.put() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=2010, end_date=datetime(2010, 03, 27), official=True, location='Clemson, SC', start_date=datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam( team=self.team.key, event=self.event.key, year=datetime.now().year ) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team_dict): self.assertEqual(team_dict["key"], self.team.key_name) self.assertEqual(team_dict["team_number"], self.team.team_number) self.assertEqual(team_dict["nickname"], self.team.nickname) self.assertEqual(team_dict["location"], self.team.location) self.assertEqual(team_dict["locality"], "Greenville") self.assertEqual(team_dict["country_name"], "USA") self.assertEqual(team_dict["region"], "SC") self.assertEqual(team_dict["website"], self.team.website) self.assertTrue(self.event.key.id() in team_dict["events"]) def testTeamShow(self): response = self.testapp.get('/?teams=frc281', headers={"User-Agent": "tests"}) team_dict = json.loads(response.body) self.assertTeamJson(team_dict[0]) def testNonexistentTeam(self): response = self.testapp.get('/?teams=frc3141579265', headers={"User-Agent": "tests"}, status=404) self.assertEqual(response.status_int, 404) def test_validate_user_agent(self): response = self.testapp.get('/?teams=frc254', expect_errors=True) # By default get() doesn't send a user agent self.assertEqual(response.status, "400 Bad Request") self.assertEqual(response.body, '{"Error": "User-Agent is a required header."}')
class TestTeamApiController(unittest2.TestCase): def setUp(self): app = webapp2.WSGIApplication([webapp2.Route(r'/<team_key:>', ApiTeamController, methods=['GET'])], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", address="Greenville, SC, USA", website="www.entech.org", ) self.team.put() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=datetime.now().year, end_date=datetime(2010, 03, 27), official=True, location='Clemson, SC', start_date=datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam( team=self.team.key, event=self.event.key, year=datetime.now().year ) self.event_team.put() self.match = Match( id="2010sc_qm1", alliances_json="""{"blue": {"score": 57, "teams": ["frc3464", "frc20", "frc1073"]}, "red": {"score": 74, "teams": ["frc281", "frc571", "frc176"]}}""", comp_level="qm", event=self.event.key, game="frc_2012_rebr", set_number=1, match_number=1, team_key_names=[u'frc281', u'frc571', u'frc176', u'frc3464', u'frc20', u'frc1073'], ) self.match.put() self.award = Award( name_str = "Engineering Inspiration", award_type_enum = AwardType.ENGINEERING_INSPIRATION, year=datetime.now().year, event = self.event.key, event_type_enum = EventType.REGIONAL, team_list = [self.team.key], recipient_json_list=[json.dumps({'team_number': 281, 'awardee': None})], ) self.award.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team): self.assertEqual(team["key"], self.team.key_name) self.assertEqual(team["team_number"], self.team.team_number) self.assertEqual(team["nickname"], self.team.nickname) self.assertEqual(team["location"], self.team.location) self.assertEqual(team["locality"], "Greenville") self.assertEqual(team["country_name"], "USA") self.assertEqual(team["region"], "SC") self.assertEqual(team["website"], self.team.website) def assertEventJson(self, event): self.assertEqual(event["key"], self.event.key_name) self.assertEqual(event["name"], self.event.name) self.assertEqual(event["short_name"], self.event.short_name) self.assertEqual(event["official"], self.event.official) self.assertEqual(event["start_date"], self.event.start_date.date().isoformat()) self.assertEqual(event["end_date"], self.event.end_date.date().isoformat()) self.assertEqual(event["event_type_string"], self.event.event_type_str) self.assertEqual(event["event_type"], self.event.event_type_enum) def assertMatchJson(self, match): self.assertEqual(str(match["key"]), self.match.key.string_id()) self.assertEqual(match["comp_level"], self.match.comp_level) self.assertEqual(match["event_key"], self.match.event.string_id()) self.assertEqual(match["set_number"], self.match.set_number) self.assertEqual(match["match_number"], self.match.match_number) def assertAwardJson(self, award): self.assertEqual(award["name"], self.award.name_str) self.assertEqual(award["event_key"], self.award.event.string_id()) self.assertEqual(award["recipient_list"], self.award.recipient_list) self.assertEqual(award["year"], self.award.year) def testTeamApi(self): response = self.testapp.get('/frc281', headers={"X-TBA-App-Id": "tba-tests:team-controller-test:v01"}) team_dict = json.loads(response.body) self.assertTeamJson(team_dict) self.assertEventJson(team_dict["events"][0]) self.assertMatchJson(team_dict["events"][0]["matches"][0]) self.assertAwardJson(team_dict["events"][0]["awards"][0])
class TestApiTeamShow(unittest2.TestCase): #TODO: Add event_keys testing. -brandondean 10/21/2012 def setUp(self): app = webapp2.WSGIApplication([(r'/', ApiTeamsShow)], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.team = Team( id = "frc281", name = "Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number = 281, nickname = "EnTech GreenVillians", address = "Greenville, SC, USA", website = "www.entech.org", ) self.team.put() self.event = Event( id = "2010sc", name = "Palmetto Regional", event_type = "Regional", short_name = "Palmetto", event_short = "sc", year = 2010, end_date = datetime(2010, 03, 27), official = True, location = 'Clemson, SC', start_date = datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam( team = self.team.key, event = self.event.key, year = datetime.now().year ) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team_dict): self.assertEqual(team_dict["key"], self.team.key_name) self.assertEqual(team_dict["team_number"], self.team.team_number) self.assertEqual(team_dict["nickname"], self.team.nickname) self.assertEqual(team_dict["location"], self.team.address) self.assertEqual(team_dict["locality"], "Greenville") self.assertEqual(team_dict["country_name"], "USA") self.assertEqual(team_dict["region"], "SC") self.assertEqual(team_dict["website"], self.team.website) self.assertEqual(team_dict["events"][0], self.event.key_name) def testTeamShow(self): response = self.testapp.get('/?teams=frc281') team_dict = json.loads(response.body) self.assertTeamJson(team_dict[0])
class TestTeamEventsApiController(unittest2.TestCase): def setUp(self): app = webapp2.WSGIApplication([webapp2.Route(r'/<team_key:>/<year:>', ApiTeamEventsController, methods=['GET'])], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=".") self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", address="Greenville, SC, USA", website="www.entech.org", ) self.team.put() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=datetime.now().year, end_date=datetime(2010, 03, 27), official=True, location='Clemson, SC', start_date=datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam( team=self.team.key, event=self.event.key, year=2010 ) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertEventJson(self, event): self.assertEqual(event["key"], self.event.key_name) self.assertEqual(event["name"], self.event.name) self.assertEqual(event["short_name"], self.event.short_name) self.assertEqual(event["official"], self.event.official) self.assertEqual(event["start_date"], self.event.start_date.date().isoformat()) self.assertEqual(event["end_date"], self.event.end_date.date().isoformat()) self.assertEqual(event["event_type_string"], self.event.event_type_str) self.assertEqual(event["event_type"], self.event.event_type_enum) def testTeamApi(self): response = self.testapp.get('/frc281/2010', headers={"X-TBA-App-Id": "tba-tests:team-controller-test:v01"}) event_dict = json.loads(response.body) self.assertEventJson(event_dict[0])
class TestDatabaseCacheClearer(unittest2.TestCase): def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=".") self.eventteam_2015casj_frc254 = EventTeam( id='2015casj_frc254', event=ndb.Key(Event, '2015casj'), team=ndb.Key(Team, 'frc254'), year=2015, ) self.eventteam_2015cama_frc604 = EventTeam( id='2015cama_frc604', event=ndb.Key(Event, '2015cama'), team=ndb.Key(Team, 'frc604'), year=2015, ) self.eventteam_2015casj_frc254.put() self.eventteam_2015cama_frc604.put() self.districtteam_2015fim_frc254 = DistrictTeam( id='2015fim_frc254', district=DistrictType.MICHIGAN, team=ndb.Key(Team, 'frc254'), year=2015, ) self.districtteam_2015mar_frc604 = DistrictTeam( id='2015mar_frc604', district=DistrictType.MID_ATLANTIC, team=ndb.Key(Team, 'frc604'), year=2015, ) self.districtteam_2015fim_frc254.put() self.districtteam_2015mar_frc604.put() def tearDown(self): self.testbed.deactivate() def test_award_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_list': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [ q.cache_key for q in get_affected_queries.award_updated(affected_refs) ] self.assertEqual(len(cache_keys), 12) self.assertTrue(EventAwardsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventAwardsQuery('2015cama').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc604', '2015cama').cache_key in cache_keys) def test_event_updated(self): affected_refs = { 'key': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'year': {2014, 2015}, 'event_district_key': {'2015fim', '2014mar'} } cache_keys = [ q.cache_key for q in get_affected_queries.event_updated(affected_refs) ] self.assertEqual(len(cache_keys), 8) self.assertTrue(EventListQuery(2014).cache_key in cache_keys) self.assertTrue(EventListQuery(2015).cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2014mar').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) def test_match_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_keys': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [ q.cache_key for q in get_affected_queries.match_updated(affected_refs) ] self.assertEqual(len(cache_keys), 10) self.assertTrue(EventMatchesQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015cama').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc604', '2015cama').cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc604', 2015).cache_key in cache_keys) def test_media_updated(self): affected_refs = { 'references': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [ q.cache_key for q in get_affected_queries.media_updated(affected_refs) ] self.assertEqual(len(cache_keys), 4) self.assertTrue( TeamYearMediaQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMediaQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearMediaQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMediaQuery('frc604', 2015).cache_key in cache_keys) def test_robot_updated(self): affected_refs = { 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [ q.cache_key for q in get_affected_queries.robot_updated(affected_refs) ] self.assertEqual(len(cache_keys), 2) self.assertTrue(TeamRobotsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamRobotsQuery('frc604').cache_key in cache_keys) def test_team_updated(self): affected_refs = { 'key': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [ q.cache_key for q in get_affected_queries.team_updated(affected_refs) ] self.assertEqual(len(cache_keys), 8) self.assertTrue(TeamListQuery(0).cache_key in cache_keys) self.assertTrue(TeamListQuery(1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) def test_eventteam_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [ q.cache_key for q in get_affected_queries.eventteam_updated(affected_refs) ] self.assertEqual(len(cache_keys), 14) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamParticipationQuery('frc254').cache_key in cache_keys) self.assertTrue( TeamParticipationQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) def test_districtteam_updated(self): affected_refs = { 'district_key': {'2015fim', '2015mar'}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')} } cache_keys = [ q.cache_key for q in get_affected_queries.districtteam_updated(affected_refs) ] self.assertEqual(len(cache_keys), 4) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc604').cache_key in cache_keys)
class TestEventTeamsApiController(unittest2.TestCase): def setUp(self): app = webapp2.WSGIApplication([ webapp2.Route( r'/<event_key:>', ApiEventTeamsController, methods=['GET']) ], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=2010, end_date=datetime(2010, 03, 27), official=True, location='Clemson, SC', start_date=datetime(2010, 03, 24), ) self.event.put() self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", address="Greenville, SC, USA", website="www.entech.org", ) self.team.put() self.event_team = EventTeam(team=self.team.key, event=self.event.key, year=datetime.now().year) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team): team = team[0] self.assertEqual(team["key"], self.team.key_name) self.assertEqual(team["team_number"], self.team.team_number) self.assertEqual(team["nickname"], self.team.nickname) self.assertEqual(team["location"], self.team.location) self.assertEqual(team["locality"], "Greenville") self.assertEqual(team["country_name"], "USA") self.assertEqual(team["region"], "SC") self.assertEqual(team["website"], self.team.website) def testEventTeamsApi(self): response = self.testapp.get( '/2010sc', headers={"X-TBA-App-Id": "tba-tests:event-controller-test:v01"}) team_dict = json.loads(response.body) self.assertTeamJson(team_dict)
class TestTeamApiController(unittest2.TestCase): def setUp(self): app = webapp2.WSGIApplication([ webapp2.Route(r'/<team_key:>', ApiTeamController, methods=['GET']) ], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", address="Greenville, SC, USA", website="www.entech.org", ) self.team.put() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=datetime.now().year, end_date=datetime(2010, 03, 27), official=True, location='Clemson, SC', start_date=datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam(team=self.team.key, event=self.event.key, year=datetime.now().year) self.event_team.put() self.match = Match( id="2010sc_qm1", alliances_json= """{"blue": {"score": 57, "teams": ["frc3464", "frc20", "frc1073"]}, "red": {"score": 74, "teams": ["frc281", "frc571", "frc176"]}}""", comp_level="qm", event=self.event.key, game="frc_2012_rebr", set_number=1, match_number=1, team_key_names=[ u'frc281', u'frc571', u'frc176', u'frc3464', u'frc20', u'frc1073' ], ) self.match.put() self.award = Award( name_str="Engineering Inspiration", award_type_enum=AwardType.ENGINEERING_INSPIRATION, year=datetime.now().year, event=self.event.key, event_type_enum=EventType.REGIONAL, team_list=[self.team.key], recipient_json_list=[ json.dumps({ 'team_number': 281, 'awardee': None }) ], ) self.award.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team): self.assertEqual(team["key"], self.team.key_name) self.assertEqual(team["team_number"], self.team.team_number) self.assertEqual(team["nickname"], self.team.nickname) self.assertEqual(team["location"], self.team.location) self.assertEqual(team["locality"], "Greenville") self.assertEqual(team["country_name"], "USA") self.assertEqual(team["region"], "SC") self.assertEqual(team["website"], self.team.website) def assertEventJson(self, event): self.assertEqual(event["key"], self.event.key_name) self.assertEqual(event["name"], self.event.name) self.assertEqual(event["short_name"], self.event.short_name) self.assertEqual(event["official"], self.event.official) self.assertEqual(event["start_date"], self.event.start_date.isoformat()) self.assertEqual(event["end_date"], self.event.end_date.isoformat()) self.assertEqual(event["event_type_string"], self.event.event_type_str) self.assertEqual(event["event_type"], self.event.event_type_enum) def assertMatchJson(self, match): self.assertEqual(str(match["key"]), self.match.key.string_id()) self.assertEqual(match["comp_level"], self.match.comp_level) self.assertEqual(match["event_key"], self.match.event.string_id()) self.assertEqual(match["set_number"], self.match.set_number) self.assertEqual(match["match_number"], self.match.match_number) def assertAwardJson(self, award): self.assertEqual(award["name"], self.award.name_str) self.assertEqual(award["event_key"], self.award.event.string_id()) self.assertEqual(award["recipient_list"], self.award.recipient_list) self.assertEqual(award["year"], self.award.year) def testTeamApi(self): response = self.testapp.get( '/frc281', headers={"X-TBA-App-Id": "tba-tests:team-controller-test:v01"}) team_dict = json.loads(response.body) self.assertTeamJson(team_dict) self.assertEventJson(team_dict["events"][0]) self.assertMatchJson(team_dict["events"][0]["matches"][0]) self.assertAwardJson(team_dict["events"][0]["awards"][0])
class TestTeamEventsApiController(unittest2.TestCase): def setUp(self): app = webapp2.WSGIApplication([webapp2.Route(r'/<team_key:>/<year:>', ApiTeamEventsController, methods=['GET'])], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() ndb.get_context().clear_cache() # Prevent data from leaking between tests self.testbed.init_taskqueue_stub(root_path=".") self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", city="Greenville", state_prov="SC", country="USA", website="www.entech.org", ) self.team.put() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=datetime.now().year, end_date=datetime(2010, 03, 27), official=True, city='Clemson', state_prov='SC', country='USA', start_date=datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam( team=self.team.key, event=self.event.key, year=2010 ) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertEventJson(self, event): self.assertEqual(event["key"], self.event.key_name) self.assertEqual(event["name"], self.event.name) self.assertEqual(event["short_name"], self.event.short_name) self.assertEqual(event["official"], self.event.official) self.assertEqual(event["start_date"], self.event.start_date.date().isoformat()) self.assertEqual(event["end_date"], self.event.end_date.date().isoformat()) self.assertEqual(event["event_type_string"], self.event.event_type_str) self.assertEqual(event["event_type"], self.event.event_type_enum) def testTeamApi(self): response = self.testapp.get('/frc281/2010', headers={"X-TBA-App-Id": "tba-tests:team-controller-test:v01"}) event_dict = json.loads(response.body) self.assertEventJson(event_dict[0])
class TestTeamController(unittest2.TestCase): def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() ndb.get_context().clear_cache( ) # Prevent data from leaking between tests app = webapp2.WSGIApplication([ RedirectRoute(r'/team/<team_number:[0-9]+>', TeamCanonical, 'team-canonical'), RedirectRoute(r'/team/<team_number:[0-9]+>/<year:[0-9]+>', TeamDetail, 'team-detail'), RedirectRoute(r'/team/<team_number:[0-9]+>/history', TeamHistory, 'team-history'), RedirectRoute(r'/teams/<page:[0-9]+>', TeamList, 'team-list-year'), RedirectRoute(r'/teams', TeamList, 'team-list'), ]) self.testapp = webtest.TestApp(app) self.team = Team( id="frc1124", name="Really Long Name", team_number=1124, rookie_year=2003, nickname="The UberBots", city="Avon", state_prov="CT", country="USA", website="www.uberbots.org", motto="This is a motto", ) self.event = Event( id="2016necmp", name="New England District Championship", event_type_enum=EventType.DISTRICT_CMP, short_name="New England", event_short="necmp", year=2016, end_date=datetime(2016, 03, 27), official=True, city='Hartford', state_prov='CT', country='USA', venue="Some Venue", venue_address="Some Venue, Hartford, CT, USA", timezone_id="America/New_York", start_date=datetime(2016, 03, 24), ) self.event_team = EventTeam(id="2016necmp_frc1124", team=self.team.key, event=self.event.key, year=2016) self.event2 = Event( id="2015necmp", name="New England District Championship", event_type_enum=EventType.DISTRICT_CMP, short_name="New England", event_short="necmp", year=2015, end_date=datetime(2015, 03, 27), official=True, city='Hartford', state_prov='CT', country='USA', venue="Some Venue", venue_address="Some Venue, Hartford, CT, USA", timezone_id="America/New_York", start_date=datetime(2015, 03, 24), ) self.event_team2 = EventTeam(id="2015necmp_frc1124", team=self.team.key, event=self.event2.key, year=2015) self.event_team.put() self.team.put() self.event.put() self.event_team.put() self.event2.put() self.event_team2.put() def tearDown(self): self.testbed.deactivate() def testTeamListDefaultPage(self): response = self.testapp.get("/teams") self.assertEqual(response.status_int, 200) def testTeamListExplicitPage(self): response = self.testapp.get("/teams/1") self.assertEqual(response.status_int, 200) def testTeamListBadPage(self): response = self.testapp.get("/teams/19", status=404) self.assertEqual(response.status_int, 404) def testTeamCanonical(self): response = self.testapp.get("/team/1124") self.assertEqual(response.status_int, 200) def testBadTeamCanonical(self): response = self.testapp.get("/team/1337", status=404) self.assertEqual(response.status_int, 404) def testTeamDetail(self): response = self.testapp.get("/team/1124/2016") self.assertEqual(response.status_int, 200) # Because 2015 is special :/ def testTeamDetail2015(self): response = self.testapp.get("/team/1124/2015") self.assertEqual(response.status_int, 200) def testTeamDetailBadYear(self): response = self.testapp.get("/team/1124/2014", status=404) self.assertEqual(response.status_int, 404) def testBadTeamDetail(self): response = self.testapp.get("/team/1337/2016", status=404) self.assertEqual(response.status_int, 404) def testTeamHistory(self): response = self.testapp.get("/team/1124/history") self.assertEqual(response.status_int, 200) def testBadTeamHistory(self): response = self.testapp.get("/team/1337/history", status=404) self.assertEqual(response.status_int, 404)
class TestTeamController(unittest2.TestCase): def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() app = webapp2.WSGIApplication([ RedirectRoute(r'/team/<team_number:[0-9]+>', TeamCanonical, 'team-canonical'), RedirectRoute(r'/team/<team_number:[0-9]+>/<year:[0-9]+>', TeamDetail, 'team-detail'), RedirectRoute(r'/team/<team_number:[0-9]+>/history', TeamHistory, 'team-history'), RedirectRoute(r'/teams/<page:[0-9]+>', TeamList, 'team-list-year'), RedirectRoute(r'/teams', TeamList, 'team-list'), ]) self.testapp = webtest.TestApp(app) self.team = Team( id="frc1124", name="Really Long Name", team_number=1124, rookie_year=2003, nickname="The UberBots", city="Avon", state_prov="CT", country="USA", website="www.uberbots.org", motto="This is a motto", ) self.event = Event( id="2016necmp", name="New England District Championship", event_type_enum=EventType.DISTRICT_CMP, short_name="New England", event_short="necmp", year=2016, end_date=datetime(2016, 03, 27), official=True, city='Hartford', state_prov='CT', country='USA', venue="Some Venue", venue_address="Some Venue, Hartford, CT, USA", timezone_id="America/New_York", start_date=datetime(2016, 03, 24), ) self.event_team = EventTeam( id="2016necmp_frc1124", team=self.team.key, event=self.event.key, year=2016 ) self.event2 = Event( id="2015necmp", name="New England District Championship", event_type_enum=EventType.DISTRICT_CMP, short_name="New England", event_short="necmp", year=2015, end_date=datetime(2015, 03, 27), official=True, city='Hartford', state_prov='CT', country='USA', venue="Some Venue", venue_address="Some Venue, Hartford, CT, USA", timezone_id="America/New_York", start_date=datetime(2015, 03, 24), ) self.event_team2 = EventTeam( id="2015necmp_frc1124", team=self.team.key, event=self.event2.key, year=2015 ) self.event_team.put() self.team.put() self.event.put() self.event_team.put() self.event2.put() self.event_team2.put() def tearDown(self): self.testbed.deactivate() def testTeamListDefaultPage(self): response = self.testapp.get("/teams") self.assertEqual(response.status_int, 200) def testTeamListExplicitPage(self): response = self.testapp.get("/teams/1") self.assertEqual(response.status_int, 200) def testTeamListBadPage(self): response = self.testapp.get("/teams/19", status=404) self.assertEqual(response.status_int, 404) def testTeamCanonical(self): response = self.testapp.get("/team/1124") self.assertEqual(response.status_int, 200) def testBadTeamCanonical(self): response = self.testapp.get("/team/1337", status=404) self.assertEqual(response.status_int, 404) def testTeamDetail(self): response = self.testapp.get("/team/1124/2016") self.assertEqual(response.status_int, 200) # Because 2015 is special :/ def testTeamDetail2015(self): response = self.testapp.get("/team/1124/2015") self.assertEqual(response.status_int, 200) def testTeamDetailBadYear(self): response = self.testapp.get("/team/1124/2014", status=404) self.assertEqual(response.status_int, 404) def testBadTeamDetail(self): response = self.testapp.get("/team/1337/2016", status=404) self.assertEqual(response.status_int, 404) def testTeamHistory(self): response = self.testapp.get("/team/1124/history") self.assertEqual(response.status_int, 200) def testBadTeamHistory(self): response = self.testapp.get("/team/1337/history", status=404) self.assertEqual(response.status_int, 404)
def test_update_future(self): teams, event_teams, et_keys_to_delete = EventTeamUpdater.update( '{}tstupdaterfuture'.format(CUR_YEAR)) self.assertEqual( set([team.team_number for team in teams]).symmetric_difference({ 95, 178, 176, 1922, 173, 2785, 228, 177, 1099, 175, 1027, 3017, 1493, 118, 229, 2791, 155, 549, 195, 4134, 20, 2836, 869, 1665, 4055, 3555, 126, 1699, 1559, 3464, 2168, 3461, 1991, 3467, 2067, 230, 1124, 3104, 236, 237, 1511, 250, 1880, 558, 694, 571, 3634, 3525, 999, 181, 1073, 3146, 1071, 1740, 3719, 3718, 2170, 663, 4122, 3182, 839, 1784, 3654, 743 }), set()) self.assertEqual( set([et.key_name for et in event_teams]).symmetric_difference({ '{}tstupdaterfuture_frc95'.format(CUR_YEAR), '{}tstupdaterfuture_frc178'.format(CUR_YEAR), '{}tstupdaterfuture_frc176'.format(CUR_YEAR), '{}tstupdaterfuture_frc1922'.format(CUR_YEAR), '{}tstupdaterfuture_frc173'.format(CUR_YEAR), '{}tstupdaterfuture_frc2785'.format(CUR_YEAR), '{}tstupdaterfuture_frc228'.format(CUR_YEAR), '{}tstupdaterfuture_frc177'.format(CUR_YEAR), '{}tstupdaterfuture_frc1099'.format(CUR_YEAR), '{}tstupdaterfuture_frc175'.format(CUR_YEAR), '{}tstupdaterfuture_frc1027'.format(CUR_YEAR), '{}tstupdaterfuture_frc3017'.format(CUR_YEAR), '{}tstupdaterfuture_frc1493'.format(CUR_YEAR), '{}tstupdaterfuture_frc118'.format(CUR_YEAR), '{}tstupdaterfuture_frc229'.format(CUR_YEAR), '{}tstupdaterfuture_frc2791'.format(CUR_YEAR), '{}tstupdaterfuture_frc155'.format(CUR_YEAR), '{}tstupdaterfuture_frc549'.format(CUR_YEAR), '{}tstupdaterfuture_frc195'.format(CUR_YEAR), '{}tstupdaterfuture_frc4134'.format(CUR_YEAR), '{}tstupdaterfuture_frc20'.format(CUR_YEAR), '{}tstupdaterfuture_frc2836'.format(CUR_YEAR), '{}tstupdaterfuture_frc869'.format(CUR_YEAR), '{}tstupdaterfuture_frc1665'.format(CUR_YEAR), '{}tstupdaterfuture_frc4055'.format(CUR_YEAR), '{}tstupdaterfuture_frc3555'.format(CUR_YEAR), '{}tstupdaterfuture_frc126'.format(CUR_YEAR), '{}tstupdaterfuture_frc1699'.format(CUR_YEAR), '{}tstupdaterfuture_frc1559'.format(CUR_YEAR), '{}tstupdaterfuture_frc3464'.format(CUR_YEAR), '{}tstupdaterfuture_frc2168'.format(CUR_YEAR), '{}tstupdaterfuture_frc3461'.format(CUR_YEAR), '{}tstupdaterfuture_frc1991'.format(CUR_YEAR), '{}tstupdaterfuture_frc3467'.format(CUR_YEAR), '{}tstupdaterfuture_frc2067'.format(CUR_YEAR), '{}tstupdaterfuture_frc230'.format(CUR_YEAR), '{}tstupdaterfuture_frc1124'.format(CUR_YEAR), '{}tstupdaterfuture_frc3104'.format(CUR_YEAR), '{}tstupdaterfuture_frc236'.format(CUR_YEAR), '{}tstupdaterfuture_frc237'.format(CUR_YEAR), '{}tstupdaterfuture_frc1511'.format(CUR_YEAR), '{}tstupdaterfuture_frc250'.format(CUR_YEAR), '{}tstupdaterfuture_frc1880'.format(CUR_YEAR), '{}tstupdaterfuture_frc558'.format(CUR_YEAR), '{}tstupdaterfuture_frc694'.format(CUR_YEAR), '{}tstupdaterfuture_frc571'.format(CUR_YEAR), '{}tstupdaterfuture_frc3634'.format(CUR_YEAR), '{}tstupdaterfuture_frc3525'.format(CUR_YEAR), '{}tstupdaterfuture_frc999'.format(CUR_YEAR), '{}tstupdaterfuture_frc181'.format(CUR_YEAR), '{}tstupdaterfuture_frc1073'.format(CUR_YEAR), '{}tstupdaterfuture_frc3146'.format(CUR_YEAR), '{}tstupdaterfuture_frc1071'.format(CUR_YEAR), '{}tstupdaterfuture_frc1740'.format(CUR_YEAR), '{}tstupdaterfuture_frc3719'.format(CUR_YEAR), '{}tstupdaterfuture_frc3718'.format(CUR_YEAR), '{}tstupdaterfuture_frc2170'.format(CUR_YEAR), '{}tstupdaterfuture_frc663'.format(CUR_YEAR), '{}tstupdaterfuture_frc4122'.format(CUR_YEAR), '{}tstupdaterfuture_frc3182'.format(CUR_YEAR), '{}tstupdaterfuture_frc839'.format(CUR_YEAR), '{}tstupdaterfuture_frc1784'.format(CUR_YEAR), '{}tstupdaterfuture_frc3654'.format(CUR_YEAR), '{}tstupdaterfuture_frc743'.format(CUR_YEAR) }), set()) self.assertEqual(et_keys_to_delete, set()) event_team = EventTeam( id="%s_%s" % ('{}tstupdaterfuture'.format(CUR_YEAR), 'frc9999'), event=ndb.Key(Event, '{}tstupdaterfuture'.format(CUR_YEAR)), team=ndb.Key(Team, 'frc9999'), year=CUR_YEAR) event_team.put() teams, event_teams, et_keys_to_delete = EventTeamUpdater.update( '{}tstupdaterfuture'.format(CUR_YEAR)) self.assertEqual( set([team.team_number for team in teams]).symmetric_difference({ 95, 178, 176, 1922, 173, 2785, 228, 177, 1099, 175, 1027, 3017, 1493, 118, 229, 2791, 155, 549, 195, 4134, 20, 2836, 869, 1665, 4055, 3555, 126, 1699, 1559, 3464, 2168, 3461, 1991, 3467, 2067, 230, 1124, 3104, 236, 237, 1511, 250, 1880, 558, 694, 571, 3634, 3525, 999, 181, 1073, 3146, 1071, 1740, 3719, 3718, 2170, 663, 4122, 3182, 839, 1784, 3654, 743 }), set()) self.assertEqual( set([et.key_name for et in event_teams]).symmetric_difference({ '{}tstupdaterfuture_frc95'.format(CUR_YEAR), '{}tstupdaterfuture_frc178'.format(CUR_YEAR), '{}tstupdaterfuture_frc176'.format(CUR_YEAR), '{}tstupdaterfuture_frc1922'.format(CUR_YEAR), '{}tstupdaterfuture_frc173'.format(CUR_YEAR), '{}tstupdaterfuture_frc2785'.format(CUR_YEAR), '{}tstupdaterfuture_frc228'.format(CUR_YEAR), '{}tstupdaterfuture_frc177'.format(CUR_YEAR), '{}tstupdaterfuture_frc1099'.format(CUR_YEAR), '{}tstupdaterfuture_frc175'.format(CUR_YEAR), '{}tstupdaterfuture_frc1027'.format(CUR_YEAR), '{}tstupdaterfuture_frc3017'.format(CUR_YEAR), '{}tstupdaterfuture_frc1493'.format(CUR_YEAR), '{}tstupdaterfuture_frc118'.format(CUR_YEAR), '{}tstupdaterfuture_frc229'.format(CUR_YEAR), '{}tstupdaterfuture_frc2791'.format(CUR_YEAR), '{}tstupdaterfuture_frc155'.format(CUR_YEAR), '{}tstupdaterfuture_frc549'.format(CUR_YEAR), '{}tstupdaterfuture_frc195'.format(CUR_YEAR), '{}tstupdaterfuture_frc4134'.format(CUR_YEAR), '{}tstupdaterfuture_frc20'.format(CUR_YEAR), '{}tstupdaterfuture_frc2836'.format(CUR_YEAR), '{}tstupdaterfuture_frc869'.format(CUR_YEAR), '{}tstupdaterfuture_frc1665'.format(CUR_YEAR), '{}tstupdaterfuture_frc4055'.format(CUR_YEAR), '{}tstupdaterfuture_frc3555'.format(CUR_YEAR), '{}tstupdaterfuture_frc126'.format(CUR_YEAR), '{}tstupdaterfuture_frc1699'.format(CUR_YEAR), '{}tstupdaterfuture_frc1559'.format(CUR_YEAR), '{}tstupdaterfuture_frc3464'.format(CUR_YEAR), '{}tstupdaterfuture_frc2168'.format(CUR_YEAR), '{}tstupdaterfuture_frc3461'.format(CUR_YEAR), '{}tstupdaterfuture_frc1991'.format(CUR_YEAR), '{}tstupdaterfuture_frc3467'.format(CUR_YEAR), '{}tstupdaterfuture_frc2067'.format(CUR_YEAR), '{}tstupdaterfuture_frc230'.format(CUR_YEAR), '{}tstupdaterfuture_frc1124'.format(CUR_YEAR), '{}tstupdaterfuture_frc3104'.format(CUR_YEAR), '{}tstupdaterfuture_frc236'.format(CUR_YEAR), '{}tstupdaterfuture_frc237'.format(CUR_YEAR), '{}tstupdaterfuture_frc1511'.format(CUR_YEAR), '{}tstupdaterfuture_frc250'.format(CUR_YEAR), '{}tstupdaterfuture_frc1880'.format(CUR_YEAR), '{}tstupdaterfuture_frc558'.format(CUR_YEAR), '{}tstupdaterfuture_frc694'.format(CUR_YEAR), '{}tstupdaterfuture_frc571'.format(CUR_YEAR), '{}tstupdaterfuture_frc3634'.format(CUR_YEAR), '{}tstupdaterfuture_frc3525'.format(CUR_YEAR), '{}tstupdaterfuture_frc999'.format(CUR_YEAR), '{}tstupdaterfuture_frc181'.format(CUR_YEAR), '{}tstupdaterfuture_frc1073'.format(CUR_YEAR), '{}tstupdaterfuture_frc3146'.format(CUR_YEAR), '{}tstupdaterfuture_frc1071'.format(CUR_YEAR), '{}tstupdaterfuture_frc1740'.format(CUR_YEAR), '{}tstupdaterfuture_frc3719'.format(CUR_YEAR), '{}tstupdaterfuture_frc3718'.format(CUR_YEAR), '{}tstupdaterfuture_frc2170'.format(CUR_YEAR), '{}tstupdaterfuture_frc663'.format(CUR_YEAR), '{}tstupdaterfuture_frc4122'.format(CUR_YEAR), '{}tstupdaterfuture_frc3182'.format(CUR_YEAR), '{}tstupdaterfuture_frc839'.format(CUR_YEAR), '{}tstupdaterfuture_frc1784'.format(CUR_YEAR), '{}tstupdaterfuture_frc3654'.format(CUR_YEAR), '{}tstupdaterfuture_frc743'.format(CUR_YEAR) }), set()) self.assertEqual(set([et_key.id() for et_key in et_keys_to_delete]), set())
class TestDatabaseCacheClearer(unittest2.TestCase): def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub(root_path=".") self.eventteam_2015casj_frc254 = EventTeam( id='2015casj_frc254', event=ndb.Key(Event, '2015casj'), team=ndb.Key(Team, 'frc254'), year=2015, ) self.eventteam_2015cama_frc604 = EventTeam( id='2015cama_frc604', event=ndb.Key(Event, '2015cama'), team=ndb.Key(Team, 'frc604'), year=2015, ) self.eventteam_2010cama_frc604 = EventTeam( id='2010cama_frc604', event=ndb.Key(Event, '2010cama'), team=ndb.Key(Team, 'frc604'), year=2010, ) self.eventteam_2015casj_frc254.put() self.eventteam_2015cama_frc604.put() self.eventteam_2010cama_frc604.put() self.districtteam_2015fim_frc254 = DistrictTeam( id='2015fim_frc254', district=DistrictType.MICHIGAN, team=ndb.Key(Team, 'frc254'), year=2015, ) self.districtteam_2015mar_frc604 = DistrictTeam( id='2015mar_frc604', district=DistrictType.MID_ATLANTIC, team=ndb.Key(Team, 'frc604'), year=2015, ) self.districtteam_2015fim_frc254.put() self.districtteam_2015mar_frc604.put() def tearDown(self): self.testbed.deactivate() def test_award_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_list': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [q.cache_key for q in get_affected_queries.award_updated(affected_refs)] self.assertEqual(len(cache_keys), 12) self.assertTrue(EventAwardsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventAwardsQuery('2015cama').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearAwardsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventAwardsQuery('frc604', '2015cama').cache_key in cache_keys) def test_event_updated(self): affected_refs = { 'key': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'year': {2014, 2015}, 'event_district_key': {'2015fim', '2014mar'} } cache_keys = [q.cache_key for q in get_affected_queries.event_updated(affected_refs)] self.assertEqual(len(cache_keys), 8) self.assertTrue(EventListQuery(2014).cache_key in cache_keys) self.assertTrue(EventListQuery(2015).cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2014mar').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) def test_match_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_keys': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [q.cache_key for q in get_affected_queries.match_updated(affected_refs)] self.assertEqual(len(cache_keys), 10) self.assertTrue(EventMatchesQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015cama').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue(TeamEventMatchesQuery('frc604', '2015cama').cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMatchesQuery('frc604', 2015).cache_key in cache_keys) def test_media_updated(self): affected_refs = { 'references': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [q.cache_key for q in get_affected_queries.media_updated(affected_refs)] self.assertEqual(len(cache_keys), 10) self.assertTrue(TeamYearMediaQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMediaQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamSocialMediaQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamYearMediaQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearMediaQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamSocialMediaQuery('frc604').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015casj').cache_key in cache_keys) def test_robot_updated(self): affected_refs = { 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [q.cache_key for q in get_affected_queries.robot_updated(affected_refs)] self.assertEqual(len(cache_keys), 2) self.assertTrue(TeamRobotsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamRobotsQuery('frc604').cache_key in cache_keys) def test_team_updated(self): affected_refs = { 'key': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [q.cache_key for q in get_affected_queries.team_updated(affected_refs)] self.assertEqual(len(cache_keys), 10) self.assertTrue(TeamListQuery(0).cache_key in cache_keys) self.assertTrue(TeamListQuery(1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2010, 1).cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2010cama').cache_key in cache_keys) def test_eventteam_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [q.cache_key for q in get_affected_queries.eventteam_updated(affected_refs)] self.assertEqual(len(cache_keys), 18) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamParticipationQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamParticipationQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue(TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsMediasQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsPreferredMediasQuery('2015casj').cache_key in cache_keys) def test_districtteam_updated(self): affected_refs = { 'district_key': {'2015fim', '2015mar'}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')} } cache_keys = [q.cache_key for q in get_affected_queries.districtteam_updated(affected_refs)] self.assertEqual(len(cache_keys), 4) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc604').cache_key in cache_keys)
class TestDatabaseCacheClearer(unittest2.TestCase): def setUp(self): self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_memcache_stub() ndb.get_context().clear_cache( ) # Prevent data from leaking between tests self.testbed.init_taskqueue_stub(root_path=".") self.eventteam_2015casj_frc254 = EventTeam( id='2015casj_frc254', event=ndb.Key(Event, '2015casj'), team=ndb.Key(Team, 'frc254'), year=2015, ) self.eventteam_2015cama_frc604 = EventTeam( id='2015cama_frc604', event=ndb.Key(Event, '2015cama'), team=ndb.Key(Team, 'frc604'), year=2015, ) self.eventteam_2010cama_frc604 = EventTeam( id='2010cama_frc604', event=ndb.Key(Event, '2010cama'), team=ndb.Key(Team, 'frc604'), year=2010, ) self.eventteam_2016necmp_frc125 = EventTeam( id='2016necmp_frc125', event=ndb.Key(Event, '2016necmp'), team=ndb.Key(Team, 'frc125'), year=2016, ) self.eventteam_2015casj_frc254.put() self.eventteam_2015cama_frc604.put() self.eventteam_2010cama_frc604.put() self.eventteam_2016necmp_frc125.put() self.districtteam_2015fim_frc254 = DistrictTeam( id='2015fim_frc254', district_key=ndb.Key(District, '2015fim'), team=ndb.Key(Team, 'frc254'), year=2015, ) self.districtteam_2015mar_frc604 = DistrictTeam( id='2015mar_frc604', district_key=ndb.Key(District, '2015mar'), team=ndb.Key(Team, 'frc604'), year=2015, ) self.districtteam_2016ne_frc604 = DistrictTeam( id='2016ne_frc604', district_key=ndb.Key(District, '2016ne'), team=ndb.Key(Team, 'frc604'), year=2016, ) self.districtteam_2015fim_frc254.put() self.districtteam_2015mar_frc604.put() self.districtteam_2016ne_frc604.put() self.district_2015ne = District( id='2015ne', year=2015, abbreviation='ne', ) self.district_2016chs = District( id='2016chs', year=2016, abbreviation='chs', ) self.district_2015ne.put() self.district_2016chs.put() self.event_2016necmp = Event( id='2016necmp', year=2016, district_key=ndb.Key(District, '2016ne'), event_short='necmp', event_type_enum=EventType.DISTRICT_CMP, ) self.event_2016necmp.put() def tearDown(self): self.testbed.deactivate() def test_award_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_list': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [ q.cache_key for q in get_affected_queries.award_updated(affected_refs) ] self.assertEqual(len(cache_keys), 12) self.assertTrue(EventAwardsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventAwardsQuery('2015cama').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamAwardsQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearAwardsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventAwardsQuery('frc604', '2015cama').cache_key in cache_keys) def test_event_updated(self): affected_refs = { 'key': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'year': {2014, 2015}, 'district_key': {ndb.Key(District, '2015fim'), ndb.Key(District, '2014mar')} } cache_keys = [ q.cache_key for q in get_affected_queries.event_updated(affected_refs) ] self.assertEqual(len(cache_keys), 10) self.assertTrue(EventQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventListQuery(2014).cache_key in cache_keys) self.assertTrue(EventListQuery(2015).cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2014mar').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) def test_event_details_updated(self): affected_refs = { 'key': { ndb.Key(EventDetails, '2015casj'), ndb.Key(EventDetails, '2015cama') }, } cache_keys = [ q.cache_key for q in get_affected_queries.event_details_updated(affected_refs) ] self.assertEqual(len(cache_keys), 2) self.assertTrue(EventDetailsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventDetailsQuery('2015cama').cache_key in cache_keys) def test_match_updated(self): affected_refs = { 'key': {ndb.Key(Match, '2015casj_qm1'), ndb.Key(Match, '2015casj_qm2')}, 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team_keys': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [ q.cache_key for q in get_affected_queries.match_updated(affected_refs) ] self.assertEqual(len(cache_keys), 12) self.assertTrue(MatchQuery('2015casj_qm1').cache_key in cache_keys) self.assertTrue(MatchQuery('2015casj_qm2').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventMatchesQuery('2015cama').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc254', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc254', '2015cama').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc604', '2015casj').cache_key in cache_keys) self.assertTrue( TeamEventMatchesQuery('frc604', '2015cama').cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMatchesQuery('frc604', 2015).cache_key in cache_keys) def test_media_updated_team(self): affected_refs = { 'references': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015}, } cache_keys = [ q.cache_key for q in get_affected_queries.media_updated(affected_refs) ] self.assertEqual(len(cache_keys), 10) self.assertTrue( TeamYearMediaQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMediaQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue(TeamSocialMediaQuery('frc254').cache_key in cache_keys) self.assertTrue( TeamYearMediaQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearMediaQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamSocialMediaQuery('frc604').cache_key in cache_keys) self.assertTrue( EventTeamsMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue( EventTeamsMediasQuery('2015casj').cache_key in cache_keys) self.assertTrue( EventTeamsPreferredMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue( EventTeamsPreferredMediasQuery('2015casj').cache_key in cache_keys) def test_media_updated_event(self): affected_refs = { 'references': {ndb.Key(Event, '2016necmp')}, 'year': {2016}, } cache_keys = [ q.cache_key for q in get_affected_queries.media_updated(affected_refs) ] self.assertEqual(len(cache_keys), 1) self.assertTrue(EventMediasQuery('2016necmp').cache_key in cache_keys) def test_robot_updated(self): affected_refs = { 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [ q.cache_key for q in get_affected_queries.robot_updated(affected_refs) ] self.assertEqual(len(cache_keys), 2) self.assertTrue(TeamRobotsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamRobotsQuery('frc604').cache_key in cache_keys) def test_team_updated(self): affected_refs = { 'key': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, } cache_keys = [ q.cache_key for q in get_affected_queries.team_updated(affected_refs) ] self.assertEqual(len(cache_keys), 13) self.assertTrue(TeamQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamQuery('frc604').cache_key in cache_keys) self.assertTrue(TeamListQuery(0).cache_key in cache_keys) self.assertTrue(TeamListQuery(1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2010, 1).cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2016ne').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2010cama').cache_key in cache_keys) def test_eventteam_updated(self): affected_refs = { 'event': {ndb.Key(Event, '2015casj'), ndb.Key(Event, '2015cama')}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')}, 'year': {2014, 2015} } cache_keys = [ q.cache_key for q in get_affected_queries.eventteam_updated(affected_refs) ] self.assertEqual(len(cache_keys), 18) self.assertTrue(TeamEventsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamParticipationQuery('frc254').cache_key in cache_keys) self.assertTrue( TeamParticipationQuery('frc604').cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc254', 2014).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc254', 2015).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc604', 2014).cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc604', 2015).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2014, 1).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 0).cache_key in cache_keys) self.assertTrue(TeamListYearQuery(2015, 1).cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015casj').cache_key in cache_keys) self.assertTrue(EventTeamsQuery('2015cama').cache_key in cache_keys) self.assertTrue( EventTeamsMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue( EventTeamsMediasQuery('2015casj').cache_key in cache_keys) self.assertTrue( EventTeamsPreferredMediasQuery('2015cama').cache_key in cache_keys) self.assertTrue( EventTeamsPreferredMediasQuery('2015casj').cache_key in cache_keys) def test_districtteam_updated(self): affected_refs = { 'district_key': {ndb.Key(District, '2015fim'), ndb.Key(District, '2015mar')}, 'team': {ndb.Key(Team, 'frc254'), ndb.Key(Team, 'frc604')} } cache_keys = [ q.cache_key for q in get_affected_queries.districtteam_updated(affected_refs) ] self.assertEqual(len(cache_keys), 4) self.assertTrue(DistrictTeamsQuery('2015fim').cache_key in cache_keys) self.assertTrue(DistrictTeamsQuery('2015mar').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc254').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc604').cache_key in cache_keys) def test_district_updated(self): affected_refs = { 'key': {ndb.Key(District, '2016ne')}, 'year': {2015, 2016}, 'abbreviation': {'ne', 'chs'} } cache_keys = [ q.cache_key for q in get_affected_queries.district_updated(affected_refs) ] self.assertEqual(len(cache_keys), 11) self.assertTrue(DistrictsInYearQuery(2015).cache_key in cache_keys) self.assertTrue(DistrictsInYearQuery(2016).cache_key in cache_keys) self.assertTrue(DistrictHistoryQuery('ne').cache_key in cache_keys) self.assertTrue(DistrictHistoryQuery('chs').cache_key in cache_keys) self.assertTrue(DistrictQuery('2016ne').cache_key in cache_keys) self.assertTrue(TeamDistrictsQuery('frc604').cache_key in cache_keys) # Necessary because APIv3 Event models include the District model self.assertTrue(EventQuery('2016necmp').cache_key in cache_keys) self.assertTrue(EventListQuery(2016).cache_key in cache_keys) self.assertTrue(DistrictEventsQuery('2016ne').cache_key in cache_keys) self.assertTrue(TeamEventsQuery('frc125').cache_key in cache_keys) self.assertTrue( TeamYearEventsQuery('frc125', 2016).cache_key in cache_keys)
class TestEventTeamsApiController(unittest2.TestCase): def setUp(self): app = webapp2.WSGIApplication([webapp2.Route(r'/<event_key:>', ApiEventTeamsController, methods=['GET'])], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() ndb.get_context().clear_cache() # Prevent data from leaking between tests self.testbed.init_taskqueue_stub(root_path=".") self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=2010, end_date=datetime(2010, 03, 27), official=True, city="Clemson", state_prov="SC", country="USA", start_date=datetime(2010, 03, 24), ) self.event.put() self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", city="Greenville", state_prov="SC", country="USA", website="www.entech.org", ) self.team.put() self.event_team = EventTeam( team=self.team.key, event=self.event.key, year=datetime.now().year ) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team): team = team[0] self.assertEqual(team["key"], self.team.key_name) self.assertEqual(team["team_number"], self.team.team_number) self.assertEqual(team["nickname"], self.team.nickname) self.assertEqual(team["location"], self.team.location) self.assertEqual(team["locality"], "Greenville") self.assertEqual(team["country_name"], "USA") self.assertEqual(team["region"], "SC") self.assertEqual(team["website"], self.team.website) def testEventTeamsApi(self): response = self.testapp.get('/2010sc', headers={"X-TBA-App-Id": "tba-tests:event-controller-test:v01"}) team_dict = json.loads(response.body) self.assertTeamJson(team_dict)
class TestApiTeamShow(unittest2.TestCase): # TODO: Add event_keys testing. -brandondean 10/21/2012 def setUp(self): app = webapp2.WSGIApplication([(r'/', ApiTeamsShow)], debug=True) self.testapp = webtest.TestApp(app) self.testbed = testbed.Testbed() self.testbed.activate() self.testbed.init_datastore_v3_stub() self.testbed.init_urlfetch_stub() self.testbed.init_memcache_stub() self.testbed.init_taskqueue_stub() self.team = Team( id="frc281", name="Michelin / Caterpillar / Greenville Technical College /\ jcpenney / Baldor / ASME / Gastroenterology Associates /\ Laserflex South & Greenville County Schools & Greenville\ Technical Charter High School", team_number=281, nickname="EnTech GreenVillians", address="Greenville, SC, USA", website="www.entech.org", ) self.team.put() self.event = Event( id="2010sc", name="Palmetto Regional", event_type_enum=EventType.REGIONAL, short_name="Palmetto", event_short="sc", year=2010, end_date=datetime(2010, 03, 27), official=True, location='Clemson, SC', start_date=datetime(2010, 03, 24), ) self.event.put() self.event_team = EventTeam(team=self.team.key, event=self.event.key, year=datetime.now().year) self.event_team.put() def tearDown(self): self.testbed.deactivate() def assertTeamJson(self, team_dict): self.assertEqual(team_dict["key"], self.team.key_name) self.assertEqual(team_dict["team_number"], self.team.team_number) self.assertEqual(team_dict["nickname"], self.team.nickname) self.assertEqual(team_dict["location"], self.team.location) self.assertEqual(team_dict["locality"], "Greenville") self.assertEqual(team_dict["country_name"], "USA") self.assertEqual(team_dict["region"], "SC") self.assertEqual(team_dict["website"], self.team.website) self.assertTrue(self.event.key.id() in team_dict["events"]) def testTeamShow(self): response = self.testapp.get( '/?teams=frc281', headers={"X-TBA-App-Id": "tba-tests:team-api-test:v01"}) team_dict = json.loads(response.body) self.assertTeamJson(team_dict[0]) def testNonexistentTeam(self): response = self.testapp.get( '/?teams=frc3141579265', headers={"X-TBA-App-Id": "tba-tests:team-api-test:v01"}, status=404) self.assertEqual(response.status_int, 404) def test_validate_tba_app_id(self): response = self.testapp.get( '/?teams=frc254', expect_errors=True) # By default get() doesn't send a user agent self.assertEqual(response.status, "400 Bad Request") self.assertTrue('Error' in json.loads(response.body).keys())