def test_get_context_all_fields(self): page = JobListingPage(offices=[self.new_york], regions=[self.northeast], grades=[self.grade]) context = page.get_context(self.request) self.assertEqual(context['offices'], [ { 'name': 'New York', 'state_id': 'NY', }, ]) self.assertEqual(context['regions'], [ { 'name': 'Northeast region', 'states': ['NY'], 'major_cities': [ { 'name': 'Albany', 'state_id': 'NY', }, ], }, ]) self.assertEqual(context['grades'], ['53'])
def setUp(self): division = JobCategory( job_category="category" ) division.save() self.public_type = ApplicantType( applicant_type="public", description="description" ) self.public_type.save() self.status_type = ApplicantType( applicant_type="status", description="description" ) self.status_type.save() self.page = JobListingPage( title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division, live=True) helpers.publish_page(child=self.page)
def setUpTestData(cls): today = timezone.now().date() root_page = Site.objects.get(is_default_site=True).root_page division = JobCategory.objects.create(job_category='Division') defaults = { 'description': 'description', 'salary_min': 0, 'salary_max': 1000, 'division': division, } live_job = JobListingPage(title='Job', open_date=today - timedelta(days=7), close_date=today + timedelta(days=7), **defaults) root_page.add_child(instance=live_job) another_live_job = JobListingPage(title='Another job', open_date=today - timedelta(days=7), close_date=today + timedelta(days=7), **defaults) root_page.add_child(instance=another_live_job) expired_job = JobListingPage(title='Expired job', open_date=today - timedelta(days=7), close_date=today - timedelta(days=1), **defaults) root_page.add_child(instance=expired_job)
def test_get_context_with_about_us_snippet(self): about_us = ReusableText.objects.create( title='About us (For consumers)') page = JobListingPage() context = page.get_context(self.request) self.assertEqual(context['about_us'], about_us)
def test_get_context_empty_page(self): page = JobListingPage() context = page.get_context(self.request) self.assertEqual(context['offices'], []) self.assertEqual(context['regions'], []) self.assertEqual(context['grades'], []) self.assertNotIn('about_us', context)
def setUp(self): division = JobCategory( job_category="category" ) division.save() region = Region( abbreviation="TS", name="TriStateArea" ) region.save() self.public_type = ApplicantType( applicant_type="public", description="description" ) self.public_type.save() self.status_type = ApplicantType( applicant_type="status", description="description" ) self.status_type.save() self.page = JobListingPage( title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division, location=region, live=True) helpers.publish_page(child=self.page)
def setUp(self): division = JobCategory.objects.create(job_category='category') self.page = JobListingPage(title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division) register_signal_handlers()
def make_job(self, title, live=True, close_date=None): page = JobListingPage(live=live, title=title, description='Test description', open_date=date(2000, 1, 1), close_date=close_date or date(2099, 12, 1), salary_min=1, salary_max=100, division=self.division) self.root_page.add_child(instance=page) return page
def setUp(self): division = JobCategory(job_category="category") division.save() region = Region(abbreviation="TS", name="TriStateArea") region.save() self.page = JobListingPage(title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division, location=region)
def test_page_includes_extra_js(self): self.assertIn('summary.js', JobListingPage().page_js)
def test_page_includes_extra_js(self): self.assertIn('read-more.js', JobListingPage().page_js)
class UnpublishClosedJobsTestCase(TestCase): def setUp(self): division = JobCategory( job_category="category" ) division.save() region = Region( abbreviation="TS", name="TriStateArea" ) region.save() self.public_type = ApplicantType( applicant_type="public", description="description" ) self.public_type.save() self.status_type = ApplicantType( applicant_type="status", description="description" ) self.status_type.save() self.page = JobListingPage( title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division, location=region, live=True) helpers.publish_page(child=self.page) @patch('requests.get', return_value=api_not_found_job_response()) def test_job_listing_page_still_live_if_job_not_closed_on_api( self, request_mock): self.assertTrue(self.page.live) control_number = '1' create_job_link(control_number, self.public_type, self.page) unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once() args, kwargs = request_mock.call_args self.assertEqual( kwargs['params'], {'ControlNumber': control_number, 'WhoMayApply': 'all'} ) self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get', return_value=open_usajobs_page()) def test_job_listing_page_still_live_if_job_page_not_closed( self, request_mock): self.assertTrue(self.page.live) control_number = '1' job_link = create_job_link( control_number, self.status_type, self.page ) unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once_with(job_link.url) self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get', return_value=closed_usajobs_page()) def test_job_listing_page_unpublished_if_job_closed_on_usajobs( self, request_mock): self.assertTrue(self.page.live) control_number = '1' job_link = create_job_link( control_number, self.status_type, self.page ) unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once_with(job_link.url) self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('requests.get') def test_job_listing_page_unpublished_if_job_archived( self, request_mock): self.assertTrue(self.page.live) control_number = '1' create_job_link(control_number, self.public_type, self.page) request_mock.return_value = api_closed_job_response( control_number ) unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('requests.get') def test_job_listing_page_live_if_only_1_of_2_links_closed( self, request_mock): self.assertTrue(self.page.live) create_job_link('1', self.status_type, self.page) create_job_link('2', self.status_type, self.page) request_mock.side_effect = [ open_usajobs_page(), closed_usajobs_page() ] unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get', return_value=closed_usajobs_page()) def test_job_listing_page_unpublished_if_all_links_closed( self, request_mock): self.assertTrue(self.page.live) create_job_link('1', self.status_type, self.page) create_job_link('2', self.status_type, self.page) unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('scripts.unpublish_closed_jobs.logger.exception') @patch('requests.get') def test_api_check_failure(self, request_mock, logger_mock): self.assertTrue(self.page.live) job_link = create_job_link('1', self.public_type, self.page) request_mock.side_effect = requests.exceptions.ConnectionError with self.assertRaises(SystemExit): unpublish_closed_jobs.run() self.page.refresh_from_db() logger_mock.assert_called_with( 'API check for job "{}" failed'.format(job_link.url) ) self.assertTrue(self.page.live) @patch('scripts.unpublish_closed_jobs.logger.exception') @patch('requests.get') def test_page_check_failure(self, request_mock, logger_mock): self.assertTrue(self.page.live) job_link = create_job_link('1', self.status_type, self.page) request_mock.side_effect = Exception with self.assertRaises(SystemExit): unpublish_closed_jobs.run() self.page.refresh_from_db() logger_mock.assert_called_with( 'Check of USAJobs page "{}" failed'.format(job_link.url) ) self.assertTrue(self.page.live)
class UnpublishClosedJobsTestCase(TestCase): def setUp(self): division = JobCategory(job_category="category") division.save() self.public_type = ApplicantType(applicant_type="public", description="description") self.public_type.save() self.status_type = ApplicantType(applicant_type="status", description="description") self.status_type.save() self.page = JobListingPage(title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division, live=True) helpers.publish_page(child=self.page) @patch('requests.get', return_value=api_not_found_job_response()) def test_job_listing_page_still_live_if_job_not_closed_on_api( self, request_mock): self.assertTrue(self.page.live) control_number = '1' create_job_link(control_number, self.public_type, self.page) unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once() args, kwargs = request_mock.call_args self.assertEqual(kwargs['params'], { 'ControlNumber': control_number, 'WhoMayApply': 'all' }) self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get', return_value=open_usajobs_page()) def test_job_listing_page_still_live_if_job_page_not_closed( self, request_mock): self.assertTrue(self.page.live) control_number = '1' job_link = create_job_link(control_number, self.status_type, self.page) unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once_with(job_link.url) self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get', return_value=closed_usajobs_page()) def test_job_listing_page_unpublished_if_job_closed_on_usajobs( self, request_mock): self.assertTrue(self.page.live) control_number = '1' job_link = create_job_link(control_number, self.status_type, self.page) unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once_with(job_link.url) self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('requests.get') def test_job_listing_page_unpublished_if_job_archived(self, request_mock): self.assertTrue(self.page.live) control_number = '1' create_job_link(control_number, self.public_type, self.page) request_mock.return_value = api_closed_job_response(control_number) unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('requests.get') def test_job_listing_page_live_if_only_1_of_2_links_closed( self, request_mock): self.assertTrue(self.page.live) create_job_link('1', self.status_type, self.page) create_job_link('2', self.status_type, self.page) request_mock.side_effect = [open_usajobs_page(), closed_usajobs_page()] unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get', return_value=closed_usajobs_page()) def test_job_listing_page_unpublished_if_all_links_closed( self, request_mock): self.assertTrue(self.page.live) create_job_link('1', self.status_type, self.page) create_job_link('2', self.status_type, self.page) unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('scripts.unpublish_closed_jobs.logger.exception') @patch('requests.get') def test_api_check_failure(self, request_mock, logger_mock): self.assertTrue(self.page.live) job_link = create_job_link('1', self.public_type, self.page) request_mock.side_effect = requests.exceptions.ConnectionError with self.assertRaises(SystemExit): unpublish_closed_jobs.run() self.page.refresh_from_db() logger_mock.assert_called_with('API check for job "{}" failed'.format( job_link.url)) self.assertTrue(self.page.live) @patch('scripts.unpublish_closed_jobs.logger.exception') @patch('requests.get') def test_page_check_failure(self, request_mock, logger_mock): self.assertTrue(self.page.live) job_link = create_job_link('1', self.status_type, self.page) request_mock.side_effect = Exception with self.assertRaises(SystemExit): unpublish_closed_jobs.run() self.page.refresh_from_db() logger_mock.assert_called_with( 'Check of USAJobs page "{}" failed'.format(job_link.url)) self.assertTrue(self.page.live)
class UnpublishClosedJobsTestCase(TestCase): def setUp(self): division = JobCategory(job_category="category") division.save() region = Region(abbreviation="TS", name="TriStateArea") region.save() self.public_type = ApplicantType(applicant_type="public", description="description") self.public_type.save() self.status_type = ApplicantType(applicant_type="status", description="description") self.status_type.save() self.page = JobListingPage(title='title1', salary_min='1', salary_max='2', description='description', open_date=date(2099, 1, 1), close_date=date(2099, 1, 15), division=division, location=region, live=True) helpers.publish_page(child=self.page) def create_job_link(self, control_number, applicant_type): job_link = USAJobsApplicationLink( announcement_number=control_number, applicant_type=applicant_type, url='http://www.test.com/{}'.format(control_number), job_listing=self.page) job_link.save() return job_link def api_not_found_job_response(self): mock_response = Mock() mock_response.status_code = 200 text = { "SearchResult": { "SearchResultCount": 0, "SearchResultItems": [] } } mock_response.text = json.dumps(text) return mock_response def api_closed_job_response(self, control_number): mock_response = Mock() mock_response.status_code = 200 text = { "SearchResult": { "SearchResultCount": 1, "SearchResultItems": [{ "MatchedObjectId": control_number }] } } mock_response.text = json.dumps(text) return mock_response def open_usajobs_page(self): mock_response = Mock(status_code=200, text='<html></html>') return mock_response def closed_usajobs_page(self): mock_response = Mock() mock_response.status_code = 200 mock_response.text = ('<html>' '<div class="usajobs-joa-closed">' 'This job announcement has closed' '</div>' '</html>') return mock_response @patch('requests.get') def test_job_listing_page_still_live_if_job_not_closed_on_api( self, request_mock): self.assertTrue(self.page.live) control_number = '1' self.create_job_link(control_number, self.public_type) request_mock.return_value = self.api_not_found_job_response() unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once() args, kwargs = request_mock.call_args self.assertEqual(kwargs['params'], { 'ControlNumber': control_number, 'WhoMayApply': 'all' }) self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get') def test_job_listing_page_still_live_if_job_page_not_closed( self, request_mock): self.assertTrue(self.page.live) control_number = '1' job_link = self.create_job_link(control_number, self.status_type) request_mock.return_value = self.open_usajobs_page() unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once_with(job_link.url) self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get') def test_job_listing_page_unpublished_if_job_closed_on_usajobs( self, request_mock): self.assertTrue(self.page.live) control_number = '1' job_link = self.create_job_link(control_number, self.status_type) request_mock.return_value = self.closed_usajobs_page() unpublish_closed_jobs.run() self.page.refresh_from_db() request_mock.assert_called_once_with(job_link.url) self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('requests.get') def test_job_listing_page_unpublished_if_job_archived(self, request_mock): self.assertTrue(self.page.live) control_number = '1' self.create_job_link(control_number, self.public_type) request_mock.return_value = self.api_closed_job_response( control_number) unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('requests.get') def test_job_listing_page_live_if_only_1_of_2_links_closed( self, request_mock): self.assertTrue(self.page.live) self.create_job_link('1', self.public_type) self.create_job_link('2', self.status_type) request_mock.side_effect = [ self.api_closed_job_response('1'), self.open_usajobs_page() ] unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertTrue(self.page.live) self.assertFalse(self.page.expired) @patch('requests.get') def test_job_listing_page_unpublished_if_all_links_closed( self, request_mock): self.assertTrue(self.page.live) self.create_job_link('1', self.public_type) self.create_job_link('2', self.status_type) request_mock.side_effect = [ self.api_closed_job_response('1'), self.closed_usajobs_page() ] unpublish_closed_jobs.run() self.page.refresh_from_db() self.assertFalse(self.page.live) self.assertTrue(self.page.expired) @patch('scripts.unpublish_closed_jobs.logger.exception') @patch('requests.get') def test_api_check_failure(self, request_mock, logger_mock): self.assertTrue(self.page.live) job_link = self.create_job_link('1', self.public_type) request_mock.side_effect = requests.exceptions.ConnectionError with self.assertRaises(SystemExit): unpublish_closed_jobs.run() self.page.refresh_from_db() logger_mock.assert_called_with('API check for job "{}" failed'.format( job_link.url)) self.assertTrue(self.page.live) @patch('scripts.unpublish_closed_jobs.logger.exception') @patch('requests.get') def test_page_check_failure(self, request_mock, logger_mock): self.assertTrue(self.page.live) job_link = self.create_job_link('1', self.status_type) request_mock.side_effect = Exception with self.assertRaises(SystemExit): unpublish_closed_jobs.run() self.page.refresh_from_db() logger_mock.assert_called_with( 'Check of USAJobs page "{}" failed'.format(job_link.url)) self.assertTrue(self.page.live)