mirror of
https://github.com/django-components/django-components.git
synced 2025-09-26 15:39:08 +00:00
refactor: Update docs and tests to use get_template_data() (#1161)
* refactor: update docs and tests to use get_template_data() * refactor: fix linting * docs: add note about difference between the two methods
This commit is contained in:
parent
c69980493d
commit
28b61c1609
69 changed files with 795 additions and 725 deletions
|
@ -1,5 +1,4 @@
|
|||
from dataclasses import field
|
||||
from typing import Any
|
||||
|
||||
from django.template import Context
|
||||
|
||||
|
@ -25,25 +24,36 @@ class TestComponentDefaults:
|
|||
extra = "extra"
|
||||
fn = lambda: "fn_as_val" # noqa: E731
|
||||
|
||||
def get_context_data(self, arg1: Any, variable: Any, another: Any, **attrs: Any):
|
||||
def get_template_data(self, args, kwargs, slots, context):
|
||||
nonlocal did_call_context
|
||||
did_call_context = True
|
||||
|
||||
# Check that args and slots are NOT affected by the defaults
|
||||
assert self.input.args == [123]
|
||||
assert [*self.input.slots.keys()] == ["my_slot"]
|
||||
assert self.input.slots["my_slot"](Context(), None, None) == "MY_SLOT" # type: ignore[arg-type]
|
||||
|
||||
assert kwargs == {
|
||||
"variable": "test", # User-given
|
||||
"another": 1, # Default because missing
|
||||
"extra": "extra", # Default because `None` was given
|
||||
"fn": self.Defaults.fn, # Default because missing
|
||||
}
|
||||
assert self.input.kwargs == {
|
||||
"variable": "test", # User-given
|
||||
"another": 1, # Default because missing
|
||||
"extra": "extra", # Default because `None` was given
|
||||
"fn": self.Defaults.fn, # Default because missing
|
||||
}
|
||||
|
||||
# Check that args and slots are NOT affected by the defaults
|
||||
assert args == [123]
|
||||
assert [*slots.keys()] == ["my_slot"]
|
||||
assert slots["my_slot"](Context(), None, None) == "MY_SLOT" # type: ignore[arg-type]
|
||||
|
||||
assert self.input.args == [123]
|
||||
assert [*self.input.slots.keys()] == ["my_slot"]
|
||||
assert self.input.slots["my_slot"](Context(), None, None) == "MY_SLOT" # type: ignore[arg-type]
|
||||
|
||||
assert isinstance(self.input.context, Context)
|
||||
|
||||
return {
|
||||
"variable": variable,
|
||||
"variable": kwargs["variable"],
|
||||
}
|
||||
|
||||
TestComponent.render(
|
||||
|
@ -64,10 +74,14 @@ class TestComponentDefaults:
|
|||
variable = "test"
|
||||
fn = Default(lambda: "fn_as_factory")
|
||||
|
||||
def get_context_data(self, variable: Any, **attrs: Any):
|
||||
def get_template_data(self, args, kwargs, slots, context):
|
||||
nonlocal did_call_context
|
||||
did_call_context = True
|
||||
|
||||
assert kwargs == {
|
||||
"variable": "test", # User-given
|
||||
"fn": "fn_as_factory", # Default because missing
|
||||
}
|
||||
assert self.input.kwargs == {
|
||||
"variable": "test", # User-given
|
||||
"fn": "fn_as_factory", # Default because missing
|
||||
|
@ -75,7 +89,7 @@ class TestComponentDefaults:
|
|||
assert isinstance(self.input.context, Context)
|
||||
|
||||
return {
|
||||
"variable": variable,
|
||||
"variable": kwargs["variable"],
|
||||
}
|
||||
|
||||
TestComponent.render(
|
||||
|
@ -94,10 +108,15 @@ class TestComponentDefaults:
|
|||
variable = "test"
|
||||
fn = field(default=lambda: "fn_as_factory")
|
||||
|
||||
def get_context_data(self, variable: Any, **attrs: Any):
|
||||
def get_template_data(self, args, kwargs, slots, context):
|
||||
nonlocal did_call_context
|
||||
did_call_context = True
|
||||
|
||||
assert kwargs == {
|
||||
"variable": "test", # User-given
|
||||
# NOTE: NOT a factory, because it was set as `field(default=...)`
|
||||
"fn": self.Defaults.fn.default, # type: ignore[attr-defined]
|
||||
}
|
||||
assert self.input.kwargs == {
|
||||
"variable": "test", # User-given
|
||||
# NOTE: NOT a factory, because it was set as `field(default=...)`
|
||||
|
@ -106,7 +125,7 @@ class TestComponentDefaults:
|
|||
assert isinstance(self.input.context, Context)
|
||||
|
||||
return {
|
||||
"variable": variable,
|
||||
"variable": kwargs["variable"],
|
||||
}
|
||||
|
||||
TestComponent.render(
|
||||
|
@ -125,10 +144,15 @@ class TestComponentDefaults:
|
|||
variable = "test"
|
||||
fn = field(default_factory=lambda: "fn_as_factory")
|
||||
|
||||
def get_context_data(self, variable: Any, **attrs: Any):
|
||||
def get_template_data(self, args, kwargs, slots, context):
|
||||
nonlocal did_call_context
|
||||
did_call_context = True
|
||||
|
||||
assert kwargs == {
|
||||
"variable": "test", # User-given
|
||||
# NOTE: IS a factory, because it was set as `field(default_factory=...)`
|
||||
"fn": "fn_as_factory", # Default because missing
|
||||
}
|
||||
assert self.input.kwargs == {
|
||||
"variable": "test", # User-given
|
||||
# NOTE: IS a factory, because it was set as `field(default_factory=...)`
|
||||
|
@ -137,7 +161,7 @@ class TestComponentDefaults:
|
|||
assert isinstance(self.input.context, Context)
|
||||
|
||||
return {
|
||||
"variable": variable,
|
||||
"variable": kwargs["variable"],
|
||||
}
|
||||
|
||||
TestComponent.render(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue