def test_required_fields(self):
        fields = {
            "min": True,
        }

        form = forms.ConfigForm()

        for field, required in fields.items():
            self.assertEqual(form.fields[field].required, required)
def new(request, instance=None):
    token = request.session.get('tsuru_token').split(" ")[-1]

    dlist = [(d["Name"], d["Name"]) for d in dclient.list(token).json()]

    scale_up_form = forms.ScaleForm(request.POST or None,
                                    prefix="scale_up",
                                    initial={"operator": ">"})
    scale_up_form.fields['metric'].choices = dlist

    scale_down_form = forms.ScaleForm(request.POST or None,
                                      prefix="scale_down",
                                      initial={"operator": "<"})
    scale_down_form.fields['metric'].choices = dlist

    config_form = forms.ConfigForm(request.POST or None)

    p_list = process_list(instance, token)
    config_form.fields['process'].choices = p_list

    if scale_up_form.is_valid() and scale_down_form.is_valid(
    ) and config_form.is_valid():
        get_or_create_tsuru_instance(instance, token)
        config_data = {
            "name": instance,
            "minUnits": config_form.cleaned_data["min"],
            "scaleUp": scale_up_form.cleaned_data,
            "scaleDown": scale_down_form.cleaned_data,
            "process": config_form.cleaned_data["process"],
        }
        client.new(config_data, token)
        messages.success(request, u"Auto scale saved.")
        url = "{}?TSURU_TOKEN={}".format(
            reverse("autoscale-app-info", args=[instance]),
            urllib.quote(token))
        return redirect(url)

    token = urllib.quote(token)
    context = {
        "scale_up_form": scale_up_form,
        "scale_down_form": scale_down_form,
        "config_form": config_form,
        "token": token,
    }

    return render(request, "wizard/index.html", context)