def test_get_specs_from_subscription_pdt(minimal_database): preference = SubscriptionDateTime( datetime=datetime(2017, 1, 20, 13, 0)).put() subscription = MeetingSubscription(timezone='America/Los_Angeles', datetime=[preference]).put() _, specs = get_specs_from_subscription(subscription.get()) assert get_meeting_datetime(specs[0]).hour == 13
def database(minimal_database, subscription): MeetingInfo = namedtuple('MeetingInfo', ['sub', 'specs', 'prefs']) week_start, specs = get_specs_from_subscription(subscription) store_specs_from_subscription(subscription.key, week_start, specs) return MeetingInfo( subscription, specs, [subscription.datetime[0].get(), subscription.datetime[1].get()])
def test_get_specs_from_subscription_pdt(session): preference = SubscriptionDateTime(datetime=datetime(2017, 1, 20, 13, 0)) session.add(preference) subscription = MeetingSubscription(timezone='America/Los_Angeles', datetime=[preference]) session.add(subscription) session.commit() _, specs = get_specs_from_subscription(subscription) assert get_meeting_datetime(specs[0]).hour == 13
def create_dev_data(): email = FAKE_USER[0]['email'] user = User.query(User.email == email).get() if not user: _subscription() time.sleep(2) _fake_user() subscription = MeetingSubscription.query().get() week_start, specs = get_specs_from_subscription(subscription) store_specs_from_subscription(subscription.key, week_start, specs) logging.info('generated fake date for dev')
def database(session, subscription): MeetingInfo = namedtuple('MeetingInfo', ['sub', 'specs', 'prefs']) week_start, specs = get_specs_from_subscription(subscription) store_specs_from_subscription(subscription, week_start, specs) return MeetingInfo( subscription, specs, [ subscription.datetime[0], subscription.datetime[1] ] )
def test_generate_meetings_with_history(minimal_database, subscription): rule = Rule(name='department', value='').put() subscription.dept_rules = [rule] preference = subscription.datetime[0] user_pref = UserSubscriptionPreferences( preference=preference, subscription=subscription.key).put() user1 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[user_pref]) user1.put() user2 = User(email='*****@*****.**', metadata={'department': 'dept2'}, subscription_preferences=[user_pref]) user2.put() user3 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[user_pref]) user3.put() user4 = User(email='*****@*****.**', metadata={'department': 'dept2'}, subscription_preferences=[user_pref]) user4.put() user_list = [user1, user2, user3, user4] week_start, specs = get_specs_from_subscription(subscription) store_specs_from_subscription(subscription.key, week_start, specs) matches, unmatched = generate_meetings(user_list, specs[0]) assert len(matches) == 2 assert len(unmatched) == 0 meeting_history = set([ (user1.key.id(), user2.key.id()), (user3.key.id(), user4.key.id()), (user2.key.id(), user3.key.id()), (user1.key.id(), user4.key.id()), ]) matches, unmatched = generate_meetings(user_list, specs[0], meeting_history) assert len(matches) == 0 assert len(unmatched) == 4 meeting_history = set([ (user1.key.id(), user2.key.id()), (user3.key.id(), user4.key.id()), (user2.key.id(), user3.key.id()), ]) matches, unmatched = generate_meetings(user_list, specs[0], meeting_history) assert len(matches) == 1 assert len(unmatched) == 2
def test_generate_meetings_same_department(minimal_database, subscription): preference = subscription.datetime[0] user_pref = UserSubscriptionPreferences(preference=preference, subscription=subscription.key).put() user1 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[user_pref]) user1.put() user2 = User(email='*****@*****.**', metadata={'department': 'dept'}, subscription_preferences=[user_pref]) user2.put() user_list = [user1, user2] _, specs = get_specs_from_subscription(subscription) matches, unmatched = generate_meetings(user_list, specs[0]) assert len(unmatched) == 2 assert len(matches) == 0
def test_generate_meetings_with_history(session, subscription): rule = Rule(name='department', value='') session.add(rule) subscription.dept_rules = [rule] preference = subscription.datetime[0] user_pref = UserSubscriptionPreferences(preference=preference, subscription=subscription) session.add(user_pref) user1 = User(email='*****@*****.**', meta_data={'department': 'dept'}, subscription_preferences=[user_pref]) session.add(user1) user2 = User(email='*****@*****.**', meta_data={'department': 'dept2'}, subscription_preferences=[user_pref]) session.add(user2) user3 = User(email='*****@*****.**', meta_data={'department': 'dept'}, subscription_preferences=[user_pref]) session.add(user3) user4 = User(email='*****@*****.**', meta_data={'department': 'dept2'}, subscription_preferences=[user_pref]) session.add(user4) user_list = [user1, user2, user3, user4] session.commit() week_start, specs = get_specs_from_subscription(subscription) store_specs_from_subscription(subscription, week_start, specs) matches, unmatched = generate_meetings(user_list, specs[0]) assert len(matches) == 2 assert len(unmatched) == 0 meeting_history = set([ (user1.id, user2.id), (user3.id, user4.id), (user2.id, user3.id), (user1.id, user4.id), ]) matches, unmatched = generate_meetings(user_list, specs[0], meeting_history) assert len(matches) == 0 assert len(unmatched) == 4 meeting_history = set([ (user1.id, user2.id), (user3.id, user4.id), (user2.id, user3.id), ]) matches, unmatched = generate_meetings(user_list, specs[0], meeting_history) assert len(matches) == 1 assert len(unmatched) == 2
def test_generate_meetings_same_department(session, subscription): rule = Rule(name='department', value='') session.add(rule) subscription.dept_rules = [rule] preference = subscription.datetime[0] user_pref = UserSubscriptionPreferences(preference=preference, subscription=subscription) session.add(user_pref) user1 = User(email='*****@*****.**', meta_data={'department': 'dept'}, subscription_preferences=[user_pref]) session.add(user1) user2 = User(email='*****@*****.**', meta_data={'department': 'dept'}, subscription_preferences=[user_pref]) session.add(user2) user_list = [user1, user2] session.commit() _, specs = get_specs_from_subscription(subscription) matches, unmatched = generate_meetings(user_list, specs[0]) assert len(unmatched) == 2 assert len(matches) == 0
def test_store_specs_from_subscription(database): week_start, specs = get_specs_from_subscription(database.sub) store_specs_from_subscription(database.sub.key, week_start, specs) assert len(MeetingSpec.query().fetch()) == 2
def test_get_specs_from_subscription(database): week_start, specs = get_specs_from_subscription(database.sub) assert len(specs) == 2
def generate_meeting_specs(): for subscription in MeetingSubscription.query().fetch(): logging.info(subscription) week_start, specs = get_specs_from_subscription(subscription) store_specs_from_subscription(subscription.key, week_start, specs) return 'OK'