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_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) form = get_filled_taskform(task, keywords='test3, new_keyword') 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_initial_contains_list_of_keywords_for_existing_task(self): """ Initial should contain the list of keywords from the task instance. """ task = TaskFactory.create() TaskKeywordFactory.create_batch(3, task=task) form = TaskForm(instance=task) eq_(sorted(form.initial['keywords']), sorted('test1, test2, test3'))
def test_keywords_list_returns_expected_string(self): """ keywords_list should return a comma delimited list of keywords. """ TaskKeywordFactory.create_batch(4, task=self.task_draft) keywords = TaskKeyword.objects.filter(task=self.task_draft) expected_keywords = ', '.join([keyword.name for keyword in keywords]) eq_(self.task_draft.keywords_list, expected_keywords)
def test_initial_contains_list_of_keywords_for_existing_task(self): """ Initial should contain the list of keywords from the task instance. """ task = TaskFactory.create() TaskKeywordFactory.create_batch(3, task=task) form = TaskForm(instance=task) eq_(form.initial['keywords'], 'test1, test2, test3')
def test_get_form_kwargs_populates_form_with_data_to_be_cloned(self): """ When accessed via the tasks.clone url, the view displays a form whose initial data is that of the task being cloned, except for the 'name' field, which should be prefixed with 'Copy of ' """ user = UserFactory.create() original_task = TaskFactory.create() TaskKeywordFactory.create_batch(3, task=original_task) original_data = get_filled_taskform(original_task).data self.view.kwargs = {'clone': original_task.pk} self.view.request = Mock(user=user) with patch('oneanddone.tasks.views.generic.CreateView.get_form_kwargs') as get_form_kwargs: get_form_kwargs.return_value = {'initial': {}} initial = self.view.get_form_kwargs()['initial'] eq_(initial['keywords'], original_task.keywords_list) eq_(initial['name'], ' '.join(['Copy of', original_task.name])) del original_data['name'] assert_dict_contains_subset(original_data, initial)
def test_get_form_kwargs_populates_form_with_data_to_be_cloned(self): """ When accessed via the tasks.clone url, the view displays a form whose initial data is that of the task being cloned, except for the 'name' field, which should be prefixed with 'Copy of ' """ user = UserFactory.create() original_task = TaskFactory.create() TaskKeywordFactory.create_batch(3, task=original_task) original_data = get_filled_taskform(original_task).data self.view.kwargs = {'clone': original_task.pk} self.view.request = Mock(user=user) with patch('oneanddone.tasks.views.generic.CreateView.get_form_kwargs' ) as get_form_kwargs: get_form_kwargs.return_value = {'initial': {}} initial = self.view.get_form_kwargs()['initial'] eq_(initial['keywords'], original_task.keywords_list) eq_(initial['name'], ' '.join(['Copy of', original_task.name])) del original_data['name'] assert_dict_contains_subset(original_data, initial)
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 """ TaskKeywordFactory.create_batch(3, task=self.task) form = get_filled_taskform(self.task, keywords='test3, new_keyword') form.save(self.user) removed_keyword = TaskKeyword.objects.filter(task=self.task, name='test1') eq_(len(removed_keyword), 0) added_keyword = TaskKeyword.objects.filter(task=self.task, name='new_keyword') eq_(len(added_keyword), 1) kept_keyword = TaskKeyword.objects.filter(task=self.task, name='test3') eq_(len(kept_keyword), 1) # double-check on the keywords_list property eq_(sorted(self.task.keywords_list), sorted('test3, new_keyword'))