diff --git a/todoman/ui.py b/todoman/ui.py
index 8e6c583..3364435 100644
--- a/todoman/ui.py
+++ b/todoman/ui.py
@@ -314,13 +314,15 @@ class TodoFormatter:
         )))
 
     def parse_priority(self, priority):
+        if priority is None or priority is '':
+            return None
         if priority == 'low':
             return 9
         elif priority == 'medium':
             return 5
         elif priority == 'high':
             return 4
-        elif priority == 'none' or priority is None:
+        elif priority == 'none':
             return 0
         else:
             raise ValueError('Priority has to be one of low, medium,'
@@ -392,7 +394,7 @@ class PorcelainFormatter(TodoFormatter):
 
     def parse_priority(self, priority):
         if priority is None:
-            return 0
+            return None
         try:
             if int(priority) in range(0, 10):
                 return int(priority)

diff --git a/tests/conftest.py b/tests/conftest.py
index 9cfed4a..a51e9ca 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -69,6 +69,19 @@ def now_for_tz():
     return inner
 
 
+@pytest.fixture
+def todo_factory(default_database):
+    def inner():
+        todo = model.FileTodo()
+        todo.list = list(default_database.lists())[0]
+        todo.summary = 'YARR!'
+        todo.save()
+
+        return todo
+
+    return inner
+
+
 settings.register_profile("ci", settings(
     max_examples=1000,
     verbosity=Verbosity.verbose,
diff --git a/tests/test_ui.py b/tests/test_ui.py
index 67b804f..57f8680 100644
--- a/tests/test_ui.py
+++ b/tests/test_ui.py
@@ -1,26 +1,24 @@
-from todoman.model import FileTodo
-from todoman.ui import PorcelainFormatter, TodoEditor
+import pytest
+from urwid import ExitMainLoop
 
+from todoman.ui import TodoEditor, TodoFormatter
 
-def test_todo_editor(default_database):
-    """
-    Tests TodoEditor
+DATE_FORMAT = "%d-%m-%y"
+TIME_FORMAT = "%H:%M"
 
-    While this is a pretty lame test, it's a lot better than nothing until we
-    have a proper testing framework for the interactive parts.
-
-    It basically makes sure that we don't refer to any obsolete methods, etc.
-    """
 
+def test_todo_editor_priority(default_database, todo_factory):
+    todo = todo_factory()
     lists = list(default_database.lists())
+    formatter = TodoFormatter(DATE_FORMAT, TIME_FORMAT, '')
 
-    todo = FileTodo(new=True)
-    todo.list = lists[0]
-    todo.summary = 'YARR!'
-    todo.save()
-
-    porcelain_formatter = PorcelainFormatter()
+    editor = TodoEditor(todo, lists, formatter)
+    editor._priority.edit_text = ''
 
-    editor = TodoEditor(todo, lists, porcelain_formatter)
+    with pytest.raises(ExitMainLoop):  # Look at editor._msg_text if this fails
+        editor._keypress('ctrl s')
 
-    editor._keypress('ctrl s')
+    # FileTodo exposes 0
+    assert todo.priority is 0
+    # The actual todo contains None
+    assert todo.todo.get('priority', None) is None

TodoEditor requires setting a non-empty priority when saving
It should default to `none`
tests/test_ui.py::test_todo_editor_priority