Ejemplo n.º 1
0
    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()
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
    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']
Ejemplo n.º 5
0
    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']
Ejemplo n.º 6
0
    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']
Ejemplo n.º 7
0
    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})
Ejemplo n.º 8
0
 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
                   })
Ejemplo n.º 9
0
    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]