import pytest

from sandcrawler.workers import CdxLinePusher, BlackholeSink


def test_cdx_line_pusher():

    sink = BlackholeSink()

    # vanilla (only default filters)
    with open('tests/files/example.cdx', 'r') as cdx_file:
        pusher = CdxLinePusher(sink, cdx_file)
        counts = pusher.run()
    assert counts['total'] == 20
    assert counts['skip-parse'] == 1
    assert counts['pushed'] == 19

    # HTTP 200 and application/pdf
    with open('tests/files/example.cdx', 'r') as cdx_file:
        pusher = CdxLinePusher(sink, cdx_file,
            filter_mimetypes=['application/pdf'], filter_http_statuses=[200])
        counts = pusher.run()
    assert counts['total'] == 20
    assert counts['skip-parse'] == 1
    assert counts['skip-http_status'] == 10
    assert counts['skip-mimetype'] == 2
    assert counts['pushed'] == 7