Add function to process click contexts for config
This commit is contained in:
parent
27a8b497a8
commit
f8347e2d31
2 changed files with 28 additions and 0 deletions
|
@ -4,6 +4,8 @@
|
||||||
from argparse import Namespace
|
from argparse import Namespace
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
|
import click
|
||||||
|
|
||||||
|
|
||||||
class Configuration(Namespace):
|
class Configuration(Namespace):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
@ -26,3 +28,8 @@ class Configuration(Namespace):
|
||||||
self.upvoted: bool = False
|
self.upvoted: bool = False
|
||||||
self.user: Optional[str] = None
|
self.user: Optional[str] = None
|
||||||
self.verbose: int = 0
|
self.verbose: int = 0
|
||||||
|
|
||||||
|
def process_click_arguments(self, context: click.Context):
|
||||||
|
for arg_key in context.params.keys():
|
||||||
|
if arg_key in vars(self) and context.params[arg_key] is not None:
|
||||||
|
vars(self)[arg_key] = context.params[arg_key]
|
||||||
|
|
21
bulkredditdownloader/tests/test_configuration.py
Normal file
21
bulkredditdownloader/tests/test_configuration.py
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# coding=utf-8
|
||||||
|
|
||||||
|
from unittest.mock import MagicMock
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from bulkredditdownloader.configuration import Configuration
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize('arg_dict', (
|
||||||
|
{'directory': 'test_dir'},
|
||||||
|
{'directory': 'test_dir', 'no_dupes': True},
|
||||||
|
))
|
||||||
|
def test_process_click_context(arg_dict: dict):
|
||||||
|
test_config = Configuration()
|
||||||
|
test_context = MagicMock()
|
||||||
|
test_context.params = arg_dict
|
||||||
|
test_config.process_click_arguments(test_context)
|
||||||
|
test_config = vars(test_config)
|
||||||
|
assert all([test_config[arg] == arg_dict[arg] for arg in arg_dict.keys()])
|
Loading…
Reference in a new issue