Use display name where appropriate
This commit is contained in:
parent
582c4ed564
commit
97b53ec072
8 changed files with 68 additions and 63 deletions
|
|
@ -22,7 +22,7 @@ def test_custom_model_form_class_returns_class_when_form_config_exists():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
}
|
||||
],
|
||||
|
|
@ -32,7 +32,7 @@ def test_custom_model_form_class_returns_class_when_form_config_exists():
|
|||
crd.service_definition = service_def
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
|
||||
class Meta:
|
||||
app_label = "test"
|
||||
|
|
@ -193,7 +193,7 @@ def test_choice_field_uses_custom_choices_from_form_config():
|
|||
"""Test that choice fields use custom choices when provided in form_config"""
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
environment = models.CharField(
|
||||
max_length=20,
|
||||
choices=[
|
||||
|
|
@ -215,7 +215,7 @@ def test_choice_field_uses_custom_choices_from_form_config():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
|
|
@ -246,7 +246,7 @@ def test_choice_field_uses_custom_choices_from_form_config():
|
|||
def test_choice_field_uses_control_plane_choices_when_no_custom_choices():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
environment = models.CharField(
|
||||
max_length=20,
|
||||
choices=[
|
||||
|
|
@ -267,7 +267,7 @@ def test_choice_field_uses_control_plane_choices_when_no_custom_choices():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
|
|
@ -292,7 +292,7 @@ def test_choice_field_uses_control_plane_choices_when_no_custom_choices():
|
|||
|
||||
def test_choice_field_validates_against_control_plane_choices():
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
environment = models.CharField(
|
||||
max_length=20,
|
||||
choices=[
|
||||
|
|
@ -313,7 +313,7 @@ def test_choice_field_validates_against_control_plane_choices():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
|
|
@ -330,15 +330,15 @@ def test_choice_field_validates_against_control_plane_choices():
|
|||
|
||||
form_class = generate_custom_form_class(form_config, TestModel)
|
||||
|
||||
form = form_class(data={"name": "test-service", "environment": "dev"})
|
||||
form = form_class(data={"display_name": "test-service", "environment": "dev"})
|
||||
form.fields["context"].required = False # Skip context validation
|
||||
assert form.is_valid(), f"Form should be valid but has errors: {form.errors}"
|
||||
|
||||
form = form_class(data={"name": "test-service", "environment": "prod"})
|
||||
form = form_class(data={"display_name": "test-service", "environment": "prod"})
|
||||
form.fields["context"].required = False # Skip context validation
|
||||
assert form.is_valid(), f"Form should be valid but has errors: {form.errors}"
|
||||
|
||||
form = form_class(data={"name": "test-service", "environment": "invalid"})
|
||||
form = form_class(data={"display_name": "test-service", "environment": "invalid"})
|
||||
form.fields["context"].required = False # Skip context validation
|
||||
assert not form.is_valid()
|
||||
assert "environment" in form.errors
|
||||
|
|
@ -368,7 +368,7 @@ def test_admin_form_validates_choice_values_against_schema():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
},
|
||||
{
|
||||
"type": "choice",
|
||||
|
|
@ -399,7 +399,7 @@ def test_admin_form_validates_choice_values_against_schema():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
},
|
||||
{
|
||||
"type": "choice",
|
||||
|
|
@ -431,7 +431,7 @@ def test_admin_form_validates_choice_values_against_schema():
|
|||
|
||||
def test_number_field_min_max_sets_widget_attributes():
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
port = models.IntegerField()
|
||||
replica_count = models.IntegerField()
|
||||
|
||||
|
|
@ -446,7 +446,7 @@ def test_number_field_min_max_sets_widget_attributes():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
|
|
@ -494,7 +494,7 @@ def test_number_field_min_max_sets_widget_attributes():
|
|||
def test_default_value_for_all_field_types():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
description = models.TextField()
|
||||
port = models.IntegerField()
|
||||
environment = models.CharField(
|
||||
|
|
@ -518,7 +518,7 @@ def test_default_value_for_all_field_types():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"default_value": "default-name",
|
||||
},
|
||||
{
|
||||
|
|
@ -559,7 +559,7 @@ def test_default_value_for_all_field_types():
|
|||
form_class = generate_custom_form_class(form_config, TestModel)
|
||||
form = form_class()
|
||||
|
||||
assert form.fields["name"].initial == "default-name"
|
||||
assert form.fields["display_name"].initial == "default-name"
|
||||
assert form.fields["description"].initial == "Default description text"
|
||||
assert form.fields["port"].initial == "8080"
|
||||
assert form.fields["environment"].initial == "dev"
|
||||
|
|
@ -570,7 +570,7 @@ def test_default_value_for_all_field_types():
|
|||
def test_default_value_not_override_existing_instance():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
port = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
|
|
@ -583,7 +583,7 @@ def test_default_value_not_override_existing_instance():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"default_value": "default-name",
|
||||
},
|
||||
{
|
||||
|
|
@ -597,11 +597,11 @@ def test_default_value_not_override_existing_instance():
|
|||
]
|
||||
}
|
||||
|
||||
instance = TestModel(name="existing-name", port=3000)
|
||||
instance = TestModel(display_name="existing-name", port=3000)
|
||||
form_class = generate_custom_form_class(form_config, TestModel)
|
||||
form = form_class(instance=instance)
|
||||
|
||||
assert form.initial["name"] == "existing-name"
|
||||
assert form.initial["display_name"] == "existing-name"
|
||||
assert form.initial["port"] == 3000
|
||||
|
||||
|
||||
|
|
@ -708,7 +708,7 @@ def test_form_config_handles_empty_string_as_none():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"max_length": "", # Empty string
|
||||
},
|
||||
]
|
||||
|
|
@ -744,7 +744,7 @@ def test_single_element_choices_are_normalized():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
},
|
||||
{
|
||||
"type": "choice",
|
||||
|
|
@ -879,7 +879,7 @@ def test_three_plus_element_choices_fail_validation():
|
|||
def test_field_with_default_config_only_needs_mapping():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
|
||||
class Meta:
|
||||
app_label = "test"
|
||||
|
|
@ -889,7 +889,7 @@ def test_field_with_default_config_only_needs_mapping():
|
|||
{
|
||||
"fields": [
|
||||
{
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
},
|
||||
]
|
||||
}
|
||||
|
|
@ -899,16 +899,16 @@ def test_field_with_default_config_only_needs_mapping():
|
|||
form_class = generate_custom_form_class(minimal_config, TestModel)
|
||||
form = form_class()
|
||||
|
||||
name_field = form.fields["name"]
|
||||
assert name_field.label == DEFAULT_FIELD_CONFIGS["name"]["label"]
|
||||
assert name_field.help_text == DEFAULT_FIELD_CONFIGS["name"]["help_text"]
|
||||
assert name_field.required == DEFAULT_FIELD_CONFIGS["name"]["required"]
|
||||
name_field = form.fields["display_name"]
|
||||
assert name_field.label == DEFAULT_FIELD_CONFIGS["display_name"]["label"]
|
||||
assert name_field.help_text == DEFAULT_FIELD_CONFIGS["display_name"]["help_text"]
|
||||
assert name_field.required == DEFAULT_FIELD_CONFIGS["display_name"]["required"]
|
||||
|
||||
|
||||
def test_field_with_default_config_can_override_defaults():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
|
||||
class Meta:
|
||||
app_label = "test"
|
||||
|
|
@ -918,7 +918,7 @@ def test_field_with_default_config_can_override_defaults():
|
|||
{
|
||||
"fields": [
|
||||
{
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"label": "Custom Name Label",
|
||||
"required": False,
|
||||
},
|
||||
|
|
@ -930,16 +930,16 @@ def test_field_with_default_config_can_override_defaults():
|
|||
form_class = generate_custom_form_class(override_config, TestModel)
|
||||
form = form_class()
|
||||
|
||||
name_field = form.fields["name"]
|
||||
name_field = form.fields["display_name"]
|
||||
assert name_field.label == "Custom Name Label"
|
||||
assert name_field.required is False
|
||||
assert name_field.help_text == DEFAULT_FIELD_CONFIGS["name"]["help_text"]
|
||||
assert name_field.help_text == DEFAULT_FIELD_CONFIGS["display_name"]["help_text"]
|
||||
|
||||
|
||||
def test_empty_values_dont_override_default_configs():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
|
||||
class Meta:
|
||||
app_label = "test"
|
||||
|
|
@ -949,7 +949,7 @@ def test_empty_values_dont_override_default_configs():
|
|||
{
|
||||
"fields": [
|
||||
{
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"type": "",
|
||||
"label": "",
|
||||
"help_text": None,
|
||||
|
|
@ -964,11 +964,11 @@ def test_empty_values_dont_override_default_configs():
|
|||
form_class = generate_custom_form_class(admin_form_config, TestModel)
|
||||
form = form_class()
|
||||
|
||||
name_field = form.fields["name"]
|
||||
name_field = form.fields["display_name"]
|
||||
|
||||
assert name_field.label == DEFAULT_FIELD_CONFIGS["name"]["label"]
|
||||
assert name_field.help_text == DEFAULT_FIELD_CONFIGS["name"]["help_text"]
|
||||
assert name_field.max_length == DEFAULT_FIELD_CONFIGS["name"]["max_length"]
|
||||
assert name_field.label == DEFAULT_FIELD_CONFIGS["display_name"]["label"]
|
||||
assert name_field.help_text == DEFAULT_FIELD_CONFIGS["display_name"]["help_text"]
|
||||
assert name_field.max_length == DEFAULT_FIELD_CONFIGS["display_name"]["max_length"]
|
||||
|
||||
assert name_field.required is False # Was overridden by explicit False
|
||||
|
||||
|
|
@ -976,7 +976,7 @@ def test_empty_values_dont_override_default_configs():
|
|||
def test_number_field_validates_min_max_values():
|
||||
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
port = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
|
|
@ -990,7 +990,7 @@ def test_number_field_validates_min_max_values():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
|
|
@ -1009,26 +1009,26 @@ def test_number_field_validates_min_max_values():
|
|||
form_class = generate_custom_form_class(form_config, TestModel)
|
||||
|
||||
# Test value below minimum fails validation
|
||||
form = form_class(data={"name": "test-service", "port": 0})
|
||||
form = form_class(data={"display_name": "test-service", "port": 0})
|
||||
form.fields["context"].required = False
|
||||
assert not form.is_valid()
|
||||
assert "port" in form.errors
|
||||
|
||||
# Test value above maximum fails validation
|
||||
form = form_class(data={"name": "test-service", "port": 65536})
|
||||
form = form_class(data={"display_name": "test-service", "port": 65536})
|
||||
form.fields["context"].required = False
|
||||
assert not form.is_valid()
|
||||
assert "port" in form.errors
|
||||
|
||||
# Test valid value passes validation
|
||||
form = form_class(data={"name": "test-service", "port": 8080})
|
||||
form = form_class(data={"display_name": "test-service", "port": 8080})
|
||||
form.fields["context"].required = False
|
||||
assert form.is_valid(), f"Form should be valid but has errors: {form.errors}"
|
||||
|
||||
|
||||
def test_number_field_with_addon_text_roundtrip():
|
||||
class TestModel(models.Model):
|
||||
name = models.CharField(max_length=100)
|
||||
display_name = models.CharField(max_length=100)
|
||||
disk_size = models.IntegerField()
|
||||
|
||||
class Meta:
|
||||
|
|
@ -1041,7 +1041,7 @@ def test_number_field_with_addon_text_roundtrip():
|
|||
{
|
||||
"type": "text",
|
||||
"label": "Name",
|
||||
"controlplane_field_mapping": "name",
|
||||
"controlplane_field_mapping": "display_name",
|
||||
"required": True,
|
||||
},
|
||||
{
|
||||
|
|
@ -1059,7 +1059,7 @@ def test_number_field_with_addon_text_roundtrip():
|
|||
form = form_class(initial={"name": "test-instance", "disk_size": "25Gi"})
|
||||
|
||||
assert form.initial["disk_size"] == 25
|
||||
form = form_class(data={"name": "test-instance", "disk_size": "25"})
|
||||
form = form_class(data={"display_name": "test-instance", "disk_size": "25"})
|
||||
form.fields["context"].required = False
|
||||
assert form.is_valid(), f"Form should be valid but has errors: {form.errors}"
|
||||
nested_data = form.get_nested_data()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue