Skip to content

Commit cc9dbae

Browse files
authored
Merge pull request #392 from dbt-msft/fix-utils-tests
Fix logic in utils tests
2 parents 8a75db9 + c647953 commit cc9dbae

File tree

3 files changed

+60
-29
lines changed

3 files changed

+60
-29
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{% macro sqlserver__concat(fields) -%}
2-
concat({{ fields|join(', ') }}, '')
2+
concat({{ fields|join(', ') }})
33
{%- endmacro %}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{% macro sqlserver__hash(field) %}
2-
convert(varchar(50), hashbytes('md5', {{field}}), 2)
2+
lower(convert(varchar(50), hashbytes('md5', coalesce(convert(varchar(max), {{field}}), '')), 2))
33
{% endmacro %}

tests/functional/adapter/test_utils.py

Lines changed: 58 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,31 @@
3030
from dbt.tests.adapter.utils.test_string_literal import BaseStringLiteral
3131

3232

33-
class TestAnyValueSQLServer(BaseAnyValue):
33+
class BaseFixedMacro:
34+
@pytest.fixture(scope="class")
35+
def macros(self):
36+
return {
37+
"test_assert_equal.sql": """
38+
{% test assert_equal(model, actual, expected) %}
39+
select * from {{ model }}
40+
where {{ actual }} != {{ expected }}
41+
or ({{ actual }} is null and {{ expected }} is not null)
42+
or ({{ expected }} is null and {{ actual }} is not null)
43+
{% endtest %}
44+
"""
45+
}
46+
47+
48+
class TestAnyValueSQLServer(BaseFixedMacro, BaseAnyValue):
3449
pass
3550

3651

3752
@pytest.mark.skip("bool_or not supported in this adapter")
38-
class TestBoolOrSQLServer(BaseBoolOr):
53+
class TestBoolOrSQLServer(BaseFixedMacro, BaseBoolOr):
3954
pass
4055

4156

42-
class TestCastBoolToTextSQLServer(BaseCastBoolToText):
57+
class TestCastBoolToTextSQLServer(BaseFixedMacro, BaseCastBoolToText):
4358
@pytest.fixture(scope="class")
4459
def models(self):
4560
models__test_cast_bool_to_text_sql = """
@@ -67,51 +82,67 @@ def models(self):
6782
}
6883

6984

70-
class TestConcatSQLServer(BaseConcat):
71-
pass
85+
class TestConcatSQLServer(BaseFixedMacro, BaseConcat):
86+
@pytest.fixture(scope="class")
87+
def seeds(self):
88+
return {
89+
"data_concat.csv": """input_1,input_2,output
90+
a,b,ab
91+
a,,a
92+
,b,b
93+
"""
94+
}
7295

7396

74-
class TestDateTruncSQLServer(BaseDateTrunc):
97+
class TestDateTruncSQLServer(BaseFixedMacro, BaseDateTrunc):
7598
pass
7699

77100

78-
class TestHashSQLServer(BaseHash):
79-
pass
101+
seeds__data_hash_csv = """input_1,output
102+
ab,187ef4436122d1cc2f40dc2b92f0eba0
103+
a,0cc175b9c0f1b6a831c399e269772661
104+
1,c4ca4238a0b923820dcc509a6f75849b
105+
,d41d8cd98f00b204e9800998ecf8427e"""
80106

81107

82-
class TestStringLiteralSQLServer(BaseStringLiteral):
108+
class TestHashSQLServer(BaseFixedMacro, BaseHash):
109+
@pytest.fixture(scope="class")
110+
def seeds(self):
111+
return {"data_hash.csv": seeds__data_hash_csv}
112+
113+
114+
class TestStringLiteralSQLServer(BaseFixedMacro, BaseStringLiteral):
83115
pass
84116

85117

86-
class TestSplitPartSQLServer(BaseSplitPart):
118+
class TestSplitPartSQLServer(BaseFixedMacro, BaseSplitPart):
87119
pass
88120

89121

90-
class TestDateDiffSQLServer(BaseDateDiff):
122+
class TestDateDiffSQLServer(BaseFixedMacro, BaseDateDiff):
91123
pass
92124

93125

94-
class TestEscapeSingleQuotesSQLServer(BaseEscapeSingleQuotesQuote):
126+
class TestEscapeSingleQuotesSQLServer(BaseFixedMacro, BaseEscapeSingleQuotesQuote):
95127
pass
96128

97129

98-
class TestIntersectSQLServer(BaseIntersect):
130+
class TestIntersectSQLServer(BaseFixedMacro, BaseIntersect):
99131
pass
100132

101133

102-
class TestLastDaySQLServer(BaseLastDay):
134+
class TestLastDaySQLServer(BaseFixedMacro, BaseLastDay):
103135
pass
104136

105137

106-
class TestLengthSQLServer(BaseLength):
138+
class TestLengthSQLServer(BaseFixedMacro, BaseLength):
107139
pass
108140

109141

110-
class TestListaggSQLServer(BaseListagg):
142+
class TestListaggSQLServer(BaseFixedMacro, BaseListagg):
111143
# Only supported in SQL Server 2017 and later or cloud versions
112144
# DISTINCT not supported
113145
# limit not supported
114-
115146
@pytest.fixture(scope="class")
116147
def seeds(self):
117148
seeds__data_listagg_output_csv = """group_col,expected,version
@@ -190,15 +221,15 @@ def models(self):
190221
}
191222

192223

193-
class TestRightSQLServer(BaseRight):
224+
class TestRightSQLServer(BaseFixedMacro, BaseRight):
194225
pass
195226

196227

197-
class TestSafeCastSQLServer(BaseSafeCast):
228+
class TestSafeCastSQLServer(BaseFixedMacro, BaseSafeCast):
198229
pass
199230

200231

201-
class TestDateAddSQLServer(BaseDateAdd):
232+
class TestDateAddSQLServer(BaseFixedMacro, BaseDateAdd):
202233
@pytest.fixture(scope="class")
203234
def project_config_update(self):
204235
return {
@@ -216,15 +247,15 @@ def project_config_update(self):
216247
}
217248

218249

219-
class TestExceptSQLServer(BaseExcept):
250+
class TestExceptSQLServer(BaseFixedMacro, BaseExcept):
220251
pass
221252

222253

223-
class TestPositionSQLServer(BasePosition):
254+
class TestPositionSQLServer(BaseFixedMacro, BasePosition):
224255
pass
225256

226257

227-
class TestReplaceSQLServer(BaseReplace):
258+
class TestReplaceSQLServer(BaseFixedMacro, BaseReplace):
228259
pass
229260

230261

@@ -233,15 +264,15 @@ class TestCurrentTimestampSQLServer(BaseCurrentTimestampNaive):
233264

234265

235266
@pytest.mark.skip(reason="arrays not supported")
236-
class TestArrayAppendSQLServer(BaseArrayAppend):
267+
class TestArrayAppendSQLServer(BaseFixedMacro, BaseArrayAppend):
237268
pass
238269

239270

240-
@pytest.mark.skip(reason="arrays not supported")
241-
class TestArrayConcatSQLServer(BaseArrayConcat):
271+
@pytest.mark.skip(reason="arrays not supporteTd")
272+
class TestArrayConcatSQLServer(BaseFixedMacro, BaseArrayConcat):
242273
pass
243274

244275

245276
@pytest.mark.skip(reason="arrays not supported")
246-
class TestArrayConstructSQLServer(BaseArrayConstruct):
277+
class TestArrayConstructSQLServer(BaseFixedMacro, BaseArrayConstruct):
247278
pass

0 commit comments

Comments
 (0)