Repository: AndrewRPorter/yahoo-historical (language: python)

Issue:
Automated nightly tests to catch API errors
Preferably through circle CI, can send emails upon failure


Discussion / hints:
Thank you for this project, it is very useful for me! :)

Fix patch:
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000..caf2874
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,47 @@
+# Use the latest 2.1 version of CircleCI pipeline process engine.
+# See: https://circleci.com/docs/2.0/configuration-reference
+version: 2.1
+
+# Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.
+# See: https://circleci.com/docs/2.0/orb-intro/
+orbs:
+  # The python orb contains a set of prepackaged CircleCI configuration you can use repeatedly in your configuration files
+  # Orb commands and jobs help you with common scripting around a language/tool
+  # so you dont have to copy and paste it everywhere.
+  # See the orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python
+  python: circleci/python@1.2
+
+# Define a job to be invoked later in a workflow.
+# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
+jobs:
+  build-and-test: # This is the name of the job, feel free to change it to better match what you're trying to do!
+    # These next lines defines a Docker executors: https://circleci.com/docs/2.0/executor-types/
+    # You can specify an image from Dockerhub or use one of the convenience images from CircleCI's Developer Hub
+    # A list of available CircleCI Docker convenience images are available here: https://circleci.com/developer/images/image/cimg/python
+    # The executor is the environment in which the steps below will be executed - below will use a python 3.8 container
+    # Change the version below to your required version of python
+    docker:
+      - image: cimg/python:3.8
+    # Checkout the code as the first step. This is a dedicated CircleCI step.
+    # The python orb's install-packages step will install the dependencies from a Pipfile via Pipenv by default.
+    # Here we're making sure we use just use the system-wide pip. By default it uses the project root's requirements.txt.
+    # Then run your tests!
+    # CircleCI will report the results back to your VCS provider.
+    steps:
+      - checkout
+      - python/install-packages:
+          pkg-manager: pip
+          # app-dir: ~/project/package-directory/  # If you're requirements.txt isn't in the root directory.
+          pip-dependency-file: requirements.txt # if you have a different name for your requirements file, maybe one that combines your runtime and test requirements.
+      - run:
+          name: Run tests
+          # This assumes pytest is installed via the install-package step above
+          command: pytest
+
+# Invoke jobs via workflows
+# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
+workflows:
+  sample: # This is the name of the workflow, feel free to change it to better match your workflow.
+    # Inside the workflow, you define the jobs you want to run.
+    jobs:
+      - build-and-test
diff --git a/README.md b/README.md
index 5beddc6..a99ee0e 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
+[![yahoo-historical build status](https://circleci.com/gh/AndrewRPorter/yahoo-historical.svg?style=svg)](LINK)
+
 # yahoo-historical
 
 ## Installation
diff --git a/requirements.txt b/requirements.txt
index 69de461..dfbfc9a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
 pandas
 requests
+pytest
\ No newline at end of file


Test patch:
diff --git a/yahoo_historical/tests/__init__.py b/yahoo_historical/tests/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/yahoo_historical/tests/test_fetch.py b/yahoo_historical/tests/test_fetch.py
new file mode 100644
index 0000000..df551fe
--- /dev/null
+++ b/yahoo_historical/tests/test_fetch.py
@@ -0,0 +1,26 @@
+from yahoo_historical import Fetcher
+
+
+def test_get_historical():
+    data = Fetcher("AAPL", [2007, 1, 1], [2017, 1, 1]).get_historical()
+    assert len(data) > 0
+
+
+def test_get_dividends():
+    data = Fetcher("AAPL", [2007, 1, 1], [2017, 1, 1]).get_dividends()
+    assert len(data) > 0
+
+
+def test_get_splits():
+    data = Fetcher("AAPL", [2007, 1, 1], [2017, 1, 1]).get_splits()
+    assert len(data) > 0
+
+
+def test_get_date_price():
+    data = Fetcher("AAPL", [2007, 1, 1], [2017, 1, 1]).get_date_price()
+    assert len(data) > 0
+
+
+def test_get_date_volume():
+    data = Fetcher("AAPL", [2007, 1, 1], [2017, 1, 1]).get_date_volume()
+    assert len(data) > 0