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(database): preference = UserSubscriptionPreferences( subscription=database.sub.key, preference=database.prefs[0].key ) preference.put() user = User( email='*****@*****.**', subscription_preferences=[preference.key] ) user.metadata = {"department": "a"} user.put() rule = Rule(name="department", value="a").put() database.sub.rules = [rule] database.sub.put() 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.key.urlsafe() user.metadata = {"department": "b"} user.put() 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_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): database.sub.rule_logic = 'all' rule1 = Rule(name="department", value="a").put() rule2 = Rule(name="location", value="c").put() database.sub.user_rules = [rule1, rule2] database.sub.put() preference = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) preference.put() user = User(email='*****@*****.**', subscription_preferences=[preference.key]) user.metadata = {"department": "a", "location": "b"} user.put() merged_preferences = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(merged_preferences, user) assert subscriptions == [] user.metadata = {'department': 'a', 'location': 'c'} user.put() 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.key.urlsafe()
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_merge_subscriptions_with_preferences(database, fake_user): merged_preferences = merge_subscriptions_with_preferences(fake_user) assert merged_preferences[0] == { 'id': database.sub.id, 'title': 'Yelp Weekly', 'location': '8th Floor', 'office': 'USA: CA SF New Montgomery Office', 'timezone': 'America/Los_Angeles', 'size': 2, 'rule_logic': None, 'datetime': [{ 'active': False, 'date': '2017-01-20T19:00:00+00:00', 'id': database.sub.datetime[1].id }, { 'active': True, 'date': '2017-01-20T23:00:00+00:00', 'id': database.sub.datetime[0].id }] }
def preferences_api(): user = get_user(request.args.get('email')) if not user: return json.dumps([]) subscriptions = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(subscriptions, user) return json.dumps(subscriptions)
def preferences_api(): user = get_user(request.args.get('email')) if not user: resp = jsonify([]) resp.status_code = 200 return resp subscriptions = merge_subscriptions_with_preferences(user) subscriptions = filter_subscriptions_by_user_data(subscriptions, user) resp = jsonify(subscriptions) resp.status_code = 200 return resp
def test_filter_subscriptions_by_user_data_none(database): database.sub.put() preference = UserSubscriptionPreferences( subscription=database.sub.key, preference=database.prefs[0].key, ) preference.put() user = User(email='*****@*****.**', subscription_preferences=[preference.key]) user.put() 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.key.urlsafe()
def test_filter_subscriptions_by_user_data_without_rules(database): database.sub.rule_logic = 'all' database.sub.user_rules = [] database.sub.put() preference = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) preference.put() user = User(email='*****@*****.**', subscription_preferences=[preference.key]) user.metadata = {"department": "a", "location": "b"} user.put() merged_preferences = merge_subscriptions_with_preferences(user) with pytest.raises(AssertionError): filter_subscriptions_by_user_data(merged_preferences, user)
def test_filter_subscriptions_by_user_data_none(database, session): session.add(database.sub) preference = UserSubscriptionPreferences( subscription=database.sub, preference=database.prefs[0], ) session.add(preference) user = User(email='*****@*****.**', subscription_preferences=[preference]) 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_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)
def test_filter_subscriptions_by_user_data_none_when_rules_exist(database): rule = Rule(name="department", value="b").put() database.sub.user_rules = [rule] database.sub.rule_logic = 'none' database.sub.put() preference = UserSubscriptionPreferences( subscription=database.sub.key, preference=database.prefs[0].key, ) preference.put() user = User(email='*****@*****.**', subscription_preferences=[preference.key], metadata={'department': 'a'}) user.put() 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.key.urlsafe()
def test_merge_subscriptions_with_preferences(database, fake_user): merged_preferences = merge_subscriptions_with_preferences(fake_user) assert merged_preferences[0] == { 'id': database.sub.key.urlsafe(), 'title': 'Yelp Weekly', 'location': '8th Floor', 'office': 'USA: CA SF New Montgomery Office', 'timezone': 'US/Pacific', 'size': 2, 'datetime': [ { 'active': True, 'date': '2017-01-20T23:00:00+00:00', 'id': database.sub.datetime[0].urlsafe() }, { 'active': False, 'date': '2017-01-20T19:00:00+00:00', 'id': database.sub.datetime[1].urlsafe() } ] }
def test_filter_subscriptions_by_user_data_none_when_rules_exist( database, session): rule = Rule(name="department", value="b") session.add(rule) database.sub.user_rules = [rule] database.sub.rule_logic = 'none' session.add(database.sub) preference = UserSubscriptionPreferences( subscription=database.sub, preference=database.prefs[0], ) session.add(preference) user = User(email='*****@*****.**', subscription_preferences=[preference], meta_data={'department': 'a'}) 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