import db


def test_subscriber_ranges_have_exact_inclusive_boundaries():
    baseline = db._build_filters()[0]
    assert db._build_filters(subscriber_range="0_1000")[0] == baseline + ["v.subscriber_count IS NOT NULL", "v.subscriber_count >= 0", "v.subscriber_count <= 1000"]
    assert db._build_filters(subscriber_range="1001_5000")[0] == baseline + ["v.subscriber_count IS NOT NULL", "v.subscriber_count >= 1001", "v.subscriber_count <= 5000"]
    assert db._build_filters(subscriber_range="5001_10000")[0] == baseline + ["v.subscriber_count IS NOT NULL", "v.subscriber_count >= 5001", "v.subscriber_count <= 10000"]
    assert db._build_filters(subscriber_range="gt_10000")[0] == baseline + ["v.subscriber_count IS NOT NULL", "v.subscriber_count > 10000"]


def test_view_ranges_have_exact_inclusive_boundaries():
    baseline = db._build_filters()[0]
    assert db._build_filters(view_range="0_50")[0] == baseline + ["v.view_count IS NOT NULL", "v.view_count >= 0", "v.view_count <= 50"]
    assert db._build_filters(view_range="51_100")[0] == baseline + ["v.view_count IS NOT NULL", "v.view_count >= 51", "v.view_count <= 100"]
    assert db._build_filters(view_range="101_500")[0] == baseline + ["v.view_count IS NOT NULL", "v.view_count >= 101", "v.view_count <= 500"]
    assert db._build_filters(view_range="gt_500")[0] == baseline + ["v.view_count IS NOT NULL", "v.view_count > 500"]


def test_all_ranges_do_not_add_constraints():
    assert db._build_filters(subscriber_range="", view_range="") == db._build_filters()
