Esempio n. 1
0
 def test_beer_not_found_yet(self, mock_api):
     beer_pks = [1234, 5678]
     with self.settings_context_manager():
         with self.assertRaises(Retry):
             tweet_about_beers(beer_pks)
     mock_api.assert_called_once_with(
         consumer_key=self.consumer_key,
         consumer_secret=self.consumer_secret,
         access_token_key=self.api_key,
         access_token_secret=self.api_secret,
     )
Esempio n. 2
0
 def test_single_beer_no_creds(self, mock_retry, mock_api):
     beer = BeerFactory()
     TapFactory(venue=self.venue, beer=beer)
     with self.settings(
         TWITTER_CONSUMER_KEY='',
         TWITTER_CONSUMER_SECRET='',
         TWITTER_ACCESS_TOKEN_KEY='',
         TWITTER_ACCESS_TOKEN_SECRET='',
     ):
         tweet_about_beers([beer.id])
     mock_retry.assert_not_called()
     mock_api.assert_not_called()
Esempio n. 3
0
 def test_single_beer_no_creds(self, mock_retry, mock_api):
     beer = BeerFactory()
     TapFactory(venue=self.venue, beer=beer)
     with self.settings(
             TWITTER_CONSUMER_KEY="",
             TWITTER_CONSUMER_SECRET="",
             TWITTER_ACCESS_TOKEN_KEY="",
             TWITTER_ACCESS_TOKEN_SECRET="",
     ):
         tweet_about_beers([beer.id])  # pylint: disable=no-value-for-parameter
     mock_retry.assert_not_called()
     mock_api.assert_not_called()
Esempio n. 4
0
 def test_single_beer_already_tweeted(self, mock_retry, mock_api):
     beer = BeerFactory(tweeted_about=True)
     TapFactory(venue=self.venue, beer=beer)
     with self.settings_context_manager():
         tweet_about_beers([beer.id])
     mock_retry.assert_not_called()
     mock_api.assert_called_once_with(
         consumer_key=self.consumer_key,
         consumer_secret=self.consumer_secret,
         access_token_key=self.api_key,
         access_token_secret=self.api_secret,
     )
     mock_api.return_value.PostUpdate.assert_not_called()
     mock_api.return_value.PostUpdates.assert_not_called()
Esempio n. 5
0
 def test_single_beer_removed_from_draft(self, mock_retry, mock_api):
     beer = BeerFactory()
     with self.settings_context_manager():
         tweet_about_beers([beer.id])  # pylint: disable=no-value-for-parameter
     mock_retry.assert_not_called()
     mock_api.assert_called_once_with(
         consumer_key=self.consumer_key,
         consumer_secret=self.consumer_secret,
         access_token_key=self.api_key,
         access_token_secret=self.api_secret,
     )
     mock_api.return_value.PostUpdate.assert_not_called()
     mock_api.return_value.PostUpdates.assert_not_called()
     beer.refresh_from_db()
     self.assertTrue(beer.tweeted_about)
Esempio n. 6
0
 def test_single_beer(self, mock_retry, mock_api):
     beer = BeerFactory()
     TapFactory(venue=self.venue, beer=beer)
     with self.settings_context_manager():
         tweet_about_beers([beer.id])  # pylint: disable=no-value-for-parameter
     mock_retry.assert_not_called()
     mock_api.assert_called_once_with(
         consumer_key=self.consumer_key,
         consumer_secret=self.consumer_secret,
         access_token_key=self.api_key,
         access_token_secret=self.api_secret,
     )
     mock_api.return_value.PostUpdate.assert_called_once_with(
         SINGLE_BEER_TEMPLATE.format(
             beer.name,
             "@" + beer.manufacturer.twitter_handle,
             beer.style.name,
             self.venue.name,
         ))
     mock_api.return_value.PostUpdates.assert_not_called()
Esempio n. 7
0
 def test_multi_beer_more_to_come(self, mock_retry, mock_api):
     mfg = ManufacturerFactory()
     beers = Beer.objects.bulk_create(
         BeerFactory.build(manufacturer=mfg, style=None)
         for dummy in range(20))
     Tap.objects.bulk_create(
         TapFactory.build(venue=self.venue, beer=beer) for beer in beers)
     with self.settings_context_manager():
         tweet_about_beers([i.id for i in beers])  # pylint: disable=no-value-for-parameter
     beers = beers[:10]
     mock_retry.assert_not_called()
     mock_api.assert_called_once_with(
         consumer_key=self.consumer_key,
         consumer_secret=self.consumer_secret,
         access_token_key=self.api_key,
         access_token_secret=self.api_secret,
     )
     mock_api.return_value.PostUpdates.assert_called_once()
     mock_api.return_value.PostUpdate.assert_not_called()
     call_args = mock_api.return_value.PostUpdates.call_args
     self.assertEqual(call_args[1], {"continuation": "…", "threaded": True})
     self.assertEqual(len(call_args[0]), 1)
     tweet = call_args[0][0]
     self.assertIn(
         MULTI_BEER_OUTER.format(len(beers), "(10 still to come!)").strip(),
         tweet,
     )
     lines = tweet.splitlines()
     self.assertEqual(len(lines), 1 + len(beers))
     for beer, line in zip(beers, lines[1:]):
         self.assertIn(
             MULTI_BEER_INNER.format(
                 beer.name,
                 "@" + beer.manufacturer.twitter_handle,
                 "unknown",
                 self.venue.name,
             ),
             line,
         )
Esempio n. 8
0
 def test_multi_beer(self, mock_retry, mock_api):
     mfg = ManufacturerFactory()
     beers = Beer.objects.bulk_create(
         BeerFactory.build(manufacturer=mfg, style=None) for dummy in range(10)
     )
     Tap.objects.bulk_create(
         TapFactory.build(venue=self.venue, beer=beer)
         for beer in beers
     )
     with self.settings_context_manager():
         tweet_about_beers([i.id for i in beers])
     mock_retry.assert_not_called()
     mock_api.assert_called_once_with(
         consumer_key=self.consumer_key,
         consumer_secret=self.consumer_secret,
         access_token_key=self.api_key,
         access_token_secret=self.api_secret,
     )
     mock_api.return_value.PostUpdates.assert_called_once()
     mock_api.return_value.PostUpdate.assert_not_called()
     call_args = mock_api.return_value.PostUpdates.call_args
     self.assertEqual(call_args[1], {'continuation': '…', 'threaded': True})
     self.assertEqual(len(call_args[0]), 1)
     tweet = call_args[0][0]
     self.assertIn(
         MULTI_BEER_OUTER.format(len(beers), '').strip(),
         tweet,
     )
     lines = tweet.splitlines()
     self.assertEqual(len(lines), 1 + len(beers))
     for beer, line in zip(beers, lines[1:]):
         self.assertIn(MULTI_BEER_INNER.format(
             beer.name,
             '@' + beer.manufacturer.twitter_handle,
             'unknown',
             self.venue.name,
         ), line)