Skip to content

Commit

Permalink
Change tests to use unique component ids to reduce flakey tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
adamghill committed Jul 25, 2024
1 parent 47cf539 commit d8d983d
Show file tree
Hide file tree
Showing 15 changed files with 170 additions and 105 deletions.
1 change: 1 addition & 0 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def pytest_configure():
}

settings.configure(
DEBUG=True,
SECRET_KEY="this-is-a-secret",
TEMPLATES=templates,
MIDDLEWARE=[
Expand Down
52 changes: 34 additions & 18 deletions tests/components/test_component.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def test_init_with_template_name():
class TestComponent(UnicornView):
template_name = "unicorn/test.html"

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_init_with_template_name", component_name="hello-world")
assert component.template_name == "unicorn/test.html"


Expand All @@ -36,7 +36,7 @@ class TestComponent(UnicornView):
def get_template_names(self):
return []

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_init_with_get_template_names", component_name="hello-world")
assert component.template_name is None


Expand Down Expand Up @@ -64,7 +64,7 @@ class TestComponent(UnicornView):
def name(self):
return "World"

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_init_properties", component_name="hello-world")
attributes = component._attributes()
assert len(attributes) == 1
assert attributes["name"] == "World"
Expand Down Expand Up @@ -110,7 +110,9 @@ class ExampleComponentWithMetaExclude(UnicornView):
class Meta:
exclude = ("name",)

component = ExampleComponentWithMetaExclude(component_id="asdf1234", component_name="example")
component = ExampleComponentWithMetaExclude(
component_id="test_get_frontend_context_variables_exclude_field", component_name="example"
)

frontend_context_variables = component.get_frontend_context_variables()
frontend_context_variables_dict = orjson.loads(frontend_context_variables)
Expand All @@ -127,7 +129,9 @@ class Meta:
exclude = ""

with pytest.raises(AssertionError):
ExampleComponentWithMetaInvalidExclude(component_id="asdf1234", component_name="example")
ExampleComponentWithMetaInvalidExclude(
component_id="test_get_frontend_context_variables_exclude_field_invalid_type", component_name="example"
)


def test_get_frontend_context_variables_exclude_invalid_field():
Expand All @@ -139,7 +143,9 @@ class Meta:
exclude = ("blob",)

with pytest.raises(InvalidFieldNameError):
ExampleComponentWithMetaInvalidExclude(component_id="asdf1234", component_name="example")
ExampleComponentWithMetaInvalidExclude(
component_id="test_get_frontend_context_variables_exclude_invalid_field", component_name="example"
)


def test_get_frontend_context_variables(component):
Expand All @@ -160,7 +166,7 @@ def test_get_context_data_component():
class TestComponent(UnicornView):
pass

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_get_context_data_component", component_name="hello-world")
actual = component.get_context_data()

assert actual["unicorn"]
Expand All @@ -171,18 +177,18 @@ def test_get_context_data_component_id():
class TestComponent(UnicornView):
pass

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_get_context_data_component_id", component_name="hello-world")
actual = component.get_context_data()

assert actual["unicorn"]
assert actual["unicorn"]["component_id"] == "asdf1234"
assert actual["unicorn"]["component_id"] == "test_get_context_data_component_id"


def test_get_context_data_component_name():
class TestComponent(UnicornView):
pass

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_get_context_data_component_name", component_name="hello-world")
actual = component.get_context_data()

assert actual["unicorn"]
Expand All @@ -194,7 +200,7 @@ class TestComponent(UnicornView):
pass

component = TestComponent(
component_id="asdf1234",
component_id="test_get_context_data_component_key",
component_name="hello-world",
component_key="key-key-key",
)
Expand Down Expand Up @@ -223,7 +229,7 @@ class TestComponent(UnicornView):
class Meta:
javascript_exclude = ("name",)

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_meta_javascript_exclude", component_name="hello-world")
assert "name" not in component.get_frontend_context_variables()
assert "name" in component.get_context_data()

Expand All @@ -236,7 +242,9 @@ class Meta:
javascript_exclude = ("name.Universe",)

expected = '{"name":{}}'
component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(
component_id="test_meta_javascript_exclude_nested_with_tuple", component_name="hello-world"
)
assert expected == component.get_frontend_context_variables()


Expand All @@ -249,7 +257,9 @@ class Meta:
javascript_exclude = ("another.Neutral Milk Hotel.album",)

expected = '{"another":{"Neutral Milk Hotel":{}},"name":{"Universe":{"World":"Earth"}}}'
component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(
component_id="test_meta_javascript_exclude_nested_multiple_with_spaces", component_name="hello-world"
)
actual = component.get_frontend_context_variables()
assert expected == actual

Expand All @@ -264,7 +274,9 @@ class Meta:
]

expected = '{"name":{}}'
component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(
component_id="test_meta_javascript_exclude_nested_with_list", component_name="hello-world"
)
assert expected == component.get_frontend_context_variables()


Expand All @@ -275,7 +287,7 @@ class TestComponent(UnicornView):
class Meta:
exclude = ("name",)

component = TestComponent(component_id="asdf1234", component_name="hello-world")
component = TestComponent(component_id="test_meta_exclude", component_name="hello-world")
assert "name" not in component.get_frontend_context_variables()
assert "name" not in component.get_context_data()

Expand All @@ -286,7 +298,9 @@ def test_get_frontend_context_variables_form_with_boolean_field(component):
without an explicit fix.
"""

component = FakeValidationComponent(component_id="asdf1234", component_name="example")
component = FakeValidationComponent(
component_id="test_get_frontend_context_variables_form_with_boolean_field", component_name="example"
)

frontend_context_variables = component.get_frontend_context_variables()
frontend_context_variables_dict = orjson.loads(frontend_context_variables)
Expand All @@ -300,6 +314,8 @@ def test_get_frontend_context_variables_authentication_form(component):
init with data as a kwarg.
"""

component = FakeAuthenticationComponent(component_id="asdf1234", component_name="example")
component = FakeAuthenticationComponent(
component_id="test_get_frontend_context_variables_authentication_form", component_name="example"
)

component.get_frontend_context_variables()
46 changes: 33 additions & 13 deletions tests/templatetags/test_unicorn_render.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,12 +208,15 @@ def test_unicorn_render_parent(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(component_name="test", component_id="test_unicorn_render_parent")
context = {"view": view}
unicorn_node.render(Context(context))

assert unicorn_node.parent
assert unicorn_node.component_id == "asdf:tests.templatetags.test_unicorn_render.FakeComponentKwargs"
assert (
unicorn_node.component_id
== "test_unicorn_render_parent:tests.templatetags.test_unicorn_render.FakeComponentKwargs"
)


def test_unicorn_render_parent_with_key(settings):
Expand All @@ -223,11 +226,14 @@ def test_unicorn_render_parent_with_key(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view key='blob'",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(component_name="test", component_id="test_unicorn_render_parent_with_key")
context = {"view": view}
unicorn_node.render(Context(context))

assert unicorn_node.component_id == "asdf:tests.templatetags.test_unicorn_render.FakeComponentKwargs:blob"
assert (
unicorn_node.component_id
== "test_unicorn_render_parent_with_key:tests.templatetags.test_unicorn_render.FakeComponentKwargs:blob"
)


def test_unicorn_render_parent_with_id(settings):
Expand All @@ -237,11 +243,14 @@ def test_unicorn_render_parent_with_id(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view id='flob'",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(component_name="test", component_id="test_unicorn_render_parent_with_id")
context = {"view": view}
unicorn_node.render(Context(context))

assert unicorn_node.component_id == "asdf:tests.templatetags.test_unicorn_render.FakeComponentKwargs:flob"
assert (
unicorn_node.component_id
== "test_unicorn_render_parent_with_id:tests.templatetags.test_unicorn_render.FakeComponentKwargs:flob"
)


def test_unicorn_render_parent_with_pk(settings):
Expand All @@ -251,11 +260,14 @@ def test_unicorn_render_parent_with_pk(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view pk=99",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(component_name="test", component_id="test_unicorn_render_parent_with_pk")
context = {"view": view}
unicorn_node.render(Context(context))

assert unicorn_node.component_id == "asdf:tests.templatetags.test_unicorn_render.FakeComponentKwargs:99"
assert (
unicorn_node.component_id
== "test_unicorn_render_parent_with_pk:tests.templatetags.test_unicorn_render.FakeComponentKwargs:99"
)


def test_unicorn_render_parent_with_model_id(settings):
Expand All @@ -265,12 +277,15 @@ def test_unicorn_render_parent_with_model_id(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view model=model",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(component_name="test", component_id="test_unicorn_render_parent_with_model_id")

context = {"view": view, "model": FakeModel()}
unicorn_node.render(Context(context))

assert unicorn_node.component_id == "asdf:tests.templatetags.test_unicorn_render.FakeComponentKwargs:178"
assert (
unicorn_node.component_id
== "test_unicorn_render_parent_with_model_id:tests.templatetags.test_unicorn_render.FakeComponentKwargs:178"
)


@pytest.mark.django_db
Expand All @@ -281,14 +296,17 @@ def test_unicorn_render_parent_with_model_pk(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view model=model",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(component_name="test", component_id="test_unicorn_render_parent_with_model_pk")

flavor = Flavor(pk=187)

context = {"view": view, "model": flavor}
unicorn_node.render(Context(context))

assert unicorn_node.component_id == "asdf:tests.templatetags.test_unicorn_render.FakeComponentKwargs:187"
assert (
unicorn_node.component_id
== "test_unicorn_render_parent_with_model_pk:tests.templatetags.test_unicorn_render.FakeComponentKwargs:187"
)


def test_unicorn_render_id_use_pk():
Expand Down Expand Up @@ -341,7 +359,9 @@ def test_unicorn_render_child_component_no_script_tag(settings):
"unicorn 'tests.templatetags.test_unicorn_render.FakeComponentKwargs' parent=view",
)
unicorn_node = unicorn(Parser([]), token)
view = FakeComponentParent(component_name="test", component_id="asdf")
view = FakeComponentParent(
component_name="test-no-script", component_id="test_unicorn_render_child_component_no_script_tag"
)
context = {"view": view}
html = unicorn_node.render(Context(context))

Expand Down
4 changes: 2 additions & 2 deletions tests/test_model_lifecycle.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def test_model_foreign_key():

@pytest.mark.django_db
def test_queryset():
test_component = FakeComponent(component_name="test", component_id="asdf")
test_component = FakeComponent(component_name="test", component_id="model_lifecycle_test_queryset")
assert test_component.flavors.count() == 0

flavor = Flavor(name="qs-first-flavor")
Expand All @@ -72,7 +72,7 @@ def test_queryset():

@pytest.mark.django_db
def test_queryset_values():
test_component = FakeComponent(component_name="test", component_id="asdf")
test_component = FakeComponent(component_name="test", component_id="model_lifecycle_test_queryset_values")
assert test_component.flavors.count() == 0

flavor = Flavor(name="values-first-flavor")
Expand Down
2 changes: 1 addition & 1 deletion tests/test_typer.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class MyComponentView(UnicornView):
a_date: datetime.date

expected = {"a_date": datetime.date}
actual = get_type_hints(MyComponentView(component_name="test", component_id="123"))
actual = get_type_hints(MyComponentView(component_name="test", component_id="test_get_type_hints_gh_639"))
assert actual == expected


Expand Down
18 changes: 11 additions & 7 deletions tests/views/action_parsers/call_method/test_call_method_name.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def get_invalid_custom_class(self, _cls: InvalidCustomClass):


def test_call_method_name_missing():
component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(component_name="test", component_id="test_call_method_name_missing")
actual = _call_method_name(component, "save_missing", args=(), kwargs={})

assert actual is None
Expand All @@ -79,7 +79,7 @@ def test_call_method_name_missing():
def test_call_method_name_no_params():
expected = 1

component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(component_name="test", component_id="test_call_method_name_no_params")
actual = _call_method_name(component, "save", args=(), kwargs={})

assert actual == expected
Expand All @@ -88,7 +88,7 @@ def test_call_method_name_no_params():
def test_call_method_name_with_arg():
expected = 2

component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(component_name="test", component_id="test_call_method_name_with_arg")
actual = _call_method_name(component, "save_with_arg", args=(1,), kwargs={})

assert actual == expected
Expand All @@ -97,7 +97,7 @@ def test_call_method_name_with_arg():
def test_call_method_name_with_kwarg():
expected = 3

component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(component_name="test", component_id="test_call_method_name_with_kwarg")
actual = _call_method_name(component, "save_with_kwarg", args=(), kwargs=MappingProxyType({"id": 2}))

assert actual == expected
Expand All @@ -108,7 +108,9 @@ def test_call_method_name_arg_with_model_type_annotation():
flavor = Flavor()
flavor.save()

component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(
component_name="test", component_id="test_call_method_name_arg_with_model_type_annotation"
)
actual = _call_method_name(component, "save_with_model", args=(flavor.pk,), kwargs={})

assert actual == flavor.pk
Expand All @@ -124,7 +126,9 @@ def test_call_method_name_arg_with_model_type_annotation_multiple():

assert flavor_one.pk != flavor_two.pk

component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(
component_name="test", component_id="test_call_method_name_arg_with_model_type_annotation_multiple"
)
actual = _call_method_name(component, "save_with_model", args=(flavor_one.pk,), kwargs={})
assert actual == flavor_one.pk

Expand All @@ -142,7 +146,7 @@ def test_call_method_name_arg_with_model_type_annotation_multiple():


def _get_actual(method_name: str, args=None, kwargs=None):
component = FakeComponent(component_name="test", component_id="asdf")
component = FakeComponent(component_name="test", component_id="test-call-method-name-tests")

if args is None:
args = ()
Expand Down
Loading

0 comments on commit d8d983d

Please sign in to comment.