def test_resume_subscription__case_insensitive(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("EXAMPLE", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("TEST", 18749) sub2.paused = True watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) list_subs = MockMethod("Listing subscriptions") func._list_subs = list_subs.call resp = func._resume_subscription(18749, "test") assert f"Resumed subscription: \"test\"." in resp assert list_subs.called assert list_subs.args[0] == 18749 assert "Listing subscriptions" in resp assert len(watcher.subscriptions) == 2 sub1, sub2 = watcher.subscriptions if sub1.query_str != "TEST": sub1, sub2 = sub2, sub1 assert sub1.query_str == "TEST" assert sub1.destination == 18749 assert sub1.paused is False assert sub2.query_str == "EXAMPLE" assert sub2.destination == 18749 assert sub2.paused is True
def test_resume_destination__not_in_other_destination(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("test", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("example", 12345) sub2.paused = True watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) list_subs = MockMethod("Listing subscriptions") func._list_subs = list_subs.call resp = func._resume_destination(18749) assert "Resumed all subscriptions." in resp assert len(watcher.subscriptions) == 2 assert list_subs.called assert list_subs.args[0] == 18749 assert "Listing subscriptions" in resp sub1, sub2 = list(watcher.subscriptions)[:2] if sub1.destination != 18749: sub2, sub1 = sub1, sub2 assert sub1.destination == 18749 assert sub1.query_str == "test" assert sub1.paused is False assert sub2.destination == 12345 assert sub2.query_str == "example" assert sub2.paused is True
def test_to_json__paused(): sub = Subscription("test query", -12322) sub.paused = True data = sub.to_json() assert data["paused"] is True
def test_resume_subscription__one_matching_in_wrong_destination(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("example", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("test", 12345) sub2.paused = True watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) resp = func._resume_subscription(18749, "test") assert resp == "There is not a subscription for \"test\" in this chat." assert len(watcher.subscriptions) == 2 for subscription in watcher.subscriptions: assert subscription.paused is True
def test_pause_destination__all_paused(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("test", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("example", 18749) sub2.paused = True watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) resp = func._pause_destination(18749) assert resp == "All subscriptions are already paused." assert len(watcher.subscriptions) == 2 for subscription in watcher.subscriptions: assert subscription.query_str in ["test", "example"] assert subscription.destination == 18749 assert subscription.paused is True
def test_matches_result__not_when_paused(): query = "test" subscription = Subscription(query, 12432) subscription.paused = True submission = SubmissionBuilder( title="test submission", description="this submission is just an example", keywords=["example", "submission", "keywords"]).build_full_submission() match = subscription.matches_result(submission, AndQuery([])) assert not match
def test_list_subs__some_paused(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) watcher.subscriptions.add(Subscription("example", 18749)) sub_paused = Subscription("test", 18749) sub_paused.paused = True watcher.subscriptions.add(sub_paused) watcher.subscriptions.add(Subscription("deer", 18749)) func = SubscriptionFunctionality(watcher) resp = func._list_subs(18749) assert "Current subscriptions in this chat:" in resp assert "- deer\n- example\n- ⏸<s>test</s>" in resp
def test_pause_destination__all_paused_except_elsewhere(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("test", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("example", 12345) sub2.paused = False watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) resp = func._pause_destination(18749) assert resp == "All subscriptions are already paused." assert len(watcher.subscriptions) == 2 sub1, sub2 = list(watcher.subscriptions)[:2] if sub1.destination != 18749: sub2, sub1 = sub1, sub2 assert sub1.destination == 18749 assert sub1.query_str == "test" assert sub1.paused is True assert sub2.destination == 12345 assert sub2.query_str == "example" assert sub2.paused is False
def test_resume_subscription__already_running(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("example", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("test", 18749) sub2.paused = False watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) resp = func._resume_subscription(18749, "test") assert resp == f"Subscription for \"test\" is already running." assert len(watcher.subscriptions) == 2 sub1, sub2 = watcher.subscriptions if sub1.query_str != "test": sub1, sub2 = sub2, sub1 assert sub1.query_str == "test" assert sub1.destination == 18749 assert sub1.paused is False assert sub2.query_str == "example" assert sub2.destination == 18749 assert sub2.paused is True
def test_resume_destination__multiple_subs(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub1 = Subscription("test", 18749) sub1.paused = True watcher.subscriptions.add(sub1) sub2 = Subscription("example", 18749) sub2.paused = True watcher.subscriptions.add(sub2) func = SubscriptionFunctionality(watcher) list_subs = MockMethod("Listing subscriptions") func._list_subs = list_subs.call resp = func._resume_destination(18749) assert "Resumed all subscriptions." in resp assert len(watcher.subscriptions) == 2 assert list_subs.called assert list_subs.args[0] == 18749 assert "Listing subscriptions" in resp for subscription in watcher.subscriptions: assert subscription.query_str in ["test", "example"] assert subscription.destination == 18749 assert subscription.paused is False
def test_resume_destination__one_sub(mock_client): api = MockExportAPI() watcher = SubscriptionWatcher(api, mock_client) sub = Subscription("test", 18749) sub.paused = True watcher.subscriptions.add(sub) func = SubscriptionFunctionality(watcher) list_subs = MockMethod("Listing subscriptions") func._list_subs = list_subs.call resp = func._resume_destination(18749) assert "Resumed all subscriptions" in resp assert list_subs.called assert list_subs.args[0] == 18749 assert "Listing subscriptions" in resp assert len(watcher.subscriptions) == 1 subscription = list(watcher.subscriptions)[0] assert subscription.query_str == "test" assert subscription.destination == 18749 assert subscription.paused is False