def test_save_processes_keywords_correctly(self): """ Saving the form should update the keywords correctly. - Removed keywords should be removed - New keywords should be added - Remaining keywords should remain """ user = UserFactory.create() task = TaskFactory.create() TaskKeywordFactory.create_batch(3, task=task) data = { 'keywords': 'test3, new_keyword', 'team': task.team.id, } for field in ('name', 'short_description', 'execution_time', 'difficulty', 'repeatable', 'instructions', 'is_draft'): data[field] = getattr(task, field) form = TaskForm(instance=task, data=data) form.save(user) removed_keyword = TaskKeyword.objects.filter(task=task, name='test1') eq_(len(removed_keyword), 0) added_keyword = TaskKeyword.objects.filter(task=task, name='new_keyword') eq_(len(added_keyword), 1) kept_keyword = TaskKeyword.objects.filter(task=task, name='test3') eq_(len(kept_keyword), 1) # double-check on the keywords_list property eq_(task.keywords_list, 'test3, new_keyword')
def test_save_does_not_add_a_blank_keyword(self): """ Saving the form should not add a blank keyword when keywords are empty. """ user = UserFactory.create() task = TaskFactory.create() data = { 'keywords': ' ', 'team': task.team.id, } for field in ('name', 'short_description', 'execution_time', 'difficulty', 'repeatable', 'instructions', 'is_draft'): data[field] = getattr(task, field) form = TaskForm(instance=task, data=data) form.save(user) eq_(task.keyword_set.count(), 0)