def test_interest_compensation_report_queryset(self): """Get a list of `Interest`s sorted by their bankroll of `Lobbyist`s.""" YEAR = 2000 for i in range(10): LobbyistFactory.create() InterestFactory.create() InterestFactory.create() for i in Interest.objects.all(): lobbyist = Lobbyist.objects.all().order_by('?')[0] try: annum = LobbyistAnnum.objects.get(lobbyist=lobbyist, year=YEAR) except LobbyistAnnum.DoesNotExist: annum = LobbyistAnnumFactory.create(lobbyist=lobbyist, year=YEAR) CompensationFactory(annum=annum, interest=i) # denormalize interest stats i.make_stats_for_year(YEAR) # use `__exact`, django ORM attempts to evaluate __year as a date lookup for stat in InterestStats.objects.filter( year__exact=YEAR).order_by('-guess'): # print stat stat
def test_lobbyist_compensation_relation_api(self): """More tests about getting between `Lobbyist`s and `Compensation`.""" # Make a `Lobbyist` with NUM_CLIENTS clients. NUM_CLIENTS = 3 lobbyist = LobbyistFactory.create() annum = LobbyistAnnumFactory.create(lobbyist=lobbyist) for x in range(0, NUM_CLIENTS): CompensationFactory(annum=annum) try: # number of years of data we have for a lobbyist self.assertEqual(lobbyist.years.count(), 1) # number of clients a lobbyist had that year self.assertEqual(annum.clients.count(), NUM_CLIENTS) self.assertEqual(annum.compensation_set.count(), NUM_CLIENTS) # make sure we can .annotate income onto the queryset for year in lobbyist.years.all().annotate( income=Sum('compensation__amount_guess')): income = 0 for compensation in year.compensation_set.all(): income += compensation.amount_guess self.assertEqual(income, year.income) except Exception as e: self.fail("Ha ha, %s" % e)
def test_model_relations_api(self): """Test the calls used to move between the relations for the models.""" i = InterestFactory() lobbyist = LobbyistFactory.create() YEAR = 2000 try: # add an `Interest` to a `Lobbyist` annum = LobbyistAnnumFactory.create(lobbyist=lobbyist, year=YEAR) CompensationFactory.create(annum=annum, interest=i) # get all the `Interest`s for a `Lobbyist` Interest.objects.filter(compensation__annum__lobbyist=lobbyist) # get all the `Interest`s for a `Lobbyist` by year for year in lobbyist.years.all(): year.clients.all() # get all the `Interest`s for a `Lobbyist` for a year lobbyist.years.get(year=YEAR).clients.all() # get all the `Lobbyist`s for an `Interest` i.years_available.all().values('lobbyist') # get all the `Lobbyist`s for an `Interest` for a year i.years_available.filter(year=YEAR).values('lobbyist') except Exception as e: self.fail("Ha ha, %s" % e)
def test_interest_compensation_report_queryset(self): """Get a list of `Interest`s sorted by their bankroll of `Lobbyist`s.""" YEAR = 2000 for i in range(10): LobbyistFactory.create() InterestFactory.create() InterestFactory.create() for i in Interest.objects.all(): lobbyist = Lobbyist.objects.all().order_by('?')[0] try: annum = LobbyistAnnum.objects.get(lobbyist=lobbyist, year=YEAR) except LobbyistAnnum.DoesNotExist: annum = LobbyistAnnumFactory.create(lobbyist=lobbyist, year=YEAR) CompensationFactory(annum=annum, interest=i) # denormalize interest stats i.make_stats_for_year(YEAR) # use `__exact`, django ORM attempts to evaluate __year as a date lookup for stat in InterestStats.objects.filter(year__exact=YEAR).order_by( '-guess'): # print stat stat
def test_lobbyist_compensation_report_queryset(self): """Get a list of `Lobbyist`s sorted by their paycheck.""" NUM_CLIENTS = 3 YEAR = 2000 for i in range(10): lobbyist = LobbyistFactory.create() annum = LobbyistAnnumFactory.create(lobbyist=lobbyist, year=YEAR) for x in range(0, NUM_CLIENTS): CompensationFactory(annum=annum) # Here's a queryset to get the best paid `Lobbyist`s in a year qs = LobbyistAnnum.objects.filter(year=YEAR).annotate( income=Sum('compensation__amount_guess')).order_by('-income') for year in qs: # print year.lobbyist, year.income year