@@ -28,21 +28,18 @@ public class ChangeHandlerTests
28
28
private readonly Mock < DaprClient > _mockDaprClient ;
29
29
private readonly Mock < IChangeFormatterFactory > _mockFormatterFactory ;
30
30
private readonly Mock < ILogger < ChangeHandler > > _mockLogger ;
31
- private readonly Mock < IQueryFailureTracker > _mockFailureTracker ;
32
31
private readonly ChangeHandler _handler ;
33
32
34
33
public ChangeHandlerTests ( )
35
34
{
36
35
_mockDaprClient = new Mock < DaprClient > ( ) ;
37
36
_mockFormatterFactory = new Mock < IChangeFormatterFactory > ( ) ;
38
37
_mockLogger = new Mock < ILogger < ChangeHandler > > ( ) ;
39
- _mockFailureTracker = new Mock < IQueryFailureTracker > ( ) ;
40
38
41
39
_handler = new ChangeHandler (
42
40
_mockDaprClient . Object ,
43
41
_mockFormatterFactory . Object ,
44
- _mockLogger . Object ,
45
- _mockFailureTracker . Object
42
+ _mockLogger . Object
46
43
) ;
47
44
}
48
45
@@ -56,22 +53,6 @@ public async Task HandleChange_NullConfig_ThrowsArgumentNullException()
56
53
await Assert . ThrowsAsync < ArgumentNullException > ( ( ) => _handler . HandleChange ( evt , null ) ) ;
57
54
}
58
55
59
- [ Fact ]
60
- public async Task HandleChange_QueryInFailedState_ThrowsInvalidOperationException ( )
61
- {
62
- // Arrange
63
- var evt = new ChangeEvent { QueryId = "test-query" } ;
64
- var config = new QueryConfig { PubsubName = "test-pubsub" , TopicName = "test-topic" } ;
65
-
66
- _mockFailureTracker . Setup ( ft => ft . IsQueryFailed ( "test-query" ) ) . Returns ( true ) ;
67
- _mockFailureTracker . Setup ( ft => ft . GetFailureReason ( "test-query" ) ) . Returns ( "Test failure reason" ) ;
68
-
69
- // Act & Assert
70
- var ex = await Assert . ThrowsAsync < InvalidOperationException > ( ( ) => _handler . HandleChange ( evt , config ) ) ;
71
- Assert . Contains ( "test-query" , ex . Message ) ;
72
- Assert . Contains ( "Test failure reason" , ex . Message ) ;
73
- }
74
-
75
56
[ Fact ]
76
57
public async Task HandleChange_PackedFormat_PublishesPackedEvent ( )
77
58
{
@@ -83,10 +64,9 @@ public async Task HandleChange_PackedFormat_PublishesPackedEvent()
83
64
var config = new QueryConfig {
84
65
PubsubName = "test-pubsub" ,
85
66
TopicName = "test-topic" ,
86
- Packed = true
67
+ Format = OutputFormat . Packed
87
68
} ;
88
69
89
- _mockFailureTracker . Setup ( ft => ft . IsQueryFailed ( "test-query" ) ) . Returns ( false ) ;
90
70
_mockDaprClient . Setup ( dc => dc . PublishEventAsync (
91
71
config . PubsubName ,
92
72
config . TopicName ,
@@ -104,8 +84,6 @@ public async Task HandleChange_PackedFormat_PublishesPackedEvent()
104
84
It . IsAny < JsonElement > ( ) ,
105
85
It . IsAny < CancellationToken > ( )
106
86
) , Times . Once ) ;
107
-
108
- _mockFailureTracker . Verify ( ft => ft . ResetFailures ( "test-query" ) , Times . Once ) ;
109
87
}
110
88
111
89
[ Fact ]
@@ -119,7 +97,7 @@ public async Task HandleChange_UnpackedFormat_PublishesUnpackedEvents()
119
97
var config = new QueryConfig {
120
98
PubsubName = "test-pubsub" ,
121
99
TopicName = "test-topic" ,
122
- Packed = false // Unpacked is default
100
+ Format = OutputFormat . Unpacked
123
101
} ;
124
102
125
103
var mockFormatter = new Mock < IChangeFormatter > ( ) ;
@@ -130,7 +108,6 @@ public async Task HandleChange_UnpackedFormat_PublishesUnpackedEvents()
130
108
mockFormatter . Setup ( f => f . Format ( evt ) ) . Returns ( formattedElements ) ;
131
109
_mockFormatterFactory . Setup ( ff => ff . GetFormatter ( ) ) . Returns ( mockFormatter . Object ) ;
132
110
133
- _mockFailureTracker . Setup ( ft => ft . IsQueryFailed ( "test-query" ) ) . Returns ( false ) ;
134
111
_mockDaprClient . Setup ( dc => dc . PublishEventAsync (
135
112
config . PubsubName ,
136
113
config . TopicName ,
@@ -150,85 +127,31 @@ public async Task HandleChange_UnpackedFormat_PublishesUnpackedEvents()
150
127
It . IsAny < JsonElement > ( ) ,
151
128
It . IsAny < CancellationToken > ( )
152
129
) , Times . Once ) ;
153
-
154
- _mockFailureTracker . Verify ( ft => ft . ResetFailures ( "test-query" ) , Times . Once ) ;
155
130
}
156
131
157
132
[ Fact ]
158
- public async Task HandleChange_PublishFails_RecordsFailureAndRethrows ( )
133
+ public async Task HandleChange_PublishFails_ThrowsException ( )
159
134
{
160
135
// Arrange
161
136
var evt = new ChangeEvent { QueryId = "test-query" } ;
162
137
var config = new QueryConfig {
163
138
PubsubName = "test-pubsub" ,
164
139
TopicName = "test-topic" ,
165
- Packed = true ,
166
- MaxFailureCount = 3
140
+ Format = OutputFormat . Packed
167
141
} ;
168
142
169
143
var exception = new DaprException ( "Test error" ) ;
170
144
171
- _mockFailureTracker . Setup ( ft => ft . IsQueryFailed ( "test-query" ) ) . Returns ( false ) ;
172
145
_mockDaprClient . Setup ( dc => dc . PublishEventAsync (
173
146
config . PubsubName ,
174
147
config . TopicName ,
175
148
It . IsAny < JsonElement > ( ) ,
176
149
It . IsAny < CancellationToken > ( ) ) )
177
150
. ThrowsAsync ( exception ) ;
178
151
179
- _mockFailureTracker . Setup ( ft => ft . RecordFailure (
180
- "test-query" ,
181
- config . MaxFailureCount ,
182
- It . IsAny < string > ( ) ) )
183
- . Returns ( false ) ; // Not yet failed
184
-
185
152
// Act & Assert
186
153
var ex = await Assert . ThrowsAsync < DaprException > ( ( ) => _handler . HandleChange ( evt , config ) ) ;
187
154
Assert . Same ( exception , ex ) ;
188
-
189
- _mockFailureTracker . Verify ( ft => ft . RecordFailure (
190
- "test-query" ,
191
- config . MaxFailureCount ,
192
- It . IsAny < string > ( )
193
- ) , Times . Once ) ;
194
- }
195
-
196
- [ Fact ]
197
- public async Task HandleChange_MultipleFailuresExceedingThreshold_MarksQueryAsFailed ( )
198
- {
199
- // Arrange
200
- var evt = new ChangeEvent { QueryId = "test-query" } ;
201
- var config = new QueryConfig {
202
- PubsubName = "test-pubsub" ,
203
- TopicName = "test-topic" ,
204
- Packed = true ,
205
- MaxFailureCount = 3
206
- } ;
207
-
208
- var exception = new DaprException ( "Test error" ) ;
209
-
210
- _mockFailureTracker . Setup ( ft => ft . IsQueryFailed ( "test-query" ) ) . Returns ( false ) ;
211
- _mockDaprClient . Setup ( dc => dc . PublishEventAsync (
212
- config . PubsubName ,
213
- config . TopicName ,
214
- It . IsAny < JsonElement > ( ) ,
215
- It . IsAny < CancellationToken > ( ) ) )
216
- . ThrowsAsync ( exception ) ;
217
-
218
- _mockFailureTracker . Setup ( ft => ft . RecordFailure (
219
- "test-query" ,
220
- config . MaxFailureCount ,
221
- It . IsAny < string > ( ) ) )
222
- . Returns ( true ) ; // Query is now failed
223
-
224
- // Act & Assert
225
- await Assert . ThrowsAsync < DaprException > ( ( ) => _handler . HandleChange ( evt , config ) ) ;
226
-
227
- _mockFailureTracker . Verify ( ft => ft . RecordFailure (
228
- "test-query" ,
229
- config . MaxFailureCount ,
230
- It . IsAny < string > ( )
231
- ) , Times . Once ) ;
232
155
}
233
156
234
157
[ Fact ]
@@ -245,7 +168,7 @@ public async Task HandleChange_MultipleUnpackedEvents_PublishesEachEvent()
245
168
var config = new QueryConfig {
246
169
PubsubName = "test-pubsub" ,
247
170
TopicName = "test-topic" ,
248
- Packed = false // Unpacked
171
+ Format = OutputFormat . Unpacked
249
172
} ;
250
173
251
174
var mockFormatter = new Mock < IChangeFormatter > ( ) ;
@@ -257,7 +180,6 @@ public async Task HandleChange_MultipleUnpackedEvents_PublishesEachEvent()
257
180
mockFormatter . Setup ( f => f . Format ( evt ) ) . Returns ( formattedElements ) ;
258
181
_mockFormatterFactory . Setup ( ff => ff . GetFormatter ( ) ) . Returns ( mockFormatter . Object ) ;
259
182
260
- _mockFailureTracker . Setup ( ft => ft . IsQueryFailed ( "test-query" ) ) . Returns ( false ) ;
261
183
_mockDaprClient . Setup ( dc => dc . PublishEventAsync (
262
184
config . PubsubName ,
263
185
config . TopicName ,
0 commit comments