Skip to content

Commit

Permalink
Add make_reader(..., _storage=...) argument (private for now).
Browse files Browse the repository at this point in the history
For #168.
  • Loading branch information
lemon24 committed Jun 17, 2020
1 parent 612afd7 commit f8802a5
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 4 deletions.
2 changes: 1 addition & 1 deletion docs/api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ All of *reader*'s functionality can be accessed through a :class:`Reader` instan

Split this into sub-sections.

.. autofunction:: make_reader
.. autofunction:: make_reader(url: str) -> reader.core.Reader

.. autoclass:: Reader(...)
:members:
Expand Down
9 changes: 6 additions & 3 deletions src/reader/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,15 @@
_PostEntryAddPluginType = Callable[['Reader', EntryData[datetime.datetime]], None]


def make_reader(url: str) -> 'Reader':
"""Return a new :class:`Reader`.
def make_reader(url: str, _storage: Optional[Storage] = None) -> 'Reader':
"""Create a new :class:`Reader`.
Args:
url (str): Path to the reader database.
Returns:
Reader: The reader.
Raises:
StorageError
Expand All @@ -75,7 +78,7 @@ def make_reader(url: str) -> 'Reader':
# See this comment for details on how it should evolve:
# https://github.com/lemon24/reader/issues/168#issuecomment-642002049

storage = Storage(url)
storage = _storage or Storage(url)

# For now, we're using a storage-bound search provider.
search = Search(storage.db)
Expand Down
8 changes: 8 additions & 0 deletions tests/test_reader_private.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
from reader import Entry
from reader import Feed
from reader import FeedNotFoundError
from reader import make_reader
from reader._storage import Storage


def test_update_stale(reader, call_update_method):
Expand Down Expand Up @@ -124,3 +126,9 @@ def second_plugin(r, e):
assert set(e.id for e in reader.get_entries()) == {'1, 1', '1, 2'}

# TODO: What is the expected behavior if a plugin raises an exception?


def test_make_reader_storage():
storage = Storage(':memory:')
reader = make_reader('', _storage=storage)
assert reader._storage is storage

0 comments on commit f8802a5

Please sign in to comment.