Merge pull request #6 from Animesh-Ghosh/add-tests-with-mock

Add Tests for `get_titles` function
This commit is contained in:
Bhupesh Varshney 2022-08-31 18:54:43 +05:30 committed by GitHub
commit c9068a9315
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 4 deletions

View File

@ -13,6 +13,13 @@
![r/developersIndia About widget](https://user-images.githubusercontent.com/34342551/185678556-e4c911c9-fb12-49da-9ca6-8f8ce2ad9b5a.png)
## Tests
To run the tests, simply run the following command in the Python virtual environment:
```bash
$ python -m unittest
```
## Resources

View File

@ -17,4 +17,4 @@
"releasing the MVP",
"finding JIRA tickets"
]
}
}

10
main.py
View File

@ -1,3 +1,7 @@
'''
This script is used for changing the text below total members & live
members count in the developersIndia subreddit
'''
import praw
import os
import random
@ -10,7 +14,7 @@ reddit_pass = os.environ["REDDIT_PASSWORD"]
def get_titles():
with open('dataset.json', 'r') as f:
data = json.load(f)
data = json.load(f)
titles = data['titles']
currentlyViewingText, subscribersText = random.sample(titles, 2)
@ -38,5 +42,5 @@ def update_titles():
widgets.refresh()
widgets.id_card.mod.update(subscribersText=titles[1])
update_titles()
if __name__ == '__main__':
update_titles()

28
test_get_titles.py Normal file
View File

@ -0,0 +1,28 @@
import unittest
from unittest.mock import patch
# patch out the environ dictionary
# used to instantiate global variables in the titles_updater script
# maybe move the call to os.environ in the script to the update_titles method?
environ_patcher = patch.dict('os.environ', {
'REDDIT_CLIENT_ID': '',
'REDDIT_CLIENT_SECRET': '',
'REDDIT_PASSWORD': ''
})
environ_patcher.start()
from main import get_titles
class TestGetTitles(unittest.TestCase):
@patch('main.json.load', return_value={'titles': ['foo', 'bar', 'baz']})
def test_get_titles_returns_a_list(self, _):
titles = get_titles()
self.assertIsInstance(titles, list)
@patch('main.json.load', return_value={'titles': ['foo', 'bar', 'baz']})
def test_get_titles_contains_titles_from_dataset_file(self, mock_json_load):
titles = get_titles()
self.assertTrue(all(map(lambda title: title in mock_json_load.return_value['titles'], titles)))
environ_patcher.stop()