def setUp(self): self.portal = self.layer['portal'] self.experiments = self.portal[defaults.EXPERIMENTS_FOLDER_ID] self.form = SpeciesTraitsExperimentHelper(self.portal)
class ExperimentSpeciesTraitsAddTest(unittest.TestCase): # Use functional layer for now to get a new demostorage layer for each test layer = BCCVL_FUNCTIONAL_TESTING # integration testing gives only a new transaction for each test # (rolled back at end) # layer = BCCVL_INTEGRATION_TESTING def setUp(self): self.portal = self.layer['portal'] self.experiments = self.portal[defaults.EXPERIMENTS_FOLDER_ID] self.form = SpeciesTraitsExperimentHelper(self.portal) def test_add_experiment_missing_input(self): form = self.form.get_form() # remove required field del form.request.form['form.widgets.IDublinCore.title'] form.request.form.update({ 'form.buttons.create': 'Create', }) # submit form form.update() errors = [e for e in form.widgets.errors] self.assertEqual(len(errors), 1) # check self.experiments still empty # IStatusMessage @mock.patch('org.bccvl.tasks.compute.run_script') def test_add_experiment(self, mock_run_script): form = self.form.get_form() form.request.form.update({ 'form.buttons.save': 'Create and start', }) # update form with updated request form.update() self.assertEqual(form.status, u'') self.assertEqual(len(form.widgets.errors), 0) self.assertIn('my-st-experiment', self.experiments) exp = self.experiments['my-st-experiment'] # TODO: update asserts self.assertEqual(exp.species_traits_dataset, unicode(self.form.traitsds.UID())) self.assertEqual(exp.algorithms_species, [unicode(self.form.algorithm.UID())]) # FIXME: submitting with an empty model list doesn't cause form to fail # get result container: (2 results, one for STM and another for exploration plot) self.assertEqual(len(exp.objectIds()), 2) # the 1st experiment is exploration plot result = exp.objectValues()[0] self.assertEqual(result.job_params[ 'algorithm'], 'exploration_plot') result = exp.objectValues()[1] # FIXME: test result.job_params self.assertEqual(result.job_params[ 'algorithm'], self.form.algorithm.getId()) self.assertEqual(result.job_params['traits_dataset'], unicode( self.form.traitsds.UID())) # no result files yet self.assertEqual(len(result.keys()), 0) # test job state jt = IExperimentJobTracker(exp) self.assertEqual(jt.state, u'QUEUED') # setup mock_run_script mock_run_script.side_effect = self.form.mock_run_script # after transaction commit the job should finish transaction.commit() self.assertEqual(jt.state, u'COMPLETED') # and we should have a result as well self.assertGreaterEqual(len(result.keys()), 1)
class ExperimentSpeciesTraitsAddTest(unittest.TestCase): # Use functional layer for now to get a new demostorage layer for each test layer = BCCVL_FUNCTIONAL_TESTING # integration testing gives only a new transaction for each test # (rolled back at end) # layer = BCCVL_INTEGRATION_TESTING def setUp(self): self.portal = self.layer['portal'] self.experiments = self.portal[defaults.EXPERIMENTS_FOLDER_ID] self.form = SpeciesTraitsExperimentHelper(self.portal) def test_add_experiment_missing_input(self): form = self.form.get_form() # remove required field del form.request.form['form.widgets.IDublinCore.title'] form.request.form.update({ 'form.buttons.create': 'Create', }) # submit form form.update() errors = [e for e in form.widgets.errors] self.assertEqual(len(errors), 1) # check self.experiments still empty # IStatusMessage @mock.patch('org.bccvl.tasks.compute.run_script') def test_add_experiment(self, mock_run_script): form = self.form.get_form() form.request.form.update({ 'form.buttons.save': 'Create and start', }) # update form with updated request form.update() self.assertEqual(form.status, u'') self.assertEqual(len(form.widgets.errors), 0) self.assertIn('my-st-experiment', self.experiments) exp = self.experiments['my-st-experiment'] # TODO: update asserts self.assertEqual(exp.species_traits_dataset, unicode(self.form.traitsds.UID())) self.assertEqual(exp.algorithms_species, [unicode(self.form.algorithm.UID())]) # FIXME: submitting with an empty model list doesn't cause form to fail # get result container: (2 results, one for STM and another for exploration plot) self.assertEqual(len(exp.objectIds()), 2) # the 1st experiment is exploration plot result = exp.objectValues()[0] self.assertEqual(result.job_params['algorithm'], 'exploration_plot') result = exp.objectValues()[1] # FIXME: test result.job_params self.assertEqual(result.job_params['algorithm'], self.form.algorithm.getId()) self.assertEqual(result.job_params['traits_dataset'], unicode(self.form.traitsds.UID())) # no result files yet self.assertEqual(len(result.keys()), 0) # test job state jt = IExperimentJobTracker(exp) self.assertEqual(jt.state, u'QUEUED') # setup mock_run_script mock_run_script.side_effect = self.form.mock_run_script # after transaction commit the job should finish transaction.commit() self.assertEqual(jt.state, u'COMPLETED') # and we should have a result as well self.assertGreaterEqual(len(result.keys()), 1)