Exemplo n.º 1
0
    def test_get_job_returns_job_instance(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        new_job_id = job_manager.create_job().job_id

        job = job_manager.get_job(new_job_id)
        self.assertIsInstance(job, ZipJob)
Exemplo n.º 2
0
    def test_get_job_returns_job_instance(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        new_job_id = job_manager.create_job().job_id

        job = job_manager.get_job(new_job_id)
        self.assertIsInstance(job, ZipJob)
Exemplo n.º 3
0
    def test_remove_job_deletes_job(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        job = job_manager.create_job()

        self.assertIn(job.job_id, job_manager._zip_jobs)
        job_manager.remove_job(job.job_id)
        self.assertNotIn(job.job_id, job_manager._zip_jobs)
Exemplo n.º 4
0
    def test_remove_job_deletes_job(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        job = job_manager.create_job()

        self.assertIn(job.job_id, job_manager._zip_jobs)
        job_manager.remove_job(job.job_id)
        self.assertNotIn(job.job_id, job_manager._zip_jobs)
    def test_zip_polling_view_reports_skipped(self, browser):
        self.login(self.meeting_user, browser)

        job_manager = ZipJobManager(self.meeting.model)
        zip_job = job_manager.create_job()
        zip_job.add_doc_status(IUUID(self.document), {'status': 'skipped'})

        browser.open(
            self.meeting,
            view='poll_meeting_zip?job_id={}'.format(zip_job.job_id),
            method='POST')
        self.assertEqual(1, browser.json['skipped'])
    def test_zip_polling_view_creates_zip_when_all_finished(self, browser):
        self.login(self.meeting_user, browser)

        job_manager = ZipJobManager(self.meeting.model)
        zip_job = job_manager.create_job()
        zip_job.add_doc_status(
            IUUID(self.document),
            {'status': 'finished', 'blob': NamedBlobFile(data='foo')})

        browser.open(
            self.meeting,
            view='poll_meeting_zip?job_id={}'.format(zip_job.job_id),
            method='POST')
        self.assertEqual(1, browser.json['zipped'], browser.json)
Exemplo n.º 7
0
def require_job(request, meeting, job_id):
    job_manager = ZipJobManager(meeting)

    try:
        job = job_manager.get_job(job_id)
    except KeyError:
        msg = _(u'msg_no_export_for_job_id',
                default=u'No zip job could be found for the supplied '
                        u'job id ${job_id}.',
                mapping={'job_id': job_id})
        api.portal.show_message(
            message=msg, request=request, type='error')
        raise Redirect(meeting.get_url())

    return job
Exemplo n.º 8
0
    def test_create_job_prepares_annotations(self):
        self.login(self.meeting_user)

        annotations = IAnnotations(self.committee)

        self.assertNotIn(ZIP_JOBS_KEY, annotations)
        ZipJobManager(self.meeting.model).create_job()
        self.assertIn(ZIP_JOBS_KEY, annotations)
Exemplo n.º 9
0
    def test_create_job_cleans_old_jobs(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)

        with freeze(datetime(2017, 10, 16, 0, 0, tzinfo=pytz.utc)):
            old_job = job_manager.create_job()

        with freeze(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc)):
            new_job = job_manager.create_job()

        self.assertEqual(datetime(2017, 10, 16, 0, 0, tzinfo=pytz.utc),
                         old_job.timestamp)
        self.assertEqual(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc),
                         new_job.timestamp)
        self.assertNotIn(old_job.job_id, job_manager._zip_jobs)
        self.assertIn(new_job.job_id, job_manager._zip_jobs)
Exemplo n.º 10
0
    def test_create_job_cleans_old_jobs(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)

        with freeze(datetime(2017, 10, 16, 0, 0, tzinfo=pytz.utc)):
            old_job = job_manager.create_job()

        with freeze(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc)):
            new_job = job_manager.create_job()

        self.assertEqual(datetime(2017, 10, 16, 0, 0, tzinfo=pytz.utc),
                         old_job.timestamp)
        self.assertEqual(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc),
                         new_job.timestamp)
        self.assertNotIn(old_job.job_id, job_manager._zip_jobs)
        self.assertIn(new_job.job_id, job_manager._zip_jobs)
Exemplo n.º 11
0
    def test_create_job_creates_new_job(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        with freeze(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc)):
            job = job_manager.create_job()

        self.assertIsInstance(job, ZipJob)

        job_id = job.job_id
        self.assertIn(job_id, job_manager._zip_jobs)
        self.assertItemsEqual(['timestamp', 'documents', 'job_id'],
                              set(job._data.keys()))

        self.assertEqual(job_id, job._data['job_id'])
        self.assertEqual(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc),
                         job._data['timestamp'])

        self.assertEqual({}, dict(job._data['documents']))
Exemplo n.º 12
0
    def test_create_job_creates_new_job(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        with freeze(datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc)):
            job = job_manager.create_job()

        self.assertIsInstance(job, ZipJob)

        job_id = job.job_id
        self.assertIn(job_id, job_manager._zip_jobs)
        self.assertItemsEqual(
            ['timestamp', 'documents', 'job_id'],
            set(job._data.keys()))

        self.assertEqual(job_id, job._data['job_id'])
        self.assertEqual(
            datetime(2017, 10, 18, 1, 0, tzinfo=pytz.utc),
            job._data['timestamp'])

        self.assertEqual({}, dict(job._data['documents']))
Exemplo n.º 13
0
 def setUp(self):
     super(TestZipJob, self).setUp()
     self.login(self.meeting_user)
     self.job_manager = ZipJobManager(self.meeting.model)
     self.job = self.job_manager.create_job()
Exemplo n.º 14
0
class TestZipJob(IntegrationTestCase):

    features = ('meeting', 'bumblebee')

    def setUp(self):
        super(TestZipJob, self).setUp()
        self.login(self.meeting_user)
        self.job_manager = ZipJobManager(self.meeting.model)
        self.job = self.job_manager.create_job()

    def test_exposes_job_id(self):
        self.assertIsInstance(self.job.job_id, str)
        self.assertEqual(self.job._data['job_id'], self.job.job_id)

    def test_exposes_timestamp(self):
        self.assertIsInstance(self.job.job_id, str)
        self.assertEqual(self.job._data['timestamp'], self.job.timestamp)

    def test_add_and_get_doc_status(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        doc_status = self.job.get_doc_status(document_id)
        self.assertEqual({'status': 'converting'}, doc_status)

    def test_update_doc_status(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        self.job.update_doc_status(document_id, {'status': 'finished'})
        doc_status = self.job.get_doc_status(IUUID(self.meeting_document))
        self.assertEqual({'status': 'finished'}, doc_status)

    def test_lists_document_ids(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        self.assertEqual([document_id], self.job.list_document_ids())

    def test_is_finished_returns_true_if_zipfile_blob_present(self):
        self.assertFalse(self.job.is_finished())
        self.job.set_zip_file('ZIP')
        self.assertTrue(self.job.is_finished())

    def test_get_zip_file_returns_zip_file_blob(self):
        self.job.set_zip_file('ZIP')
        self.assertEqual('ZIP', self.job.get_zip_file())

    def test_get_doc_in_job_id_returns_combined_job_and_doc_id(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        self.assertEqual('{}:{}'.format(self.job.job_id, document_id),
                         self.job._get_doc_in_job_id(self.meeting_document))

    def test_get_progress_returns_summary_of_doc_statuses(self):
        self.job.add_doc_status(IUUID(self.meeting_document),
                                {'status': 'converting'})
        self.job.add_doc_status(IUUID(self.document), {'status': 'finished'})
        self.job.add_doc_status(IUUID(self.subdocument), {'status': 'skipped'})
        self.job.add_doc_status(IUUID(self.taskdocument), {'status': 'zipped'})
        self.assertEqual(
            {
                'converting': 1,
                'finished': 1,
                'skipped': 1,
                'is_finished': False,
                'zipped': 1
            }, self.job.get_progress())
Exemplo n.º 15
0
    def test_remove_job_raises_key_error_for_nonexistent_job(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        with self.assertRaises(KeyError):
            job_manager.remove_job('doesnt-exist')
Exemplo n.º 16
0
    def test_remove_job_raises_key_error_for_nonexistent_job(self):
        self.login(self.meeting_user)

        job_manager = ZipJobManager(self.meeting.model)
        with self.assertRaises(KeyError):
            job_manager.remove_job('doesnt-exist')
Exemplo n.º 17
0
class TestZipJob(IntegrationTestCase):

    features = ('meeting', 'bumblebee')

    def setUp(self):
        super(TestZipJob, self).setUp()
        self.login(self.meeting_user)
        self.job_manager = ZipJobManager(self.meeting.model)
        self.job = self.job_manager.create_job()

    def test_exposes_job_id(self):
        self.assertIsInstance(self.job.job_id, str)
        self.assertEqual(self.job._data['job_id'], self.job.job_id)

    def test_exposes_timestamp(self):
        self.assertIsInstance(self.job.job_id, str)
        self.assertEqual(self.job._data['timestamp'], self.job.timestamp)

    def test_add_and_get_doc_status(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        doc_status = self.job.get_doc_status(document_id)
        self.assertEqual({'status': 'converting'}, doc_status)

    def test_update_doc_status(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        self.job.update_doc_status(document_id, {'status': 'finished'})
        doc_status = self.job.get_doc_status(IUUID(self.meeting_document))
        self.assertEqual({'status': 'finished'}, doc_status)

    def test_lists_document_ids(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        self.assertEqual([document_id],
                         self.job.list_document_ids())

    def test_is_finished_returns_true_if_zipfile_blob_present(self):
        self.assertFalse(self.job.is_finished())
        self.job.set_zip_file('ZIP')
        self.assertTrue(self.job.is_finished())

    def test_get_zip_file_returns_zip_file_blob(self):
        self.job.set_zip_file('ZIP')
        self.assertEqual('ZIP', self.job.get_zip_file())

    def test_get_doc_in_job_id_returns_combined_job_and_doc_id(self):
        document_id = IUUID(self.meeting_document)
        self.job.add_doc_status(document_id, {'status': 'converting'})
        self.assertEqual(
            '{}:{}'.format(self.job.job_id, document_id),
            self.job._get_doc_in_job_id(self.meeting_document))

    def test_get_progress_returns_summary_of_doc_statuses(self):
        self.job.add_doc_status(IUUID(self.meeting_document), {'status': 'converting'})
        self.job.add_doc_status(IUUID(self.document), {'status': 'finished'})
        self.job.add_doc_status(IUUID(self.subdocument), {'status': 'skipped'})
        self.job.add_doc_status(IUUID(self.taskdocument), {'status': 'zipped'})
        self.assertEqual(
            {'converting': 1,
             'finished': 1,
             'skipped': 1,
             'is_finished': False,
             'zipped': 1},
            self.job.get_progress())
Exemplo n.º 18
0
 def setUp(self):
     super(TestZipJob, self).setUp()
     self.login(self.meeting_user)
     self.job_manager = ZipJobManager(self.meeting.model)
     self.job = self.job_manager.create_job()