def post(self, request, plan_id): plan = get_object_or_404(TestPlan, pk=int(plan_id)) search_mode = request.POST.get('search_mode') if search_mode == 'quick': form = quick_form = QuickSearchCaseForm(request.POST) normal_form = SearchCaseForm() else: form = normal_form = SearchCaseForm(request.POST) form.populate(product_id=request.POST.get('product')) quick_form = QuickSearchCaseForm() cases = [] if form.is_valid(): cases = TestCase.list(form.cleaned_data) cases = cases.select_related( 'author', 'default_tester', 'case_status', 'priority' ).only( 'pk', 'summary', 'create_date', 'author__email', 'default_tester__email', 'case_status__name', 'priority__value' ).exclude( case_id__in=plan.case.values_list('case_id', flat=True)) context = { 'test_plan': plan, 'test_cases': cases, 'search_form': normal_form, 'quick_form': quick_form, 'search_mode': search_mode } return render(request, self.template_name, context=context)
def link_cases(self, template_name='plan/search_case.html'): """Handle to form to add case to plans""" SUB_MODULE_NAME = 'plans' tcs = None if request.POST.get('action') == 'add_to_plan': if request.user.has_perm('testcases.add_testcaseplan'): tcs = TestCase.objects.filter( case_id__in=request.POST.getlist('case')) for tc in tcs: tp.add_case(tc) else: return HttpResponse("Permission Denied") return HttpResponseRedirect( reverse('test_plan_url_short', args=[plan_id])) search_mode = request.POST.get('search_mode') if request.POST.get('action') == 'search': if search_mode == 'quick': form = quick_form = QuickSearchCaseForm(request.POST) normal_form = SearchCaseForm() else: form = normal_form = SearchCaseForm(request.POST) form.populate(product_id=request.POST.get('product')) quick_form = QuickSearchCaseForm() if form.is_valid(): tcs = TestCase.list(form.cleaned_data) tcs = tcs.select_related( 'author', 'default_tester', 'case_status', 'priority').only('pk', 'summary', 'create_date', 'author__email', 'default_tester__email', 'case_status__name', 'priority__value') tcs = tcs.exclude( case_id__in=tp.case.values_list('case_id', flat=True)) else: normal_form = SearchCaseForm( initial={ 'product': tp.product_id, 'product_version': tp.product_version_id, 'case_status_id': TestCaseStatus.get_CONFIRMED() }) quick_form = QuickSearchCaseForm() context_data = { 'module': MODULE_NAME, 'sub_module': SUB_MODULE_NAME, 'test_plan': tp, 'test_cases': tcs, 'search_form': normal_form, 'quick_form': quick_form, 'search_mode': search_mode } return render(request, template_name, context_data)
def get(self, request, plan_id): plan = get_object_or_404(TestPlan, pk=int(plan_id)) normal_form = SearchCaseForm(initial={ 'product': plan.product_id, 'product_version': plan.product_version_id, 'case_status_id': TestCaseStatus.get_CONFIRMED() }) quick_form = QuickSearchCaseForm() return render(self.request, self.template_name, { 'search_form': normal_form, 'quick_form': quick_form, 'test_plan': plan, })
def test_valid_input(self): form = QuickSearchCaseForm({'case_id_set': '1,2, 3'}) self.assertTrue(form.is_valid()) self.assertEqual([1, 2, 3], sorted(form.cleaned_data['case_id_set']))
def test_non_integer_in_case_id_set(self): for value in ('1,2,a,4', '1,2,,3'): form = QuickSearchCaseForm({'case_id_set': value}) self.assertFalse(form.is_valid()) self.assertIn('Please input valid case id(s)', form.errors['case_id_set'][0])
def test_empty_string_for_case_id_set(self): form = QuickSearchCaseForm({'case_id_set': ''}) self.assertFalse(form.is_valid()) self.assertIn('Please input valid case id(s)', form.errors['case_id_set'][0])