def test_dry_run_doesnt_set_tags(self): self.mock_parse_filename.return_value = {'artist': 'ANY_ARTIST'} args = {'--dry': True, '--import': None, '--pattern': 'ANY_PATTERN'} cli.tag(['ANY_FILENAME.mp3'], args) self.mock_set_tags.assert_not_called()
def test_no_pattern_no_parsing(self): cli.tag( ['ANY_FILENAME.mp3'], { '--artist': 'ANY_ARTIST', '--import': None, '--dry': False, '--pattern': None }) self.mock_parse_filename.assert_not_called() self.mock_set_tags.assert_called_once_with('ANY_FILENAME.mp3', {'artist': 'ANY_ARTIST'}, prefix='')
def test_tags_are_read_from_yaml_file(self, mock_load, mock_open, mock_abspath): mock_load.return_value = {'ANY_FILENAME.mp3': {'artist': 'ANY_ARTIST'}} mock_abspath.side_effect = lambda fname: fname cli.tag(['ANY_FILENAME.mp3'], { '--import': 'ANY_YAML', '--dry': False, '--pattern': None }) mock_load.assert_called_once_with(mock_open.return_value) self.mock_set_tags.assert_called_once_with('ANY_FILENAME.mp3', {'artist': 'ANY_ARTIST'}, prefix='')
def test_logging_if_wet_run(self): with logbook.TestHandler() as log_handler: self.mock_parse_filename.return_value = {} cli.tag( ['ANY_FILENAME.mp3'], { '--artist': 'ANY_ARTIST', '--import': None, '--dry': False, '--pattern': 'ANY_PATTERN' }) should_log = ("Setting tags {'artist': 'ANY_ARTIST'}" " on file ANY_FILENAME.mp3") self.assertIn(should_log, log_handler.formatted_records[0])
def test_arguments_take_precendece_over_yaml(self, mock_load, mock_open, mock_abspath): mock_load.return_value = {'ANY_FILE.mp3': {'artist': 'ANY_ARTIST'}} mock_abspath.side_effect = lambda fname: fname cli.tag( ['ANY_FILE.mp3'], { '--import': 'ANY_YAML', '--dry': False, '--pattern': None, '--artist': 'OTHER ARTIST' }) self.mock_set_tags.assert_called_once_with('ANY_FILE.mp3', {'artist': 'OTHER ARTIST'}, prefix='')
def test_neither_default_tag_nor_parsed_doesnt_touch_tag(self): self.mock_parse_filename.return_value = {} args = { '--dry': False, '--import': None, '--artist': None, '--pattern': 'ANY_PATTERN' } cli.tag(['ANY_FILENAME.mp3'], args) self.mock_parse_filename.assert_called_once_with( 'ANY_FILENAME.mp3', 'ANY_PATTERN') self.mock_set_tags.assert_called_once_with('ANY_FILENAME.mp3', {}, prefix='')
def test_multiple_filenames(self): self.mock_parse_filename.return_value = {'artist': 'ANY_ARTIST'} args = {'--dry': False, '--import': None, '--pattern': 'ANY_PATTERN'} cli.tag(['FIRST_FILE.mp3', 'SECOND_FILE.flac'], args) self.mock_parse_filename.assert_has_calls([ mock.call('FIRST_FILE.mp3', 'ANY_PATTERN'), mock.call('SECOND_FILE.flac', 'ANY_PATTERN') ], any_order=True) self.mock_set_tags.assert_has_calls([ mock.call('FIRST_FILE.mp3', {'artist': 'ANY_ARTIST'}, prefix=''), mock.call('SECOND_FILE.flac', {'artist': 'ANY_ARTIST'}, prefix='') ], any_order=True)
def test_no_default_tag_set_but_value_parsed_from_fname(self): self.mock_parse_filename.return_value = {'artist': 'ANY_ARTIST'} args = { '--dry': False, '--import': None, '--artist': None, '--pattern': '<artist>' } cli.tag(['ANY_FILENAME.mp3'], args) self.mock_parse_filename.assert_called_once_with( 'ANY_FILENAME.mp3', '<artist>') self.mock_set_tags.assert_called_once_with('ANY_FILENAME.mp3', {'artist': 'ANY_ARTIST'}, prefix='')
def test_parsed_tags_take_precedence_over_config(self): self.mock_parse_filename.return_value = {'artist': 'ANY_ARTIST'} args = { '--dry': False, '--import': None, '--artist': 'NOT_ARTIST', '--pattern': '<artist>' } cli.tag(['ANY_FILENAME.mp3'], args) self.mock_parse_filename.assert_called_once_with( 'ANY_FILENAME.mp3', '<artist>') self.mock_set_tags.assert_called_once_with('ANY_FILENAME.mp3', {'artist': 'ANY_ARTIST'}, prefix='')
def test_pattern_takes_precedence_over_yaml(self, mock_load, mock_open, mock_abspath): mock_load.return_value = { 'FILENAME_ARTIST.mp3': { 'artist': 'ANY_ARTIST' } } mock_abspath.side_effect = lambda fname: fname self.mock_parse_filename.return_value = {'artist': 'FILENAME_ARTIST'} cli.tag(['FILENAME_ARTIST.mp3'], { '--import': 'ANY_YAML', '--dry': False, '--pattern': '<artist>' }) self.mock_set_tags.assert_called_once_with( 'FILENAME_ARTIST.mp3', {'artist': 'FILENAME_ARTIST'}, prefix='')