Ejemplo n.º 1
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
    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)
Ejemplo n.º 7
0
    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()
Ejemplo n.º 8
0
    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
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 def test_page_includes_extra_js(self):
     self.assertIn('summary.js', JobListingPage().page_js)
Ejemplo n.º 11
0
 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)
Ejemplo n.º 13
0
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)