1
0
Fork 0
mirror of synced 2024-06-14 00:04:45 +12:00

Add function to process click contexts for config

This commit is contained in:
Serene-Arc 2021-03-11 10:43:26 +10:00 committed by Ali Parlakci
parent 27a8b497a8
commit f8347e2d31
2 changed files with 28 additions and 0 deletions

View file

@ -4,6 +4,8 @@
from argparse import Namespace
from typing import Optional
import click
class Configuration(Namespace):
def __init__(self):
@ -26,3 +28,8 @@ class Configuration(Namespace):
self.upvoted: bool = False
self.user: Optional[str] = None
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]

View 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()])