From e0fa5c58d38c2cbe39fe1f8e0fbb36591c29b661 Mon Sep 17 00:00:00 2001
From: Nicolas Dandrimont <nicolas@dandrimont.eu>
Date: Tue, 16 Jun 2020 10:24:03 +0200
Subject: [PATCH] Move lister addition in scheduler tests to a pytest fixture

This lets us keep the tests a little DRYer.
---
 swh/scheduler/tests/conftest.py       |  8 ++++++++
 swh/scheduler/tests/test_scheduler.py | 14 +++++---------
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/swh/scheduler/tests/conftest.py b/swh/scheduler/tests/conftest.py
index b3be2e46..aa1af310 100644
--- a/swh/scheduler/tests/conftest.py
+++ b/swh/scheduler/tests/conftest.py
@@ -13,6 +13,8 @@ import pkg_resources
 from swh.core.utils import numfile_sortkey as sortkey
 from swh.scheduler import get_scheduler
 from swh.scheduler.tests import SQL_DIR
+from swh.scheduler.model import Lister
+from swh.scheduler.tests.common import LISTERS
 
 
 # make sure we are not fooled by CELERY_ config environment vars
@@ -110,3 +112,9 @@ def swh_scheduler(swh_scheduler_config):
 # this alias is used to be able to easily instantiate a db-backed Scheduler
 # eg. for the RPC client/server test suite.
 swh_db_scheduler = swh_scheduler
+
+
+@pytest.fixture
+def stored_lister(swh_scheduler) -> Lister:
+    """Store a lister in the scheduler and return its information"""
+    return swh_scheduler.get_or_create_lister(**LISTERS[0])
diff --git a/swh/scheduler/tests/test_scheduler.py b/swh/scheduler/tests/test_scheduler.py
index fc3a0846..c7efff8f 100644
--- a/swh/scheduler/tests/test_scheduler.py
+++ b/swh/scheduler/tests/test_scheduler.py
@@ -630,23 +630,19 @@ class TestScheduler:
 
             assert lister == lister_get_again
 
-    def test_update_lister(self, swh_scheduler):
-        lister = swh_scheduler.get_or_create_lister(**LISTERS[0])
-
-        lister.current_state = {"updated": "now"}
+    def test_update_lister(self, swh_scheduler, stored_lister):
+        lister = attr.evolve(stored_lister, current_state={"updated": "now"})
 
         updated_lister = swh_scheduler.update_lister(lister)
 
         assert updated_lister.updated > lister.updated
         assert updated_lister == attr.evolve(lister, updated=updated_lister.updated)
 
-    def test_update_lister_stale(self, swh_scheduler):
-        lister = swh_scheduler.get_or_create_lister(**LISTERS[0])
-
-        swh_scheduler.update_lister(lister)
+    def test_update_lister_stale(self, swh_scheduler, stored_lister):
+        swh_scheduler.update_lister(stored_lister)
 
         with pytest.raises(StaleData) as exc:
-            swh_scheduler.update_lister(lister)
+            swh_scheduler.update_lister(stored_lister)
         assert "state not updated" in exc.value.args[0]
 
     def _create_task_types(self, scheduler):
-- 
GitLab