def test_completely_new_process(self): """If process with given slug does not exist, process.filter will return empty list""" self.resolwe_mock.process.filter.return_value = [] Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1)
def test_completely_new_process(self): """If process with given slug does not exist, process.filter will return empty list""" self.resolwe_mock.process.filter.return_value = [] Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) self.assertEqual(self.resolwe_mock._version_int_to_string.call_count, 0)
def test_update_existing_process(self): """If process exists, process.filter returns list with exactly one element.""" # local process version > server process version self.resolwe_mock.process.filter.return_value = [ MagicMock(version='1.0.12') ] Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) self.assertEqual( self.resolwe_mock.api.process.post.call_args[0][0]['version'], '1.0.13') self.resolwe_mock.reset_mock() # local process version = server process version self.resolwe_mock.process.filter.return_value = [ MagicMock(version='1.0.13') ] Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) self.assertEqual( self.resolwe_mock.api.process.post.call_args[0][0]['version'], '1.0.14')
def test_returns_two_processes(self): """ If process process.filter will return a list of more than one process, this is a sign of some unexpected behaviour.""" self.resolwe_mock.process.filter.return_value = [{}, {}] message = r"Unexpected behaviour at get process with slug .*" with six.assertRaisesRegex(self, ValueError, message): Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie")
def test_raises_client_error(self): # Check raises error if slumber.exceptions.HttpClientError happens self.resolwe_mock.process.filter.return_value = [] # Prepare response object & exception: response = requests.Response() response.status_code = 405 exception = slumber.exceptions.HttpClientError(response=response) self.resolwe_mock.api.process.post.side_effect = exception with self.assertRaises(slumber.exceptions.HttpClientError): Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie")
def test_raises_client_error(self): # Check raises error if slumber.exceptions.HttpClientError happens self.resolwe_mock.process.filter.return_value = [] # Prepare response object & exception: response = requests.Response() response.status_code = 405 exception = slumber.exceptions.HttpClientError(response=response) self.resolwe_mock.api.process.post.side_effect = exception with self.assertRaises(slumber.exceptions.HttpClientError): Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie")
def test_update_existing_process(self): """If process with given slug already exists, process.filter will return list with exactly one element.""" self.resolwe_mock.process.filter.return_value = [{'version': 16777228}] # local process version > server process version Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) # Comfirm version was NOT raised (_version_int_to_string NOT called) self.assertEqual(self.resolwe_mock._version_int_to_string.call_count, 0) self.resolwe_mock.reset_mock() # local process version = server process version self.resolwe_mock.process.filter.return_value = [{'version': 16777229}] Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) # Confirm version was NOT raised (_version_int_to_string NOT called) self.assertEqual(self.resolwe_mock._version_int_to_string.call_count, 1)
def test_update_existing_process(self): """If process exists, process.filter returns list with exactly one element.""" self.resolwe_mock.process.filter.return_value = [MagicMock(version=16777228)] # local process version > server process version Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) # Comfirm version was NOT raised (_version_int_to_string NOT called) self.assertEqual(self.resolwe_mock._version_int_to_string.call_count, 0) self.resolwe_mock.reset_mock() # local process version = server process version self.resolwe_mock.process.filter.return_value = [MagicMock(version=16777229)] Resolwe._register(self.resolwe_mock, self.yaml_file, "alignment-bowtie") self.assertEqual(self.resolwe_mock.api.process.post.call_count, 1) # Confirm version was NOT raised (_version_int_to_string NOT called) self.assertEqual(self.resolwe_mock._version_int_to_string.call_count, 1)
def test_raise_if_slug_not_in_yaml(self): message = r"Process source given .* but process slug not found: .*" with six.assertRaisesRegex(self, ValueError, message): Resolwe._register(self.resolwe_mock, self.yaml_file, "bad-slug")
def test_raise_if_bad_yaml_file(self): with self.assertRaises(yaml.parser.ParserError): Resolwe._register(self.resolwe_mock, self.bad_yaml_file, "alignment-bowtie")
def test_raise_if_no_yaml_file(self): message = r"File not found: .*" with six.assertRaisesRegex(self, ValueError, message): Resolwe._register(self.resolwe_mock, "/bad/path", "alignment-bowtie")
def test_raise_if_slug_not_in_yaml(self): message = r"Process source given .* but process slug not found: .*" with six.assertRaisesRegex(self, ValueError, message): Resolwe._register(self.resolwe_mock, self.yaml_file, "bad-slug")
def test_raise_if_bad_yaml_file(self): with self.assertRaises(yaml.parser.ParserError): Resolwe._register(self.resolwe_mock, self.bad_yaml_file, "alignment-bowtie")
def test_raise_if_no_yaml_file(self): message = r"File not found: .*" with six.assertRaisesRegex(self, ValueError, message): Resolwe._register(self.resolwe_mock, "/bad/path", "alignment-bowtie")