예제 #1
0
def test_saving_switch_saves_id():
    l = LocationAvailability(LocationName='kitchen')
    id = 'myswitch'
    l.with_switch(HardwareId=id, Color='Red', Name='Test', Style='Circle')
    lm = LocationManager()
    lm.update_input_capabilities(l)
    loc = lm.get_location('kitchen')
    assert id in loc.input_capabilities.keys()
예제 #2
0
def test_verify_switch_with_press_returns_true():
    rpi_mock.GPIO.setmode.return_value = None
    rpi_mock.GPIO.setup.return_value = None
    rpi_mock.GPIO.input.return_value = False
    pm = PersonManager()
    p = Person(Name='calvin')
    p.require_physical_confirmation = True
    pm.update_window_set(p)
    l = LocationAvailability(LocationName='kitchen')
    id = 12
    l.with_switch(HardwareId=id, Color='Red', Name='Test', Style='Circle')
    lm = LocationManager()
    lm.update_input_capabilities(l)
    lv = LocationVerification(LocationName='kitchen', PersonName='calvin')

    done, count, timeout = lv.verify_person_at_location()
    print done, count, timeout
    assert done and count == 1 and timeout < 3
예제 #3
0
def test_window_set_with_muted_window_is_not_available():
    now_dt = arrow.get('2014-01-01T09:09:00.000-05:00')
    tw = TimeWindow(ical=ical_event_night, CompareDateTime=now_dt)
    l = LocationAvailability(LocationName='kitchen')
    l.add_window(tw)
    tw_night = TimeWindow(ical=ical_event,
                          CompareDateTime=now_dt,
                          IsMuted=True)
    l.add_window(tw_night)
    assert not l.is_available(dt=now_dt)
예제 #4
0
def test_db_window_set_with_muted_window_is_not_available():
    now_dt = arrow.get('2014-01-01T09:09:00.000-05:00')
    tw = TimeWindow(ical=ical_event, CompareDateTime=now_dt)
    l = LocationAvailability(LocationName='kitchen')
    l.add_window(tw)
    tw = TimeWindow(ical=ical_event, CompareDateTime=now_dt, IsMuted=True)
    l.add_window(tw)
    lm = LocationManager()
    lm.update_window_set(l)
    l = lm.get_location('kitchen')
    assert not l.is_available(dt=now_dt)
예제 #5
0
def test_updating_existing_switch_does_not_add_new_switch():
    l = LocationAvailability(LocationName='kitchen')
    id = 'myswitch'
    l.with_switch(HardwareId=id, Color='Red', Name='Test', Style='Circle')
    assert id in l.input_capabilities.keys() and \
        l.input_capabilities[id]['style'] == 'Circle'

    l.with_switch(HardwareId=id, Color='Red', Name='Test', Style='Square')
    assert len(l.input_capabilities.keys()) == 1 and \
        l.input_capabilities[id]['style'] == 'Square'
예제 #6
0
def test_saving_window_set_saves_set():
    now_dt = arrow.get('2014-01-01T09:09:00.000-05:00')
    tw = TimeWindow(ical=ical_event, CompareDateTime=now_dt)
    la = LocationAvailability(LocationName='kitchen')
    la.add_window(tw)
    tw = TimeWindow(IsMuted=True, ical=ical_event, CompareDateTime=now_dt)
    la.add_window(tw)
    lm = LocationManager()
    lm.update_window_set(la)
    loc = lm.get_location('kitchen')
    assert loc.time_windows.count() == 2
예제 #7
0
def test_creating_with_location_name_sets_name():
    l = LocationAvailability(LocationName="test_name",
                             Priority=100,
                             ical=ical_event)
    assert l.location_name == "test_name"
예제 #8
0
def test_setting_local_button_style_sets_style():
    l = LocationAvailability(LocationName='kitchen')
    id = 'myswitch'
    l.with_switch(HardwareId=id, Color='Red', Name='Test', Style='Circle')
    assert l.input_capabilities[id]['style'] == 'Circle'
예제 #9
0
def test_setting_local_button_sets_local_button():
    l = LocationAvailability(LocationName='kitchen')
    l.with_switch(Color='Red', Name='Test', Style='Circle')
    assert len(l.input_capabilities.keys()) == 1
예제 #10
0
def test_can_add_muted_window():
    l = LocationAvailability()
    tw = TimeWindow(ical=ical_event, IsMuted=True)
    l.add_window(tw)
    assert l.time_windows.set_list[0].is_muted
예제 #11
0
def test_time_window_defaults_to_unmuted():
    l = LocationAvailability()
    tw = TimeWindow(ical=ical_event)
    l.add_window(tw)
    assert not l.time_windows.set_list[0].is_muted
예제 #12
0
def test_can_add_window():
    l = LocationAvailability()
    tw = TimeWindow(ical=ical_event)
    l.add_window(tw)
    assert len(l.time_windows.set_list) == 1
예제 #13
0
def test_time_inside_window_is_available():
    now_dt = arrow.get('2014-01-01T09:09:00.000-05:00')
    tw = TimeWindow(ical=ical_event, CompareDateTime=now_dt)
    l = LocationAvailability()
    l.add_window(tw)
    assert l.is_available(dt=now_dt)