Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 20 additions & 15 deletions catinabox/catgenerator.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,25 @@ def __init__(self, e):
)


def get_name():
try:
result = requests.get(NAME_GENERATOR_API_ENDPOINT)
return result.json()[0]
except requests.exceptions.RequestException as e:
raise CouldNotGetNameError(e)


def get_birthday():
current_time = int(time.time())
birthday = random.randint(
current_time - (SECONDS_IN_YEAR * MAX_YEARS_OLD),
current_time)
birthday_datetime = time.strftime('%Y-%m-%d %H:%M:%S',
time.localtime(birthday))
return birthday_datetime


def cat_generator():
while True:
try:
result = requests.get(NAME_GENERATOR_API_ENDPOINT)
name = result.json()[0]
except requests.exceptions.RequestException as e:
raise CouldNotGetNameError(e)

current_time = int(time.time())
birthday = random.randint(
current_time - (SECONDS_IN_YEAR * MAX_YEARS_OLD),
current_time)
birthday_datetime = time.strftime('%Y-%m-%d %H:%M:%S',
time.localtime(birthday))

yield {"name": name,
"birthday": birthday_datetime}
yield {"name": get_name(),
"birthday": get_birthday()}
17 changes: 10 additions & 7 deletions tests/test_catactivities.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
# import pytest
# import time
import pytest
import time

# from catinabox import catactivities
from catinabox import catactivities


def test__cat_nap__satisfying_nap(mocker):
# mock_sleep = mocker.patch.object(time, "sleep", autospec=True)
assert True
mock_sleep = mocker.patch.object(time, "sleep", autospec=True)
catactivities.cat_nap(500)
mock_sleep.assert_called_with(500)


def test__cat_nap__not_satisfying(mocker):
# mock_sleep = mocker.patch.object(time, "sleep", autospec=True)
assert True
mock_sleep = mocker.patch.object(time, "sleep", autospec=True)
with pytest.raises(catactivities.NapWillNotBeSatisfying):
catactivities.cat_nap(5)
assert mock_sleep.call_count == 0
38 changes: 33 additions & 5 deletions tests/test_catgenerator.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,37 @@
# import pytest
import pytest
import requests

# from catinabox import catgenerator
from catinabox import catgenerator


# Write tests for the refactored `catinabox.catgenerator`
def test__get_name(mocker):
mocker.patch("requests.get").return_value.json.return_value = ["Francis"]
cat_name = catgenerator.get_name()
assert cat_name == "Francis"

def test__():
pass

def test__get_name__requests_error__raises(mocker):
mocker.patch("requests.get", side_effect=requests.exceptions.Timeout)
with pytest.raises(catgenerator.CouldNotGetNameError):
catgenerator.get_name()


def test__get_birthday(mocker):
mocker.patch("time.time", return_value=catgenerator.SECONDS_IN_YEAR * 35)
randint = mocker.patch("random.randint",
return_value=catgenerator.SECONDS_IN_YEAR * 2)
birthday = catgenerator.get_birthday()
assert birthday == "1971-12-31 21:00:00"
randint.assert_called_with(catgenerator.SECONDS_IN_YEAR * 5,
catgenerator.SECONDS_IN_YEAR * 35)


def test__cat_generator(mocker):
mocker.patch.object(catgenerator, "get_name", return_value="Moe")
mocker.patch.object(catgenerator, "get_birthday", return_value="birthday")
cat_generator = catgenerator.cat_generator()

assert next(cat_generator) == {"name": "Moe",
"birthday": "birthday"}
assert next(cat_generator) == {"name": "Moe",
"birthday": "birthday"}
29 changes: 26 additions & 3 deletions tests/test_catmath.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,42 @@
from catinabox import catmath
import pytest


@pytest.mark.parametrize("age, expected", [
(10, 50),
(0.5, 2.5),
(0, 0)
])
def test_cat_to_hooman(age, expected):
assert catmath.cat_years_to_hooman_years(age) == expected

"""
def test__cat_years_to_hooman_years__middle_age__succeeds():
assert True
assert catmath.cat_years_to_hooman_years(10) == 50


def test__cat_years_to_hooman_years__less_than_one_year__succeeds():
assert True
assert catmath.cat_years_to_hooman_years(0.5) == 2.5


def test__cat_years_to_hooman_years__0__returns_0():
assert True
assert catmath.cat_years_to_hooman_years(0) == 0
"""


# BONUS MATERIAL FOR STEP 2

def test__is_cat_leap_year__succeeds():
assert catmath.is_cat_leap_year(2016) is True


def test__is_cat_leap_year__not_divisible_by_4__isnt_leap_year():
assert catmath.is_cat_leap_year(1757) is False


def test__is_cat_leap_year__divisible_by_100__isnt_leap_year():
assert catmath.is_cat_leap_year(1900) is False


def test__is_cat_leap_year__centurial_leap_year__is_leap_year():
assert catmath.is_cat_leap_year(2000) is True
42 changes: 23 additions & 19 deletions tests/test_cattery.py
Original file line number Diff line number Diff line change
@@ -1,39 +1,43 @@
import pytest

from catinabox import cattery
from catinabox import cattery, mccattery


@pytest.fixture(params=[
cattery.Cattery,
mccattery.McCattery
])
def cattery_client(request):
return request.param()


###########################################################################
# add_cats
###########################################################################

def test__add_cats__succeeds():
c = cattery.Cattery()
c.add_cats(["Fluffy", "Snookums"])
assert c.cats == ["Fluffy", "Snookums"]
assert c.num_cats == 2
def test__add_cats__succeeds(cattery_client):
cattery_client.add_cats(["Fluffy", "Snookums"])
assert cattery_client.cats == ["Fluffy", "Snookums"]
assert cattery_client.num_cats == 2


###########################################################################
# remove_cat
###########################################################################

def test__remove_cat__succeeds():
c = cattery.Cattery()
c.add_cats(["Fluffy", "Junior"])
c.remove_cat("Fluffy")
assert c.cats == ["Junior"]
assert c.num_cats == 1
def test__remove_cat__succeeds(cattery_client):
cattery_client.add_cats(["Fluffy", "Junior"])
cattery_client.remove_cat("Fluffy")
assert cattery_client.cats == ["Junior"]
assert cattery_client.num_cats == 1


def test__remove_cat__no_cats__fails():
c = cattery.Cattery()
def test__remove_cat__no_cats__fails(cattery_client):
with pytest.raises(cattery.CatNotFound):
c.remove_cat("Fluffles")
cattery_client.remove_cat("Fluffles")


def test__remove_cat__cat_not_in_cattery__fails():
c = cattery.Cattery()
c.add_cats(["Fluffy"])
def test__remove_cat__cat_not_in_cattery__fails(cattery_client):
cattery_client.add_cats(["Fluffy"])
with pytest.raises(cattery.CatNotFound):
c.remove_cat("Snookums")
cattery_client.remove_cat("Snookums")
38 changes: 32 additions & 6 deletions tests/test_safecatmath.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,17 @@
# import pytest
import pytest

from catinabox import safecatmath


@pytest.mark.parametrize("age, expected", [
(7, 35),
(0.1, 0.5),
(0, 0)
])
def test__cat_years_to_hooman_years(age, expected):
assert safecatmath.cat_years_to_hooman_years(age) == expected

"""
def test__cat_years_to_hooman_years__middle_age__succeeds():
hooman_age = safecatmath.cat_years_to_hooman_years(7)
assert hooman_age == 35
Expand All @@ -16,20 +25,37 @@ def test__cat_years_to_hooman_years__less_than_one_year__succeeds():
def test__cat_years_to_hooman_years__0__returns_0():
hooman_age = safecatmath.cat_years_to_hooman_years(0)
assert hooman_age == 0
"""


@pytest.mark.parametrize("age", [
-5,
2100,
"two",
float('nan')
])
def test__cat_years_to_hooman_years__invalid_input__raises(age):
with pytest.raises(safecatmath.InvalidAge):
safecatmath.cat_years_to_hooman_years(age)

"""
def test__cat_years_to_hooman_years__less_0__raises():
assert True
with pytest.raises(safecatmath.InvalidAge):
safecatmath.cat_years_to_hooman_years(-5)


def test__cat_years_to_hooman_years__older_than_1000__raises():
assert True
with pytest.raises(safecatmath.InvalidAge):
safecatmath.cat_years_to_hooman_years(2100)


def test__cat_years_to_hooman_years__string__raises():
assert True
with pytest.raises(safecatmath.InvalidAge):
safecatmath.cat_years_to_hooman_years('two')


def test__cat_years_to_hooman_years__nan__raises():
# hooman_age = float('nan')
assert True
hooman_age = float('nan')
with pytest.raises(safecatmath.InvalidAge):
safecatmath.cat_years_to_hooman_years(hooman_age)
"""