def test_save_sets_new_garden_owner_as_passed_in_user( self, new_garden_form_fields, user): form = NewGardenForm(owner=user, data=new_garden_form_fields) assert form.is_valid() garden = form.save() assert garden in user.gardens.all()
def test_clean_name_does_not_raise_validation_error_when_name_is_unique( self, user1, new_garden_form_fields): new_garden_form_fields['garden_name'] = user1.gardens.first( ).name + 'adijadjkaodj' form = NewGardenForm(owner=user1, data=new_garden_form_fields) form.cleaned_data = new_garden_form_fields form.clean_name() # should not raise
def test_clean_name_raises_validation_error_when_owner_has_a_garden_with_that_name_already( self, user1, new_garden_form_fields): new_garden_form_fields['name'] = user1.gardens.first().name form = NewGardenForm(owner=user1, data=new_garden_form_fields) form.cleaned_data = new_garden_form_fields with pytest.raises(ValidationError) as err: form.clean_name() assert str(err) == form.NON_UNIQUE_NAME_ERR_MSG
def test_is_valid_returns_false_when_update_frequency_is_invalid( self, new_garden_form_fields, user): new_garden_form_fields['update_frequency'] = -1 # invalidate data form = NewGardenForm(data=new_garden_form_fields) ret_val = form.is_valid() assert ret_val == False assert INVALID_DURATION_ERR_MSG in form.errors['update_frequency']
def test_is_valid_returns_false_when_num_watering_stations_is_invalid( self, new_garden_form_fields, user): new_garden_form_fields['num_watering_stations'] = -1 # invalidate data form = NewGardenForm(data=new_garden_form_fields) ret_val = form.is_valid() assert ret_val == False assert MIN_VALUE_ERR_MSG in form.errors['num_watering_stations']
def test_save_creates_a_new_garden_with_specified_num_of_watering_stations( self, new_garden_form_fields, user): prev_num_gardens = Garden.objects.all().count() form = NewGardenForm(owner=user, data=new_garden_form_fields) assert form.is_valid() garden = form.save() assert prev_num_gardens + 1 == Garden.objects.all().count() assert garden.watering_stations.count( ) == new_garden_form_fields['num_watering_stations']
def post(self, request: http.HttpRequest) -> http.JsonResponse: form = NewGardenForm(owner=request.user, data=request.POST, files=request.FILES) if form.is_valid(): form.save() return JsonResponse({ 'success': True, 'url': reverse('garden-list') }) form_html = render_crispy_form(form, context=csrf(request)) return JsonResponse({'success': False, 'html': form_html})
def get(self, request: http.HttpRequest) -> http.HttpResponse: form = NewGardenForm() gardens = [ GardenFormatter(garden) for garden in request.user.gardens.all() ] return render(request, 'garden_list.html', context={ 'gardens': gardens, 'form': form })
def test_fields_are_required(self, new_garden_form_fields, missing_field): new_garden_form_fields.pop(missing_field) form = NewGardenForm(data=new_garden_form_fields) assert not form.is_valid() assert form.errors[missing_field] == [REQUIRED_FIELD_ERR_MSG]