added basic unit tests

This commit is contained in:
Tristan Lee
2022-03-04 12:36:09 -06:00
parent c21e43ddfa
commit cd5f68e9e5
15 changed files with 457 additions and 89 deletions

0
tests/__init__.py Normal file
View File

147
tests/conftest.py Normal file
View File

@@ -0,0 +1,147 @@
import pytest
from sqlalchemy import create_engine
from cisticola.scraper import ScraperController
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
BITCHUTE_CHANNEL_KWARGS = {
'id': 0,
'name': 'bestonlinejewelrystoresusa@gmail.com (test)',
'platform_id': 'bestonlinejewelrystoresusagmailcom',
'category': 'test',
'followers': None,
'platform': 'Bitchute',
'url': 'https://www.bitchute.com/channel/bestonlinejewelrystoresusagmailcom/',
'screenname': None,
'country': 'US',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
GAB_CHANNEL_KWARGS = {
'id': 1,
'name': 'Capt. Marc Simon (test)',
'platform_id': 'marc_capt',
'category': 'test',
'followers': None,
'platform': 'Gab',
'url': 'https://gab.com/marc_capt',
'screenname': 'marc_capt',
'country': 'CA',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
GETTR_CHANNEL_KWARGS = {
'id': 2,
'name': 'LizardRepublic (test)',
'platform_id': 'lizardrepublic',
'category': 'test',
'followers': None,
'platform': 'Gettr',
'url': 'https://www.gettr.com/user/lizardrepublic',
'screenname': 'lizardrepublic',
'country': 'US',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
ODYSEE_CHANNEL_KWARGS = {
'id': 3,
'name': "Mak1n' Bacon (test)",
'platform_id': 'Mak1nBacon',
'category': 'test',
'followers': None,
'platform': 'Odysee',
'url': 'https://odysee.com/@Mak1nBacon',
'screenname': 'Mak1nBacon',
'country': 'US',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
RUMBLE_CHANNEL_KWARGS = {
'id': 4,
'name': 'we are uploading videos wow products',
'platform_id': 'c-916305',
'category': 'test',
'followers': None,
'platform': 'Rumble',
'url': 'https://rumble.com/c/c-916305',
'screenname': 'we are uploading',
'country': 'CA',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
TELEGRAM_SNSCRAPE_CHANNEL_KWARGS = {
'id': 5,
'name': 'South West Ohio Proud Boys (test)',
'platform_id': -1001276612436,
'category': 'test',
'followers': None,
'platform': 'Telegram',
'url': 'https://t.me/SouthwestOhioPB',
'screenname': 'SouthwestOhioPB',
'country': 'US',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
TWITTER_CHANNEL_KWARGS = {
'id': 5,
'name': 'Logan Williams (test)',
'platform_id': 891729132,
'category': 'test',
'followers': None,
'platform': 'Twitter',
'url': 'https://twitter.com/obtusatum',
'screenname': 'obtusatum',
'country': 'US',
'influencer': None,
'public': True,
'chat': False,
'notes': ''}
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#
@pytest.fixture(scope='package')
def controller(tmpdir_factory):
"""Initialize ScraperController and SQLite database file to be used for all
tests in the package.
"""
file = tmpdir_factory.mktemp('test_data').join('test.db')
engine = create_engine(f'sqlite:///{file}')
scraper_controller = ScraperController()
scraper_controller.connect_to_db(engine)
return scraper_controller
@pytest.fixture(scope='package')
def channel_kwargs():
"""Define keyword arguments to use for defining test channels for each
platform to be scraped.
"""
return {
'bitchute' : BITCHUTE_CHANNEL_KWARGS,
'gab' : GAB_CHANNEL_KWARGS,
'gettr' : GETTR_CHANNEL_KWARGS,
'odysee' : ODYSEE_CHANNEL_KWARGS,
'rumble' : RUMBLE_CHANNEL_KWARGS,
'telegram_snscrape' : TELEGRAM_SNSCRAPE_CHANNEL_KWARGS,
'twitter' : TWITTER_CHANNEL_KWARGS}
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#

View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import BitchuteScraper
def test_scrape_bitchute_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['bitchute'])]
controller.register_scraper(BitchuteScraper())
controller.scrape_channels(channels)

8
tests/scraper/gab.py Normal file
View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import GabScraper
def test_scrape_gab_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['gab'])]
controller.register_scraper(GabScraper())
controller.scrape_channels(channels)

8
tests/scraper/gettr.py Normal file
View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import GettrScraper
def test_scrape_gettr_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['gettr'])]
controller.register_scraper(GettrScraper())
controller.scrape_channels(channels)

8
tests/scraper/odysee.py Normal file
View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import OdyseeScraper
def test_scrape_odysee_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['odysee'])]
controller.register_scraper(OdyseeScraper())
controller.scrape_channels(channels)

8
tests/scraper/rumble.py Normal file
View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import RumbleScraper
def test_scrape_rumble_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['rumble'])]
controller.register_scraper(RumbleScraper())
controller.scrape_channels(channels)

View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import TelegramSnscrapeScraper
def test_scrape_telegram_snscrape_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['telegram_snscrape'])]
controller.register_scraper(TelegramSnscrapeScraper())
controller.scrape_channels(channels)

8
tests/scraper/twitter.py Normal file
View File

@@ -0,0 +1,8 @@
from cisticola.base import Channel
from cisticola.scraper import TwitterScraper
def test_scrape_twitter_channel(controller, channel_kwargs):
channels = [Channel(**channel_kwargs['twitter'])]
controller.register_scraper(TwitterScraper())
controller.scrape_channels(channels)