30
30
from dbt .tests .adapter .utils .test_string_literal import BaseStringLiteral
31
31
32
32
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 ):
34
49
pass
35
50
36
51
37
52
@pytest .mark .skip ("bool_or not supported in this adapter" )
38
- class TestBoolOrSQLServer (BaseBoolOr ):
53
+ class TestBoolOrSQLServer (BaseFixedMacro , BaseBoolOr ):
39
54
pass
40
55
41
56
42
- class TestCastBoolToTextSQLServer (BaseCastBoolToText ):
57
+ class TestCastBoolToTextSQLServer (BaseFixedMacro , BaseCastBoolToText ):
43
58
@pytest .fixture (scope = "class" )
44
59
def models (self ):
45
60
models__test_cast_bool_to_text_sql = """
@@ -67,51 +82,67 @@ def models(self):
67
82
}
68
83
69
84
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
+ }
72
95
73
96
74
- class TestDateTruncSQLServer (BaseDateTrunc ):
97
+ class TestDateTruncSQLServer (BaseFixedMacro , BaseDateTrunc ):
75
98
pass
76
99
77
100
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"""
80
106
81
107
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 ):
83
115
pass
84
116
85
117
86
- class TestSplitPartSQLServer (BaseSplitPart ):
118
+ class TestSplitPartSQLServer (BaseFixedMacro , BaseSplitPart ):
87
119
pass
88
120
89
121
90
- class TestDateDiffSQLServer (BaseDateDiff ):
122
+ class TestDateDiffSQLServer (BaseFixedMacro , BaseDateDiff ):
91
123
pass
92
124
93
125
94
- class TestEscapeSingleQuotesSQLServer (BaseEscapeSingleQuotesQuote ):
126
+ class TestEscapeSingleQuotesSQLServer (BaseFixedMacro , BaseEscapeSingleQuotesQuote ):
95
127
pass
96
128
97
129
98
- class TestIntersectSQLServer (BaseIntersect ):
130
+ class TestIntersectSQLServer (BaseFixedMacro , BaseIntersect ):
99
131
pass
100
132
101
133
102
- class TestLastDaySQLServer (BaseLastDay ):
134
+ class TestLastDaySQLServer (BaseFixedMacro , BaseLastDay ):
103
135
pass
104
136
105
137
106
- class TestLengthSQLServer (BaseLength ):
138
+ class TestLengthSQLServer (BaseFixedMacro , BaseLength ):
107
139
pass
108
140
109
141
110
- class TestListaggSQLServer (BaseListagg ):
142
+ class TestListaggSQLServer (BaseFixedMacro , BaseListagg ):
111
143
# Only supported in SQL Server 2017 and later or cloud versions
112
144
# DISTINCT not supported
113
145
# limit not supported
114
-
115
146
@pytest .fixture (scope = "class" )
116
147
def seeds (self ):
117
148
seeds__data_listagg_output_csv = """group_col,expected,version
@@ -190,15 +221,15 @@ def models(self):
190
221
}
191
222
192
223
193
- class TestRightSQLServer (BaseRight ):
224
+ class TestRightSQLServer (BaseFixedMacro , BaseRight ):
194
225
pass
195
226
196
227
197
- class TestSafeCastSQLServer (BaseSafeCast ):
228
+ class TestSafeCastSQLServer (BaseFixedMacro , BaseSafeCast ):
198
229
pass
199
230
200
231
201
- class TestDateAddSQLServer (BaseDateAdd ):
232
+ class TestDateAddSQLServer (BaseFixedMacro , BaseDateAdd ):
202
233
@pytest .fixture (scope = "class" )
203
234
def project_config_update (self ):
204
235
return {
@@ -216,15 +247,15 @@ def project_config_update(self):
216
247
}
217
248
218
249
219
- class TestExceptSQLServer (BaseExcept ):
250
+ class TestExceptSQLServer (BaseFixedMacro , BaseExcept ):
220
251
pass
221
252
222
253
223
- class TestPositionSQLServer (BasePosition ):
254
+ class TestPositionSQLServer (BaseFixedMacro , BasePosition ):
224
255
pass
225
256
226
257
227
- class TestReplaceSQLServer (BaseReplace ):
258
+ class TestReplaceSQLServer (BaseFixedMacro , BaseReplace ):
228
259
pass
229
260
230
261
@@ -233,15 +264,15 @@ class TestCurrentTimestampSQLServer(BaseCurrentTimestampNaive):
233
264
234
265
235
266
@pytest .mark .skip (reason = "arrays not supported" )
236
- class TestArrayAppendSQLServer (BaseArrayAppend ):
267
+ class TestArrayAppendSQLServer (BaseFixedMacro , BaseArrayAppend ):
237
268
pass
238
269
239
270
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 ):
242
273
pass
243
274
244
275
245
276
@pytest .mark .skip (reason = "arrays not supported" )
246
- class TestArrayConstructSQLServer (BaseArrayConstruct ):
277
+ class TestArrayConstructSQLServer (BaseFixedMacro , BaseArrayConstruct ):
247
278
pass
0 commit comments