12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import tempfile
- import os
- from gevent import monkey
- monkey.patch_all(subprocess=True)
- import pytest
- from larigira.db import EventModel
- @pytest.yield_fixture
- def db():
- fname = tempfile.mktemp(suffix=".json", prefix="larigira-test")
- yield EventModel(uri=fname)
- os.unlink(fname)
- def test_empty(db):
- assert len(db.get_all_alarms()) == 0
- def test_add_basic(db):
- assert len(db.get_all_alarms()) == 0
- alarm_id = db.add_event(
- dict(kind="frequency", interval=60 * 3, start=1),
- [dict(kind="mpd", paths=["foo.mp3"], howmany=1)],
- )
- assert len(db.get_all_alarms()) == 1
- assert db.get_alarm_by_id(alarm_id) is not None
- assert len(tuple(db.get_actions_by_alarm(db.get_alarm_by_id(alarm_id)))) == 1
- def test_add_multiple_alarms(db):
- assert len(db.get_all_alarms()) == 0
- alarm_id = db.add_event(
- dict(kind="frequency", interval=60 * 3, start=1),
- [dict(kind="mpd", paths=["foo.mp3"], howmany=1), dict(kind="foo", a=3)],
- )
- assert len(db.get_all_alarms()) == 1
- assert db.get_alarm_by_id(alarm_id) is not None
- assert len(db.get_all_actions()) == 2
- assert len(tuple(db.get_actions_by_alarm(db.get_alarm_by_id(alarm_id)))) == 2
- def test_delete_alarm(db):
- assert len(db.get_all_alarms()) == 0
- alarm_id = db.add_event(
- dict(kind="frequency", interval=60 * 3, start=1),
- [dict(kind="mpd", paths=["foo.mp3"], howmany=1)],
- )
- action_id = next(db.get_actions_by_alarm(db.get_alarm_by_id(alarm_id))).eid
- assert len(db.get_all_alarms()) == 1
- db.delete_alarm(alarm_id)
- assert len(db.get_all_alarms()) == 0 # alarm deleted
- assert db.get_action_by_id(action_id) is not None
- assert "kind" in db.get_action_by_id(action_id) # action still there
- def test_delete_alarm_nonexisting(db):
- with pytest.raises(KeyError):
- db.delete_alarm(123)
- def test_delete_action(db):
- alarm_id = db.add_event(
- dict(kind="frequency", interval=60 * 3, start=1),
- [dict(kind="mpd", paths=["foo.mp3"], howmany=1)],
- )
- alarm = db.get_alarm_by_id(alarm_id)
- assert len(tuple(db.get_actions_by_alarm(alarm))) == 1
- action = next(db.get_actions_by_alarm(alarm))
- action_id = action.eid
- db.delete_action(action_id)
- assert len(tuple(db.get_actions_by_alarm(alarm))) == 0
|