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_get_meeting_participants(app, database): pref = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) pref.put() user1 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key]) user1.put() user2 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key]) user2.put() meeting1 = Meeting(meeting_spec=database.specs[0].key, cancelled=False).put() MeetingParticipant(meeting=meeting1, user=user1.key).put() MeetingParticipant(meeting=meeting1, user=user2.key).put() with app.test_request_context('/v1/metrics/meeting_participants'): participants = json.loads(meeting_participants()) assert participants == [{ 'date': '2017-10-27T23:00:00', 'meeting': 'agx0ZXN0YmVkLXRlc3RyDQsSB01lZXRpbmcYCgw', 'meeting_title': 'Yelp Weekly', 'participant': '*****@*****.**', 'time': '04:00PM' }, { 'date': '2017-10-27T23:00:00', 'meeting': 'agx0ZXN0YmVkLXRlc3RyDQsSB01lZXRpbmcYCgw', 'meeting_title': 'Yelp Weekly', 'participant': '*****@*****.**', 'time': '04:00PM' }]
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_send_batch_meeting_confirmation_email(database): pref = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) pref.put() s3_url = 'https://s3-media2.fl.yelpcdn.com/assets/srv0/yelp_large_assets/' user_a = User(email='*****@*****.**', photo_url=s3_url + 'a315bcce34b3/assets/img/illustrations/mascots/hammy.png', first_name='Hammy', last_name='Yelp', metadata={'department': 'Engineering'}, subscription_preferences=[pref.key]) user_b = User(first_name='Darwin', last_name='Yelp', email='*****@*****.**', photo_url=s3_url + '36a31704362e/assets/img/illustrations/mascots/darwin.png', metadata={'department': 'Design'}, subscription_preferences=[pref.key]) user_c = User(first_name='Carmin', last_name='Yelp', email='*****@*****.**', photo_url=s3_url + 'd71947670be7/assets/img/illustrations/mascots/carmen.png', metadata={'department': 'Design'}, subscription_preferences=[pref.key]) user_a.put() user_b.put() user_c.put() matches = [tuple((user_a, user_b, user_c, pref))] send_batch_meeting_confirmation_email(matches, database.specs[0])
def test_get_meeting_requests(app, database): pref = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) pref.put() user = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key]) user.put() MeetingRequest(user=user.key, meeting_spec=database.specs[0].key).put() with app.test_request_context('/v1/metrics/meeting_requests'): requests = json.loads(meeting_requests()) assert requests == [{'title': 'Yelp Weekly', 'user': '******'}]
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_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_get_meeting_participants(app, database): pref = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) pref.put() user1 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key]) user1.put() user2 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key]) user2.put() meeting1 = Meeting(meeting_spec=database.specs[0].key, cancelled=False).put() MeetingParticipant(meeting=meeting1, user=user1.key).put() MeetingParticipant(meeting=meeting1, user=user2.key).put() with app.test_request_context('/v1/metrics/meeting_participants'): participants = meeting_participants().json assert len(participants) == 2 assert set(participants[0].keys()) == set( ['date', 'meeting', 'meeting_title', 'participant', 'time']) assert participants[0]['date'] == database.specs[0].datetime.isoformat( ) participant_lookup = { participant['participant']: participant for participant in participants } assert participant_lookup[user1.email] == { 'date': database.specs[0].datetime.isoformat(), 'meeting': meeting1.urlsafe(), 'meeting_title': database.specs[0].meeting_subscription.get().title, 'participant': user1.email, 'time': '04:00PM', }
def test_get_meeting_participants(app, database): pref = UserSubscriptionPreferences(subscription=database.sub.key, preference=database.prefs[0].key) pref.put() user1 = User( email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key] ) user1.put() user2 = User( email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[pref.key] ) user2.put() meeting1 = Meeting(meeting_spec=database.specs[0].key, cancelled=False).put() MeetingParticipant(meeting=meeting1, user=user1.key).put() MeetingParticipant(meeting=meeting1, user=user2.key).put() with app.test_request_context('/v1/metrics/meeting_participants'): participants = json.loads(meeting_participants()) assert len(participants) == 2 assert set(participants[0].keys()) == set(['date', 'meeting', 'meeting_title', 'participant', 'time']) assert participants[0]['date'] == database.specs[0].datetime.isoformat() assert participants[0]['time'] == database.specs[0].datetime.strftime('%I:%M%p')