def test_find_availability_lunch_error(self): """Should raise an exception if lunch times are not specified""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['lunch'] = {} with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue('Lunch times are required' in context.exception)
def test_find_availability_people_empty(self): """Should raise an exception if people is empty""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['people'] = [] with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue('Please provide a list of people' in context.exception)
def test_find_availability_hours_start_error(self): """Should raise an exception if only one office hour is specified""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['officeHours'] = {'endTime': '13:00:00'} with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue('Office hours are required' in context.exception)
def test_find_availability_people_no_meetings(self): """Should raise an exception if a person does not have a name""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['people'][0] = {'name': 'Dave'} with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue( 'Please provide a list of meeting times for each person' in context.exception)
def test_find_availability_people_no_name(self): """Should raise an exception if a person does not have a name""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['people'][0] = { 'meetingTimes': ['13:30:00', '14:30:00', '18:00:00'] } with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue( 'Please provide a name for each person' in context.exception)
def test_find_availability_hours_end_before_start(self): """Should raise an exception if office hours end time is before start time""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['officeHours'] = { 'startTime': '12:00:00', 'endTime': '08:00:00' } with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue('Office hours end time must be later than start time' in context.exception)
def test_find_availability_invalid_time(self): """Should raise an exception if any of the input times are not formatted correctly""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['officeHours'] = { 'startTime': '08:00:00', 'endTime': '17' } with self.assertRaises(Exception) as context: s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertTrue( 'Times must be formatted as hh:mm:ss' in context.exception)
def test_find_availability(self): """Should return correct output""" with open('tests/testinput.json') as f: test_input = json.load(f) with open('tests/testoutput.json') as f: test_output = json.load(f) result = s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertEquals(test_output, result)
def test_find_availability_lunch(self): """Should be able to handle different lunch times""" with open('tests/testlunchinput.json') as f: test_input = json.load(f) with open('tests/testlunchoutput.json') as f: test_output = json.load(f) result = s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertEquals(test_output, result)
def test_find_availability_long_work_hours(self): """Should be able to handle longer work hours""" with open('tests/testinput.json') as f: test_input = json.load(f) test_input['officeHours']['endTime'] = '18:00:00' with open('tests/testlongworkoutput.json') as f: test_output = json.load(f) result = s.find_availability(test_input['people'], test_input['officeHours'], test_input['lunch']) self.assertEquals(test_output, result)