mirror of
https://github.com/JockeTF/fimfarchive.git
synced 2025-02-08 14:56:44 +01:00
Add selector to update task arguments
This commit is contained in:
parent
a66ff04f32
commit
c3b014d06e
2 changed files with 39 additions and 4 deletions
|
@ -30,7 +30,7 @@ from fimfarchive.exceptions import InvalidStoryError
|
|||
from fimfarchive.fetchers import Fetcher
|
||||
from fimfarchive.flavors import DataFormat, UpdateStatus
|
||||
from fimfarchive.mappers import StoryPathMapper
|
||||
from fimfarchive.selectors import UpdateSelector
|
||||
from fimfarchive.selectors import Selector, UpdateSelector
|
||||
from fimfarchive.signals import Signal, SignalSender
|
||||
from fimfarchive.stories import Story
|
||||
from fimfarchive.utils import PersistedDict
|
||||
|
@ -74,6 +74,7 @@ class UpdateTask(SignalSender):
|
|||
self,
|
||||
fimfarchive: Fetcher,
|
||||
fimfiction: Fetcher,
|
||||
selector: Selector = None,
|
||||
workdir: str = DEFAULT_WORKDIR,
|
||||
retries: int = DEFAULT_RETRIES,
|
||||
skips: int = DEFAULT_SKIPS,
|
||||
|
@ -84,14 +85,19 @@ class UpdateTask(SignalSender):
|
|||
Args:
|
||||
fimfarchive: Fetcher for the old release.
|
||||
fimfiction: Fetcher for the new release.
|
||||
selector: Selector for which story to save.
|
||||
workdir: Path for storage of state and stories.
|
||||
retries: Number of retries before giving up.
|
||||
skips: Number of skips before giving up.
|
||||
"""
|
||||
super().__init__()
|
||||
|
||||
if selector is None:
|
||||
selector = UpdateSelector()
|
||||
|
||||
self.fimfarchive = fimfarchive
|
||||
self.fimfiction = fimfiction
|
||||
self.select = selector
|
||||
self.workdir = workdir
|
||||
self.retries = retries
|
||||
self.skips = skips
|
||||
|
@ -100,8 +106,6 @@ class UpdateTask(SignalSender):
|
|||
state_path = os.path.join(self.workdir, self.state_file)
|
||||
self.state = PersistedDict(state_path, self.state_vars)
|
||||
|
||||
self.select = UpdateSelector()
|
||||
|
||||
meta_mapper = self.get_mapper('meta')
|
||||
skip_mapper = self.get_mapper('skip')
|
||||
epub_mapper = self.get_mapper('epub')
|
||||
|
|
|
@ -29,6 +29,7 @@ import pytest
|
|||
from fimfarchive.exceptions import InvalidStoryError, StorySourceError
|
||||
from fimfarchive.fetchers import Fetcher
|
||||
from fimfarchive.flavors import DataFormat, UpdateStatus
|
||||
from fimfarchive.selectors import RefetchSelector, UpdateSelector
|
||||
from fimfarchive.stories import Story
|
||||
from fimfarchive.tasks.update import (
|
||||
UpdateTask, SUCCESS_DELAY, SKIPPED_DELAY, FAILURE_DELAY,
|
||||
|
@ -97,13 +98,21 @@ class TestUpdateTask:
|
|||
return DummyFetcher()
|
||||
|
||||
@pytest.fixture
|
||||
def task(self, fimfarchive, fimfiction, tmpdir):
|
||||
def selector(self):
|
||||
"""
|
||||
Returns an `UpdateSelector` instance.
|
||||
"""
|
||||
return UpdateSelector()
|
||||
|
||||
@pytest.fixture
|
||||
def task(self, fimfarchive, fimfiction, selector, tmpdir):
|
||||
"""
|
||||
Returns an `UpdateTask` instance.
|
||||
"""
|
||||
return UpdateTask(
|
||||
fimfiction=fimfiction,
|
||||
fimfarchive=fimfarchive,
|
||||
selector=selector,
|
||||
workdir=str(tmpdir),
|
||||
retries=2,
|
||||
skips=2,
|
||||
|
@ -267,3 +276,25 @@ class TestUpdateTask:
|
|||
|
||||
with pytest.raises(ValueError):
|
||||
task.write(story)
|
||||
|
||||
|
||||
class TestRefetchingUpdateTask(TestUpdateTask):
|
||||
"""
|
||||
Tests update task with a refetch selector.
|
||||
"""
|
||||
|
||||
@pytest.fixture
|
||||
def selector(self):
|
||||
"""
|
||||
Returns a `RefetchSelector` instance.
|
||||
"""
|
||||
return RefetchSelector()
|
||||
|
||||
def test_revived_story(self, task, fimfarchive, fimfiction):
|
||||
"""
|
||||
Tests updating for a revived story.
|
||||
"""
|
||||
fimfarchive.add(key=1, date=1)
|
||||
target = fimfiction.add(key=1, date=1)
|
||||
|
||||
self.verify_fetch(task, target, UpdateStatus.UPDATED)
|
||||
|
|
Loading…
Reference in a new issue