test_db.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import pytest
  2. from twhatter.output import Database
  3. from twhatter.output.sqlalchemy import Tweet
  4. @pytest.fixture
  5. def db_url():
  6. return "sqlite://"
  7. @pytest.fixture(scope="function")
  8. def output(db_url):
  9. return Database(db_url)
  10. @pytest.mark.parametrize("fixtures_file", [
  11. 'tests/fixtures/tweets/text_only_10.yaml',
  12. 'tests/fixtures/tweets/retweet_10.yaml',
  13. 'tests/fixtures/tweets/link_10.yaml',
  14. 'tests/fixtures/tweets/reaction_9.yaml',
  15. ])
  16. def test_output_tweets(capsys, tweets_factory, output, fixtures_file):
  17. tweets = tweets_factory(fixtures_file)
  18. output.start()
  19. output.output_tweets(tweets)
  20. output.stop()
  21. session = output.session_maker()
  22. for t in tweets:
  23. assert session.query(Tweet).filter(Tweet.id == t.id).one()
  24. @pytest.mark.parametrize("fixtures_file", [
  25. 'tests/fixtures/tweets/text_only_10.yaml',
  26. 'tests/fixtures/tweets/retweet_10.yaml',
  27. 'tests/fixtures/tweets/link_10.yaml',
  28. 'tests/fixtures/tweets/reaction_9.yaml',
  29. ])
  30. def test_output_tweets_twice(capsys, tweets_factory, output, fixtures_file):
  31. tweets = tweets_factory(fixtures_file)
  32. output.start()
  33. output.output_tweets(tweets)
  34. output.stop()
  35. output.start()
  36. output.output_tweets(tweets)
  37. output.stop()
  38. session = output.session_maker()
  39. for t in tweets:
  40. assert session.query(Tweet).filter(Tweet.id == t.id).one()