def test_filter_subscriptions_by_user_data_any(database, session): preference = UserSubscriptionPreferences(subscription=database.sub, preference=database.prefs[0]) session.add(preference) user = User(email='*****@*****.**', subscription_preferences=[preference]) user.meta_data = {"department": "a"} session.add(user) rule = Rule(name="department", value="a") session.add(rule) database.sub.user_rules = [rule] database.sub.rule_logic = 'any' session.add(database.sub) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert len(subscriptions) == 1 assert subscriptions[0]['id'] == database.sub.id user.meta_data = {"department": "b"} session.add(user) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert subscriptions == []
def test_filter_subscriptions_by_user_data_all(database, session): database.sub.rule_logic = 'all' rule1 = Rule(name="department", value="a") rule2 = Rule(name="location", value="c") database.sub.user_rules = [rule1, rule2] session.add(rule1) session.add(rule2) session.add(database.sub) preference = UserSubscriptionPreferences(subscription=database.sub, preference=database.prefs[0]) session.add(preference) user = User(email='*****@*****.**', subscription_preferences=[preference]) user.meta_data = {"department": "a", "location": "b"} session.add(user) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert subscriptions == [] user.meta_data = {'department': 'a', 'location': 'c'} session.add(user) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert len(subscriptions) == 1 assert subscriptions[0]['id'] == database.sub.id
def test_filter_subscriptions_by_user_data_list(database, session): preference = UserSubscriptionPreferences(subscription=database.sub, preference=database.prefs[0]) session.add(preference) user = User(email='*****@*****.**', subscription_preferences=[preference]) user.meta_data = {"role": ["pushmaster", "technical_lead"]} session.add(user) rule = Rule(name="role", value="pushmaster") database.sub.user_rules = [rule] database.sub.rule_logic = 'any' session.add(rule) session.add(database.sub) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert len(subscriptions) == 1 assert subscriptions[0]['id'] == database.sub.id user.meta_data = {"role": "infra"} session.add(user) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert len(subscriptions) == 0
def test_filter_subscriptions_by_user_data_without_rules(database, session): database.sub.rule_logic = 'all' database.sub.user_rules = [] session.add(database.sub) preference = UserSubscriptionPreferences(subscription=database.sub, preference=database.prefs[0]) session.add(preference) user = User(email='*****@*****.**', subscription_preferences=[preference]) user.meta_data = {"department": "a", "location": "b"} session.add(user) session.commit() merged_preferences = merge_subscriptions_with_preferences(user) with pytest.raises(AssertionError): filter_subscriptions_by_user_data(merged_preferences, user)