def test_update_tags_handles_type_changes_for_existing_tag(self): # Given tags = [ TagInfo(name='completed', type='bool'), TagInfo(name='foo', type='string') ] p = Project(name='test', path=self.root, tags=tags) p.scan() key = 'root.txt' m = p.get(key) m.tags['completed'] = True m.tags['foo'] = 'hello world' # When new_tags = [ TagInfo(name='foo', type='int'), TagInfo(name='completed', type='bool') ] p.update_tags(new_tags) # Then self.assertEqual(p.tags, new_tags) self.assertEqual(m.tags['completed'], True) self.assertEqual(m.tags['foo'], 0) for key in p.keys(): m = p.get(key) self.assertEqual(type(m.tags['completed']), bool) self.assertEqual(m.tags['foo'], 0)
def test_update_tags_works_without_scan(self): # Given p = Project(name='test', path=self.root) # When new_tags = [TagInfo(name='foo', type='string')] p.update_tags(new_tags) # Then self.assertEqual(p.tags, new_tags) self.assertEqual(sorted(x.name for x in new_tags), sorted(p._tag_data.keys()))
def test_update_tags_updates_existing_media(self): # Given p = Project(name='test', path=self.root) p.scan() # When new_tags = [TagInfo(name='foo', type='string')] p.update_tags(new_tags) # Then self.assertEqual(p.tags, new_tags) for key in p.keys(): m = p.get(key) self.assertEqual(m.tags['foo'], '') self.assertTrue('completed' not in m.tags)