Skip to content

Commit ca4d879

Browse files
committed
Increase coverage
1 parent f043851 commit ca4d879

10 files changed

Lines changed: 1074 additions & 1 deletion

File tree

‎datajunction-server/tests/api/graphql/resolvers/test_node_resolver.py‎

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,86 @@ def test_columns_resolver_filters_by_attribute():
7070
assert result[0].name == "user_id"
7171

7272

73+
def test_reaggregate_resolver_returns_none_for_non_metric():
74+
"""
75+
Test that the reaggregate resolver only resolves for metric revisions.
76+
"""
77+
from datajunction_server.api.graphql.scalars.node import NodeRevision
78+
from datajunction_server.database import NodeRevision as DBNodeRevision
79+
from datajunction_server.models.node_type import NodeType
80+
81+
db_node_revision = DBNodeRevision(
82+
name="source_rev",
83+
type=NodeType.SOURCE,
84+
version="1",
85+
reaggregate={
86+
"rules": [
87+
{
88+
"dimension": "default.date_dim.date",
89+
"fn": "last_value",
90+
},
91+
],
92+
},
93+
)
94+
95+
result = NodeRevision.reaggregate(NodeRevision, root=db_node_revision)
96+
97+
assert result is None
98+
99+
100+
def test_reaggregate_resolver_returns_none_for_empty_metric_spec():
101+
"""
102+
Test that the reaggregate resolver returns None for metrics without a spec.
103+
"""
104+
from datajunction_server.api.graphql.scalars.node import NodeRevision
105+
from datajunction_server.database import NodeRevision as DBNodeRevision
106+
from datajunction_server.models.node_type import NodeType
107+
108+
db_node_revision = DBNodeRevision(
109+
name="metric_rev",
110+
type=NodeType.METRIC,
111+
version="1",
112+
reaggregate=None,
113+
)
114+
115+
result = NodeRevision.reaggregate(NodeRevision, root=db_node_revision)
116+
117+
assert result is None
118+
119+
120+
def test_reaggregate_resolver_returns_metric_spec():
121+
"""
122+
Test that the reaggregate resolver exposes metric reaggregation declarations.
123+
"""
124+
from datajunction_server.api.graphql.scalars.node import NodeRevision
125+
from datajunction_server.database import NodeRevision as DBNodeRevision
126+
from datajunction_server.models.node_type import NodeType
127+
from datajunction_server.models.reaggregate import ReaggregationFunction
128+
129+
db_node_revision = DBNodeRevision(
130+
name="metric_rev",
131+
type=NodeType.METRIC,
132+
version="1",
133+
reaggregate={
134+
"rules": [
135+
{
136+
"dimension": "default.date_dim.date",
137+
"fn": "last_value",
138+
},
139+
],
140+
},
141+
)
142+
143+
result = NodeRevision.reaggregate(NodeRevision, root=db_node_revision)
144+
145+
assert result is not None
146+
assert result.fn is None
147+
assert result.weight is None
148+
assert len(result.rules) == 1
149+
assert result.rules[0].dimension == "default.date_dim.date"
150+
assert result.rules[0].fn == ReaggregationFunction.LAST_VALUE
151+
152+
73153
@pytest.mark.asyncio
74154
@patch("datajunction_server.api.graphql.resolvers.nodes.DBNode.get_by_name")
75155
@patch("datajunction_server.api.graphql.resolvers.nodes.load_node_options")

‎datajunction-server/tests/construction/build_v3/decomposition_test.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ def test_metric_with_only_dimension_parent_not_derived(self):
229229
("protected_dimension", "requested_dimensions", "expected"),
230230
[
231231
("v3.date.date_id[order]", ["v3.date.date_id[order]"], True),
232+
("v3.date.date_id[order]", ["v3.date.date_id[order]]"], True),
232233
("v3.date.date_id[order]", ["v3.date.date_id"], False),
233234
("v3.date.date_id[order]", ["v3.date.date_id[ship]"], False),
234235
("v3.date.date_id[order]", ["date_id"], False),

0 commit comments

Comments
 (0)