Skip to content

Commit

Permalink
Updated Code Snippets
Browse files Browse the repository at this point in the history
  • Loading branch information
CoreyMSchafer committed Aug 16, 2017
1 parent 5f9d635 commit a211970
Show file tree
Hide file tree
Showing 8 changed files with 319 additions and 11 deletions.
19 changes: 19 additions & 0 deletions Cron-Tasks/snippets.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │ 7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command_to_execute



###### Sample crontab ######

# Empty temp folder every Friday at 5pm
0 5 * * 5 rm -rf /tmp/*

# Backup images to Google Drive every night at midnight
0 0 * * * rsync -a ~/Pictures/ ~/Google\ Drive/Pictures/
21 changes: 21 additions & 0 deletions Python-Unit-Testing/calc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

def add(x, y):
"""Add Function"""
return x + y


def subtract(x, y):
"""Subtract Function"""
return x - y


def multiply(x, y):
"""Multiply Function"""
return x * y


def divide(x, y):
"""Divide Function"""
if y == 0:
raise ValueError('Can not divide by zero!')
return x / y
31 changes: 31 additions & 0 deletions Python-Unit-Testing/employee.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

import requests


class Employee:
"""A sample Employee class"""

raise_amt = 1.05

def __init__(self, first, last, pay):
self.first = first
self.last = last
self.pay = pay

@property
def email(self):
return '{}.{}@email.com'.format(self.first, self.last)

@property
def fullname(self):
return '{} {}'.format(self.first, self.last)

def apply_raise(self):
self.pay = int(self.pay * self.raise_amt)

def monthly_schedule(self, month):
response = requests.get(f'http://company.com/{self.last}/{month}')
if response.ok:
return response.text
else:
return 'Bad Response!'
115 changes: 115 additions & 0 deletions Python-Unit-Testing/snippets.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
import unittest
from employee import Employee


class TestEmployee(unittest.TestCase):

def test_email(self):
emp_1 = Employee('Corey', 'Schafer', 50000)
emp_2 = Employee('Sue', 'Smith', 60000)

self.assertEqual(emp_1.email, '[email protected]')
self.assertEqual(emp_2.email, '[email protected]')

emp_1.first = 'John'
emp_2.first = 'Jane'

self.assertEqual(emp_1.email, '[email protected]')
self.assertEqual(emp_2.email, '[email protected]')

def test_fullname(self):
emp_1 = Employee('Corey', 'Schafer', 50000)
emp_2 = Employee('Sue', 'Smith', 60000)

self.assertEqual(emp_1.fullname, 'Corey Schafer')
self.assertEqual(emp_2.fullname, 'Sue Smith')

emp_1.first = 'John'
emp_2.first = 'Jane'

self.assertEqual(emp_1.fullname, 'John Schafer')
self.assertEqual(emp_2.fullname, 'Jane Smith')

def test_apply_raise(self):
emp_1 = Employee('Corey', 'Schafer', 50000)
emp_2 = Employee('Sue', 'Smith', 60000)

emp_1.apply_raise()
emp_2.apply_raise()

self.assertEqual(emp_1.pay, 52500)
self.assertEqual(emp_2.pay, 63000)


if __name__ == '__main__':
unittest.main()

###### With Prints ######

import unittest
from employee import Employee


class TestEmployee(unittest.TestCase):

def setUp(self):
print('setUp')
self.emp_1 = Employee('Corey', 'Schafer', 50000)
self.emp_2 = Employee('Sue', 'Smith', 60000)

def tearDown(self):
print('tearDown\n')

def test_email(self):
print('test_email')
self.assertEqual(self.emp_1.email, '[email protected]')
self.assertEqual(self.emp_2.email, '[email protected]')

self.emp_1.first = 'John'
self.emp_2.first = 'Jane'

self.assertEqual(self.emp_1.email, '[email protected]')
self.assertEqual(self.emp_2.email, '[email protected]')

def test_fullname(self):
print('test_fullname')
self.assertEqual(self.emp_1.fullname, 'Corey Schafer')
self.assertEqual(self.emp_2.fullname, 'Sue Smith')

self.emp_1.first = 'John'
self.emp_2.first = 'Jane'

self.assertEqual(self.emp_1.fullname, 'John Schafer')
self.assertEqual(self.emp_2.fullname, 'Jane Smith')

def test_apply_raise(self):
print('test_apply_raise')
self.emp_1.apply_raise()
self.emp_2.apply_raise()

self.assertEqual(self.emp_1.pay, 52500)
self.assertEqual(self.emp_2.pay, 63000)


if __name__ == '__main__':
unittest.main()


###### setUpClass and tearDownClass ######

@classmethod
def setUpClass(cls):
print('setupClass')

@classmethod
def tearDownClass(cls):
print('teardownClass')


##### Mocking #####
def monthly_schedule(self, month):
response = requests.get(f'http://company.com/{self.last}/{month}')
if response.ok:
return response.text
else:
return 'Bad Response!'
33 changes: 33 additions & 0 deletions Python-Unit-Testing/test_calc.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import unittest
import calc


class TestCalc(unittest.TestCase):

def test_add(self):
self.assertEqual(calc.add(10, 5), 15)
self.assertEqual(calc.add(-1, 1), 0)
self.assertEqual(calc.add(-1, -1), -2)

def test_subtract(self):
self.assertEqual(calc.subtract(10, 5), 5)
self.assertEqual(calc.subtract(-1, 1), -2)
self.assertEqual(calc.subtract(-1, -1), 0)

def test_multiply(self):
self.assertEqual(calc.multiply(10, 5), 50)
self.assertEqual(calc.multiply(-1, 1), -1)
self.assertEqual(calc.multiply(-1, -1), 1)

def test_divide(self):
self.assertEqual(calc.divide(10, 5), 2)
self.assertEqual(calc.divide(-1, 1), -1)
self.assertEqual(calc.divide(-1, -1), 1)
self.assertEqual(calc.divide(5, 2), 2.5)

with self.assertRaises(ValueError):
calc.divide(10, 0)


if __name__ == '__main__':
unittest.main()
71 changes: 71 additions & 0 deletions Python-Unit-Testing/test_employee.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
import unittest
from unittest.mock import patch
from employee import Employee


class TestEmployee(unittest.TestCase):

@classmethod
def setUpClass(cls):
print('setupClass')

@classmethod
def tearDownClass(cls):
print('teardownClass')

def setUp(self):
print('setUp')
self.emp_1 = Employee('Corey', 'Schafer', 50000)
self.emp_2 = Employee('Sue', 'Smith', 60000)

def tearDown(self):
print('tearDown\n')

def test_email(self):
print('test_email')
self.assertEqual(self.emp_1.email, '[email protected]')
self.assertEqual(self.emp_2.email, '[email protected]')

self.emp_1.first = 'John'
self.emp_2.first = 'Jane'

self.assertEqual(self.emp_1.email, '[email protected]')
self.assertEqual(self.emp_2.email, '[email protected]')

def test_fullname(self):
print('test_fullname')
self.assertEqual(self.emp_1.fullname, 'Corey Schafer')
self.assertEqual(self.emp_2.fullname, 'Sue Smith')

self.emp_1.first = 'John'
self.emp_2.first = 'Jane'

self.assertEqual(self.emp_1.fullname, 'John Schafer')
self.assertEqual(self.emp_2.fullname, 'Jane Smith')

def test_apply_raise(self):
print('test_apply_raise')
self.emp_1.apply_raise()
self.emp_2.apply_raise()

self.assertEqual(self.emp_1.pay, 52500)
self.assertEqual(self.emp_2.pay, 63000)

def test_monthly_schedule(self):
with patch('employee.requests.get') as mocked_get:
mocked_get.return_value.ok = True
mocked_get.return_value.text = 'Success'

schedule = self.emp_1.monthly_schedule('May')
mocked_get.assert_called_with('http://company.com/Schafer/May')
self.assertEqual(schedule, 'Success')

mocked_get.return_value.ok = False

schedule = self.emp_2.monthly_schedule('June')
mocked_get.assert_called_with('http://company.com/Smith/June')
self.assertEqual(schedule, 'Bad Response!')


if __name__ == '__main__':
unittest.main()
29 changes: 29 additions & 0 deletions random_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
''' Super simple module to create basic random data for tutorials'''
import random

first_names = ['John', 'Jane', 'Corey', 'Travis', 'Dave', 'Kurt', 'Neil', 'Sam', 'Steve', 'Tom', 'James', 'Robert', 'Michael', 'Charles', 'Joe', 'Mary', 'Maggie', 'Nicole', 'Patricia', 'Linda', 'Barbara', 'Elizabeth', 'Laura', 'Jennifer', 'Maria']

last_names = ['Smith', 'Doe', 'Jenkins', 'Robinson', 'Davis', 'Stuart', 'Jefferson', 'Jacobs', 'Wright', 'Patterson', 'Wilks', 'Arnold', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor', 'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin']

street_names = ['Main', 'High', 'Pearl', 'Maple', 'Park', 'Oak', 'Pine', 'Cedar', 'Elm', 'Washington', 'Lake', 'Hill']

fake_cities = ['Metropolis', 'Eerie', "King's Landing", 'Sunnydale', 'Bedrock', 'South Park', 'Atlantis', 'Mordor', 'Olympus', 'Dawnstar', 'Balmora', 'Gotham', 'Springfield', 'Quahog', 'Smalltown', 'Epicburg', 'Pythonville', 'Faketown', 'Westworld', 'Thundera', 'Vice City', 'Blackwater', 'Oldtown', 'Valyria', 'Winterfell', 'Braavos‎', 'Lakeview']

states = ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DC', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY']

for num in range(100):
first = random.choice(first_names)
last = random.choice(last_names)

phone = f'{random.randint(100, 999)}-555-{random.randint(1000,9999)}'

street_num = random.randint(100, 999)
street = random.choice(street_names)
city = random.choice(fake_cities)
state = random.choice(states)
zip_code = random.randint(10000, 99999)
address = f'{street_num} {street} St., {city} {state} {zip_code}'

email = first.lower() + last.lower() + '@bogusemail.com'

print(f'{first} {last}\n{phone}\n{address}\n{email}\n')
11 changes: 0 additions & 11 deletions random_names.py

This file was deleted.

0 comments on commit a211970

Please sign in to comment.