Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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()])
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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')
Ejemplo n.º 5
0
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]
        ]
    )
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
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
Ejemplo n.º 11
0
def test_get_specs_from_subscription(database):
    week_start, specs = get_specs_from_subscription(database.sub)
    assert len(specs) == 2
Ejemplo n.º 12
0
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'