PASSED

tSQLt SQL E2E

Generated at 2026-10-07T20:16:59.796Z. Raw output: run-tsqlt-output.txt. Structured data: results.json.

Total
518
Passed
518
Failed
0
Skipped
0
Errored
0
Modules
23

Module Summary

Module Total Passed Failed Skipped Errored
DIM_Dimensions_Tests 8 8 0 0 0
DIM_ProfileInspections_Tests 14 14 0 0 0
DIM_ProfileSpecs_Tests 45 45 0 0 0
LAB_EvaluateMechanicalResult_Tests 13 13 0 0 0
LAB_TensileRequirements_Tests 16 16 0 0 0
M2_CarrierInstancesPasses_Tests 31 31 0 0 0
M2_CarrierProtection_Tests 48 48 0 0 0
M2_DeleteEvent_Tests 4 4 0 0 0
M2_DetectRollsetDisruption_Tests 28 28 0 0 0
M2_DisruptionTracking_Tests 16 16 0 0 0
M2_DraftEvents_Tests 70 70 0 0 0
M2_EdgerRollPass_Tests 15 15 0 0 0
M2_EventErrorHandling_Tests 9 9 0 0 0
M2_EventIntegration_Tests 35 35 0 0 0
M2_GetCampaignsByEventId_Tests 3 3 0 0 0
M2_GetProductionMonth_Tests 6 6 0 0 0
M2_NonProductiveOverlap_Tests 10 10 0 0 0
M2_PassCampaigns_Tests 14 14 0 0 0
M2_ResolveEventCollisions_Tests 48 48 0 0 0
M2_ScheduleCompaction_Tests 22 22 0 0 0
M2_SwapRollsetsRolls_Tests 16 16 0 0 0
M2_SyncCampaignsToProductionEvents_Tests 39 39 0 0 0
M2_TrackPassCampaignsJob_Tests 8 8 0 0 0

Test Results

# Module Test Duration (ms) Result
1 DIM_Dimensions_Tests test DeleteDimension amends a scheduled revision keeping its date and deactivates the original 82 Success
2 DIM_Dimensions_Tests test DeleteDimension amends the revision in force from now on without the dimension 77 Success
3 DIM_Dimensions_Tests test DeleteDimension leaves older published revisions untouched 81 Success
4 DIM_Dimensions_Tests test DeleteDimension numbers a second retirement after the previous amendment 94 Success
5 DIM_Dimensions_Tests test DeleteDimension removes the dimension from drafts without numbering them 114 Success
6 DIM_Dimensions_Tests test PublishSpecsWithoutDimensions rejects leaving a revision without bands 61 Success
7 DIM_Dimensions_Tests test UpsertDimension reactivates a retired dimension when its code is created again 45 Success
8 DIM_Dimensions_Tests test UpsertDimension rejects a code used by an active dimension 77 Success
9 DIM_ProfileInspections_Tests test GetProfileInspections grades each reading against the band of its revision 232 Success
10 DIM_ProfileInspections_Tests test GetProfileInspections uses the revision the sample was judged against 85 Success
11 DIM_ProfileInspections_Tests test UpsertProfileInspection does not judge against a scheduled revision 89 Success
12 DIM_ProfileInspections_Tests test UpsertProfileInspection ignores a campaign that starts after the sample 106 Success
13 DIM_ProfileInspections_Tests test UpsertProfileInspection judges against a scheduled revision as soon as its date passes 89 Success
14 DIM_ProfileInspections_Tests test UpsertProfileInspection pins again when an edit moves SampledAt 98 Success
15 DIM_ProfileInspections_Tests test UpsertProfileInspection pins the revision in force when the sample was taken 150 Success
16 DIM_ProfileInspections_Tests test UpsertProfileInspection rejects a dimension the revision does not measure 77 Success
17 DIM_ProfileInspections_Tests test UpsertProfileInspection rejects a heat id that does not exist 105 Success
18 DIM_ProfileInspections_Tests test UpsertProfileInspection rejects a heat name of neither year 109 Success
19 DIM_ProfileInspections_Tests test UpsertProfileInspection resolves a heat with no campaign from the previous year 114 Success
20 DIM_ProfileInspections_Tests test UpsertProfileInspection stores a heat rolled on another section without its campaign 114 Success
21 DIM_ProfileInspections_Tests test UpsertProfileInspection takes the campaign of a heat sent by id 106 Success
22 DIM_ProfileInspections_Tests test UpsertProfileInspection takes the heat and campaign from the campaign that was running 146 Success
23 DIM_ProfileSpecs_Tests test CK_DIM_ProfileSpecDimensions_Band accepts null limits 77 Success
24 DIM_ProfileSpecs_Tests test ConfirmProfileSpec accepts an explicit Rev only above the last one 61 Success
25 DIM_ProfileSpecs_Tests test ConfirmProfileSpec accepts the same date as a previous revision without inspections 113 Success
26 DIM_ProfileSpecs_Tests test ConfirmProfileSpec numbers the revision after the last confirmed one 77 Success
27 DIM_ProfileSpecs_Tests test ConfirmProfileSpec rejects a date before a previous revision without inspections 73 Success
28 DIM_ProfileSpecs_Tests test ConfirmProfileSpec rejects a date equal to the last inspection of the previous revision 90 Success
29 DIM_ProfileSpecs_Tests test ConfirmProfileSpec rejects a revision already confirmed 62 Success
30 DIM_ProfileSpecs_Tests test ConfirmProfileSpec with a future EffectiveDate leaves the revision scheduled 65 Success
31 DIM_ProfileSpecs_Tests test ConfirmProfileSpec without EffectiveDate publishes the revision now 49 Success
32 DIM_ProfileSpecs_Tests test CorrectProfileSpec changes Rev and EffectiveDate of a revision without inspections 121 Success
33 DIM_ProfileSpecs_Tests test CorrectProfileSpec changes the bands of a revision with inspections in place 102 Success
34 DIM_ProfileSpecs_Tests test CorrectProfileSpec keeps Rev and EffectiveDate when they are not sent 89 Success
35 DIM_ProfileSpecs_Tests test CorrectProfileSpec rejects a Rev not above the revision it replaces 90 Success
36 DIM_ProfileSpecs_Tests test CorrectProfileSpec rejects a revision that is not the last one 65 Success
37 DIM_ProfileSpecs_Tests test CorrectProfileSpec rejects a user without the permission 57 Success
38 DIM_ProfileSpecs_Tests test CorrectProfileSpec rejects an EffectiveDate before the revision it replaces 73 Success
39 DIM_ProfileSpecs_Tests test CorrectProfileSpec rejects changing the effective date of a revision with inspections 69 Success
40 DIM_ProfileSpecs_Tests test CorrectProfileSpec rejects removing a dimension measured by an inspection 98 Success
41 DIM_ProfileSpecs_Tests test CorrectProfileSpec removes a dimension that no inspection measured 199 Success
42 DIM_ProfileSpecs_Tests test DeleteProfileSpec amends the revision back in force when it has a retired dimension 77 Success
43 DIM_ProfileSpecs_Tests test DeleteProfileSpec brings the previous revision back in force 110 Success
44 DIM_ProfileSpecs_Tests test DeleteProfileSpec deletes a published Rev with all its sub-revisions 69 Success
45 DIM_ProfileSpecs_Tests test DeleteProfileSpec rejects a Rev while one of its sub-revisions has active inspections 77 Success
46 DIM_ProfileSpecs_Tests test GetProfileSpec returns a scheduled revision by id as S and SCHEDULED 57 Success
47 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec rejects a published revision that is not the last one 78 Success
48 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec rejects a revision while the section has a draft 77 Success
49 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec rejects a revision with sub-revisions 40 Success
50 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec rejects the revision in force when it has inspections 90 Success
51 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec rejects the revision in force without the permission 93 Success
52 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec sends a scheduled revision back to draft with its bands 97 Success
53 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec sends a scheduled revision back to draft without the permission 53 Success
54 DIM_ProfileSpecs_Tests test UnscheduleProfileSpec sends the revision in force back to draft and Confirm reuses its number 85 Success
55 DIM_ProfileSpecs_Tests test UpsertProfileSpec accepts a band with null limits 65 Success
56 DIM_ProfileSpecs_Tests test UpsertProfileSpec creates a draft without Rev or EffectiveDate 61 Success
57 DIM_ProfileSpecs_Tests test UpsertProfileSpec opens a draft when a published revision is edited 77 Success
58 DIM_ProfileSpecs_Tests test UpsertProfileSpec rejects a band out of order 65 Success
59 DIM_ProfileSpecs_Tests test UpsertProfileSpec rejects a new draft when the section already has one 102 Success
60 DIM_ProfileSpecs_Tests test UpsertProfileSpec rejects a new draft while a revision is scheduled 114 Success
61 DIM_ProfileSpecs_Tests test UpsertProfileSpec rejects an unknown or retired dimension code 37 Success
62 DIM_ProfileSpecs_Tests test UpsertProfileSpec rejects editing a scheduled revision 61 Success
63 DIM_ProfileSpecs_Tests test UpsertProfileSpec with null id creates a draft without changing the published revision 102 Success
64 DIM_ProfileSpecs_Tests test UpsertProfileSpec writes a first drawing onto the published revision 85 Success
65 DIM_ProfileSpecs_Tests test vProfileSpecs shows a confirmed revision whose EffectiveDate has passed as P 36 Success
66 DIM_ProfileSpecs_Tests test vProfileSpecs shows a confirmed revision with a future EffectiveDate as S 77 Success
67 DIM_ProfileSpecs_Tests test vProfileSpecs shows a draft as D 52 Success
68 LAB_EvaluateMechanicalResult_Tests test Elongation is never converted 0 Success
69 LAB_EvaluateMechanicalResult_Tests test ksi limits are not converted 4 Success
70 LAB_EvaluateMechanicalResult_Tests test missing Yield fails when a min is required 4 Success
71 LAB_EvaluateMechanicalResult_Tests test Passed is NULL when there is nothing to check 0 Success
72 LAB_EvaluateMechanicalResult_Tests test RA missing with section but no grade limit does not fail 0 Success
73 LAB_EvaluateMechanicalResult_Tests test RA missing with section demanding it fails 4 Success
74 LAB_EvaluateMechanicalResult_Tests test RA missing without section does not fail 0 Success
75 LAB_EvaluateMechanicalResult_Tests test RA present below min is judged regardless of section 8 Success
76 LAB_EvaluateMechanicalResult_Tests test RA present in range with section and grade passes 0 Success
77 LAB_EvaluateMechanicalResult_Tests test Tensile max in N per mm2 fails above converted max 4 Success
78 LAB_EvaluateMechanicalResult_Tests test Yield in N per mm2 fails below converted min 0 Success
79 LAB_EvaluateMechanicalResult_Tests test Yield in N per mm2 passes after conversion 7 Success
80 LAB_EvaluateMechanicalResult_Tests test Yield in PSI fails below converted min 4 Success
81 LAB_TensileRequirements_Tests test ConfirmTensileRequirementVersion throws error when EffectiveDate is NULL 53 Success
82 LAB_TensileRequirements_Tests test CorrectHeatGrades updates GradeId when swv-mes has different grade 53 Success
83 LAB_TensileRequirements_Tests test Disposition fails if any retest sample fails 114 Success
84 LAB_TensileRequirements_Tests test Disposition ignores a grade missing from the version in force 78 Success
85 LAB_TensileRequirements_Tests test Disposition returns P when all samples pass 77 Success
86 LAB_TensileRequirements_Tests test Disposition returns U when any sample fails 114 Success
87 LAB_TensileRequirements_Tests test Disposition returns U when one of multiple samples fails 118 Success
88 LAB_TensileRequirements_Tests test Disposition uses corrected grade after grade correction 93 Success
89 LAB_TensileRequirements_Tests test Disposition uses latest run only - retest supersedes 89 Success
90 LAB_TensileRequirements_Tests test Disposition uses version effective at reception time 86 Success
91 LAB_TensileRequirements_Tests test UpsertTensileRequirements creates a draft that confirm numbers 130 Success
92 LAB_TensileRequirements_Tests test UpsertTensileRequirements throws error when Rows is invalid JSON 106 Success
93 LAB_TensileRequirements_Tests test UpsertTensileRequirements throws error when the version is confirmed 41 Success
94 LAB_TensileRequirements_Tests test YieldPassed returns 0 when value above max 69 Success
95 LAB_TensileRequirements_Tests test YieldPassed returns 0 when value below min 81 Success
96 LAB_TensileRequirements_Tests test YieldPassed returns 1 when value in range 98 Success
97 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass deletes non-last record 191 Success
98 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails for last record 126 Success
99 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails when already deleted 187 Success
100 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails with non-existent id 98 Success
101 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass fails without id 176 Success
102 M2_CarrierInstancesPasses_Tests test DeleteCarrierInstancePass removes PassCampaign 130 Success
103 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes adjusts first record StartedAt 172 Success
104 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes adjusts only f<...>tedAt to InstalledAt and last EndedAt to UninstalledAt when window changes 244 Success
105 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes adjusts only first StartedAt to InstalledAt when window shifts keeping same duration 200 Success
106 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes chains EndedAt for multiple records 138 Success
107 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes does not scale single pass 151 Success
108 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes does not scale when window unchanged 204 Success
109 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes fails with non-existent CarrierInstance 69 Success
110 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes fails without CarrierInstanceId 98 Success
111 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes fails without EdgerRollPartId 147 Success
112 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes recalculates only the specified EdgerRoll leaving other rolls unchanged 127 Success
113 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes returns 0 when no records 213 Success
114 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes scales passes proportionally when window expands 283 Success
115 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes sets EndedAt to UninstalledAt for single record 200 Success
116 M2_CarrierInstancesPasses_Tests test RecalculatePassTimes sets NULL EndedAt when not uninstalled 163 Success
117 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass creates first record with InstalledAt 220 Success
118 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass creates with explicit StartedAt 224 Success
119 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails changing to same active pass 134 Success
120 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails when EdgerRoll not in Rollset 136 Success
121 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with non-existent CarrierInstance 155 Success
122 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with non-existent pass 168 Success
123 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with StartedAt after UninstalledAt 114 Success
124 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails with StartedAt before InstalledAt 167 Success
125 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails without CarrierInstanceId 131 Success
126 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass fails without EdgerRollPartId 126 Success
127 M2_CarrierInstancesPasses_Tests test UpsertCarrierInstancePass replaces record with same StartedAt 200 Success
128 M2_CarrierProtection_Tests test DeleteArbor deactivates UniversalRoll Part 320 Success
129 M2_CarrierProtection_Tests test DeleteArbor fails when carrier status is U 291 Success
130 M2_CarrierProtection_Tests test DeleteArbor in rollset deactivates UR and rollset 250 Success
131 M2_CarrierProtection_Tests test DeleteArbor succeeds when arbor not in any universal roll 234 Success
132 M2_CarrierProtection_Tests test DeleteArbor succeeds when carrier status is X 329 Success
133 M2_CarrierProtection_Tests test DeleteArbor succeeds when rollset has no carrier 338 Success
134 M2_CarrierProtection_Tests test DeleteArbor succeeds when universal roll not in rollset 274 Success
135 M2_CarrierProtection_Tests test DeleteDonut fails when carrier status is C 138 Success
136 M2_CarrierProtection_Tests test DeleteDonut fails when carrier status is S 188 Success
137 M2_CarrierProtection_Tests test DeleteDonut in rollset updates UR and deactivates rollset 306 Success
138 M2_CarrierProtection_Tests test DeleteDonut keeps UniversalRoll active 245 Success
139 M2_CarrierProtection_Tests test DeleteDonut multiple donuts succeeds when none in active carrier 158 Success
140 M2_CarrierProtection_Tests test DeleteDonut sets UniversalRoll DonutPartId to NULL 200 Success
141 M2_CarrierProtection_Tests test DeleteDonut succeeds when carrier status is F 245 Success
142 M2_CarrierProtection_Tests test DeleteDonut succeeds when donut not in any universal roll 230 Success
143 M2_CarrierProtection_Tests test DeleteDonut succeeds when rollset has no carrier 250 Success
144 M2_CarrierProtection_Tests test DeleteDonut succeeds when universal roll not in rollset 241 Success
145 M2_CarrierProtection_Tests test DeleteRoll deactivates rollset when carrier status is E 270 Success
146 M2_CarrierProtection_Tests test DeleteRoll deactivates rollset when no carrier instance 297 Success
147 M2_CarrierProtection_Tests test DeleteRoll edger deactivates rollset when carrier status is F 147 Success
148 M2_CarrierProtection_Tests test DeleteRoll edger deactivates rollset when no carrier 221 Success
149 M2_CarrierProtection_Tests test DeleteRoll edger fails when carrier status is A 130 Success
150 M2_CarrierProtection_Tests test DeleteRoll edger fails when carrier status is I 216 Success
151 M2_CarrierProtection_Tests test DeleteRoll edger succeeds when not in any rollset 143 Success
152 M2_CarrierProtection_Tests test DeleteRoll error message contains carrier name 174 Success
153 M2_CarrierProtection_Tests test DeleteRoll error message contains CarrierInstanceId 180 Success
154 M2_CarrierProtection_Tests test DeleteRoll error message contains roll name 191 Success
155 M2_CarrierProtection_Tests test DeleteRoll fails when carrier status is A 151 Success
156 M2_CarrierProtection_Tests test DeleteRoll fails when carrier status is I 304 Success
157 M2_CarrierProtection_Tests test DeleteRoll multiple rolls fails if any in active carrier 172 Success
158 M2_CarrierProtection_Tests test DeleteRoll roll stays active when blocked 131 Success
159 M2_CarrierProtection_Tests test DeleteRoll succeeds when roll not in any rollset 295 Success
160 M2_CarrierProtection_Tests test UpsertRollset change rolls fails when in active carrier 274 Success
161 M2_CarrierProtection_Tests test UpsertRollset deactivate fails when in active carrier 312 Success
162 M2_CarrierProtection_Tests test UpsertRollset implicit deactivation fails when other in active carrier 282 Success
163 M2_CarrierProtection_Tests test UpsertRollset implicit deactivation succeeds when no carrier 625 Success
164 M2_CarrierProtection_Tests test UpsertRollset use roll from active carrier fails 200 Success
165 M2_CarrierProtection_Tests test UpsertUniversalRoll change arbor fails when in active carrier 259 Success
166 M2_CarrierProtection_Tests test UpsertUniversalRoll change arbor succeeds when carrier status E 398 Success
167 M2_CarrierProtection_Tests test UpsertUniversalRoll change arbor succeeds when no rollset 637 Success
168 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut fails when in active carrier 151 Success
169 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut in rollset deactivates rollset 458 Success
170 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut succeeds when carrier status F 493 Success
171 M2_CarrierProtection_Tests test UpsertUniversalRoll change donut succeeds when no rollset 575 Success
172 M2_CarrierProtection_Tests test UpsertUniversalRoll remove arbor fails when in active carrier 419 Success
173 M2_CarrierProtection_Tests test UpsertUniversalRoll remove arbor succeeds when no rollset 525 Success
174 M2_CarrierProtection_Tests test UpsertUniversalRoll remove donut fails when in active carrier 299 Success
175 M2_CarrierProtection_Tests test UpsertUniversalRoll remove donut succeeds when no rollset 674 Success
176 M2_DeleteEvent_Tests test Delete: matched delete leaves no Production overlap 90 Success
177 M2_DeleteEvent_Tests test Delete: matched Production event keeps its End 119 Success
178 M2_DeleteEvent_Tests test Delete: unmatched Production event is recomputed 115 Success
179 M2_DeleteEvent_Tests test Draft: matched Production event keeps its End 119 Success
180 M2_DetectRollsetDisruption_Tests test Broken rollset alert includes roll names 204 Success
181 M2_DetectRollsetDisruption_Tests test Broken rollset alert uses past tense 155 Success
182 M2_DetectRollsetDisruption_Tests test Default diameter tolerance is zero 165 Success
183 M2_DetectRollsetDisruption_Tests test Diameter mismatch alert created when exceeds tolerance 301 Success
184 M2_DetectRollsetDisruption_Tests test Diameter mismatch alert has no mm unit 154 Success
185 M2_DetectRollsetDisruption_Tests test Diameter tolerance from catSettings 368 Success
186 M2_DetectRollsetDisruption_Tests test Disruption created when affected rollsets exist 139 Success
187 M2_DetectRollsetDisruption_Tests test Handles missing diameter data gracefully 196 Success
188 M2_DetectRollsetDisruption_Tests test Multiple affected rollsets create multiple alerts 163 Success
189 M2_DetectRollsetDisruption_Tests test Multiple alert types created in single disruption 273 Success
190 M2_DetectRollsetDisruption_Tests test No diameter alert when within tolerance 172 Success
191 M2_DetectRollsetDisruption_Tests test No disruption created when no conflicts exist 425 Success
192 M2_DetectRollsetDisruption_Tests test No orphans stored for Swap action 217 Success
193 M2_DetectRollsetDisruption_Tests test No position swap alert for Any position roll 208 Success
194 M2_DetectRollsetDisruption_Tests test No position swap alert when position matches 139 Success
195 M2_DetectRollsetDisruption_Tests test Orphaned rolls identified when breaking rollset 204 Success
196 M2_DetectRollsetDisruption_Tests test Orphans linked to correct RollsetBrokenAlert 188 Success
197 M2_DetectRollsetDisruption_Tests test Orphans stored for Create action 131 Success
198 M2_DetectRollsetDisruption_Tests test Orphans stored for Mix action 289 Success
199 M2_DetectRollsetDisruption_Tests test Position swap alert created for Bottom to Top 179 Success
200 M2_DetectRollsetDisruption_Tests test Position swap alert created for Top to Bottom 207 Success
201 M2_DetectRollsetDisruption_Tests test Position swap alert uses past tense 221 Success
202 M2_DetectRollsetDisruption_Tests test PrevRollsetId adds rollset to affected list 280 Success
203 M2_DetectRollsetDisruption_Tests test PrevRollsetId creates orphans from previous rollset 118 Success
204 M2_DetectRollsetDisruption_Tests test RollsetBrokenAlerts populated for affected rollsets 228 Success
205 M2_DetectRollsetDisruption_Tests test RollshopAlert always created even without alerts 169 Success
206 M2_DetectRollsetDisruption_Tests test RollshopAlert default StatusCode is P 176 Success
207 M2_DetectRollsetDisruption_Tests test RollshopAlert has CreatedBy populated 180 Success
208 M2_DisruptionTracking_Tests test AcknowledgeNotification: Error when already acknowledged 159 Success
209 M2_DisruptionTracking_Tests test AcknowledgeNotification: Status changes from P to A 387 Success
210 M2_DisruptionTracking_Tests test Detection: Diameter mismatch alert created when difference exceeds tolerance 461 Success
211 M2_DisruptionTracking_Tests test Detection: Multiple affected rollsets identified 422 Success
212 M2_DisruptionTracking_Tests test Detection: Multiple orphaned rolls identified 440 Success
213 M2_DisruptionTracking_Tests test Detection: No diameter alert when within tolerance 453 Success
214 M2_DisruptionTracking_Tests test Detection: Position swap alert created for Bottom to Top 369 Success
215 M2_DisruptionTracking_Tests test Detection: Position swap alert created for Top to Bottom 295 Success
216 M2_DisruptionTracking_Tests test Detection: Single affected rollset identified 634 Success
217 M2_DisruptionTracking_Tests test Detection: Single orphaned roll identified 364 Success
218 M2_DisruptionTracking_Tests test ErrorHandling: Rollset created even if detection fails 271 Success
219 M2_DisruptionTracking_Tests test Integration: Multiple alert types in one disruption 392 Success
220 M2_DisruptionTracking_Tests test UpsertRollset: ActionTypeCode C recorded correctly 261 Success
221 M2_DisruptionTracking_Tests test UpsertRollset: ActionTypeCode M recorded correctly 290 Success
222 M2_DisruptionTracking_Tests test UpsertRollset: ActionTypeCode S recorded correctly 378 Success
223 M2_DisruptionTracking_Tests test UpsertRollset: Default ActionTypeCode is C 419 Success
224 M2_DraftEvents_Tests test ConfirmEvents: Deletes Main events not in active Draft 123 Success
225 M2_DraftEvents_Tests test ConfirmEvents: Error when ConfirmUntilEventId not found 82 Success
226 M2_DraftEvents_Tests test ConfirmEvents: Inserts new Draft events to Main 239 Success
227 M2_DraftEvents_Tests test ConfirmEvents: Partial confirmation with ConfirmUntilEventId 127 Success
228 M2_DraftEvents_Tests test ConfirmEvents: Publishes Draft to Main 159 Success
229 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: Deletes from both tables 173 Success
230 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: Error when not found in Draft 53 Success
231 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: Error when not found in Main 106 Success
232 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: IsMatched in Draft prevents deletion 90 Success
233 M2_DraftEvents_Tests test DeleteEvent DeleteMode Both: IsMatched in Main prevents deletion 74 Success
234 M2_DraftEvents_Tests test DeleteEvent DeleteMode Default: Defaults to Main 139 Success
235 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: Dilated event handling in Draft 171 Success
236 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: Error when not found in Draft 53 Success
237 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: IsMatched prevents deletion 176 Success
238 M2_DraftEvents_Tests test DeleteEvent DeleteMode Draft: Only deletes from Draft table 69 Success
239 M2_DraftEvents_Tests test DeleteEvent DeleteMode Invalid: Throws error for invalid mode 57 Success
240 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: Dilated event handling 138 Success
241 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: Error when not found in Main 98 Success
242 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: IsMatched prevents deletion 77 Success
243 M2_DraftEvents_Tests test DeleteEvent DeleteMode Main: Only deletes from Main table 135 Success
244 M2_DraftEvents_Tests test DeleteEvent: Both mode syncs delete to Draft 81 Success
245 M2_DraftEvents_Tests test DeleteEvent: Draft mode does not affect Main 69 Success
246 M2_DraftEvents_Tests test DeleteEvent: Error when EventId not found in Draft 66 Success
247 M2_DraftEvents_Tests test DeleteEvent: Error when EventId not found in Main 98 Success
248 M2_DraftEvents_Tests test DeleteEvent: Error when IsMatched = 1 in Draft mode 98 Success
249 M2_DraftEvents_Tests test DeleteEvent: Error when IsMatched = 1 66 Success
250 M2_DraftEvents_Tests test Edge: ConfirmEvents when already in sync 142 Success
251 M2_DraftEvents_Tests test Edge: Multiple Production events sync correctly 204 Success
252 M2_DraftEvents_Tests test Edge: ResetDraft with empty Main clears Draft 179 Success
253 M2_DraftEvents_Tests test Isolation: Draft and Main can differ 49 Success
254 M2_DraftEvents_Tests test Isolation: Draft changes do not affect Main 102 Success
255 M2_DraftEvents_Tests test MergeToDraft: All production fields sync correctly 135 Success
256 M2_DraftEvents_Tests test MergeToDraft: DELETE soft-deletes in Draft 98 Success
257 M2_DraftEvents_Tests test MergeToDraft: Error when EventId not found 49 Success
258 M2_DraftEvents_Tests test MergeToDraft: Fixed event copies Start/End exactly 314 Success
259 M2_DraftEvents_Tests test MergeToDraft: New Fixed event creates in Draft with cascade 175 Success
260 M2_DraftEvents_Tests test MergeToDraft: Reactivates inactive Draft event on Main update 358 Success
261 M2_DraftEvents_Tests test ResetDraft: Deletes Draft-only events 236 Success
262 M2_DraftEvents_Tests test ResetDraft: Inserts Main-only events to Draft 159 Success
263 M2_DraftEvents_Tests test ResetDraft: Restores Draft from Main 127 Success
264 M2_DraftEvents_Tests test Sync Scenario: Different ScheduledRollingHours in Main and Draft 280 Success
265 M2_DraftEvents_Tests test Sync Scenario: Different Start times preserved until confirmed 155 Success
266 M2_DraftEvents_Tests test Sync Scenario: Different StatusCode in Main and Draft 191 Success
267 M2_DraftEvents_Tests test Sync Scenario: Event active in Main but inactive in Draft 172 Success
268 M2_DraftEvents_Tests test Sync Scenario: Event exists only in Draft 333 Success
269 M2_DraftEvents_Tests test Sync Scenario: Event exists only in Main 131 Success
270 M2_DraftEvents_Tests test Sync Scenario: IsMatched in Main but not in Draft 61 Success
271 M2_DraftEvents_Tests test Sync Scenario: MergeToDraft preserves Draft Start 131 Success
272 M2_DraftEvents_Tests test SyncCampaigns: Creates event in both Main and Draft 226 Success
273 M2_DraftEvents_Tests test SyncDelete: Delete Both then resync recreates both 220 Success
274 M2_DraftEvents_Tests test SyncDelete: Delete Draft preserves Main state 228 Success
275 M2_DraftEvents_Tests test SyncDelete: Delete Draft then resync restores Draft via MergeToDraft 497 Success
276 M2_DraftEvents_Tests test SyncDelete: Delete Main preserves Draft state independently 237 Success
277 M2_DraftEvents_Tests test SyncDelete: Delete Main then resync recreates Main 252 Success
278 M2_DraftEvents_Tests test SyncDelete: IsMatched prevents delete in all modes 272 Success
279 M2_DraftEvents_Tests test UpsertDraftEvent: Create Downtime in Draft 90 Success
280 M2_DraftEvents_Tests test UpsertDraftEvent: Create Holiday only in Draft 528 Success
281 M2_DraftEvents_Tests test UpsertDraftEvent: Create Maintenance in Draft 81 Success
282 M2_DraftEvents_Tests test UpsertDraftEvent: Error when Start is NULL 151 Success
283 M2_DraftEvents_Tests test UpsertDraftProductionEvent: Error when SectionId missing 114 Success
284 M2_DraftEvents_Tests test UpsertDraftProductionEvent: IsMatched allows non-date changes 81 Success
285 M2_DraftEvents_Tests test UpsertDraftProductionEvent: IsMatched prevents date changes 131 Success
286 M2_DraftEvents_Tests test UpsertDraftProductionEvent: New event only in Draft not Main 94 Success
287 M2_DraftEvents_Tests test UpsertDraftProductionEvent: Update only affects Draft not Main 142 Success
288 M2_DraftEvents_Tests test UpsertProductionEvent: Anchor logic positions Draft event correctly 364 Success
289 M2_DraftEvents_Tests test UpsertProductionEvent: IsMatched syncs to Draft 164 Success
290 M2_DraftEvents_Tests test UpsertProductionEvent: New event creates in both Main and Draft 245 Success
291 M2_DraftEvents_Tests test UpsertProductionEvent: No anchor uses Main Start for Draft 167 Success
292 M2_DraftEvents_Tests test UpsertProductionEvent: ScheduledRollingHours change recalculates Draft End 326 Success
293 M2_DraftEvents_Tests test UpsertProductionEvent: Update syncs fields to Draft but not Start 262 Success
294 M2_EdgerRollPass_Tests test UpsertEdgerRollPass adds first pass with defaults 57 Success
295 M2_EdgerRollPass_Tests test UpsertEdgerRollPass adds pass as not diagonal by default 61 Success
296 M2_EdgerRollPass_Tests test UpsertEdgerRollPass adds sequential passes up to 4 49 Success
297 M2_EdgerRollPass_Tests test UpsertEdgerRollPass clears the diagonal on all the passes 65 Success
298 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with inactive PartId 28 Success
299 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with invalid PassNumber 85 Success
300 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with invalid PassStatusCode 41 Success
301 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with non-EdgerRoll Part 33 Success
302 M2_EdgerRollPass_Tests test UpsertEdgerRollPass fails with non-existent PartId 89 Success
303 M2_EdgerRollPass_Tests test UpsertEdgerRollPass keeps IsDiagonal when not provided 41 Success
304 M2_EdgerRollPass_Tests test UpsertEdgerRollPass marks all the passes as diagonal 52 Success
305 M2_EdgerRollPass_Tests test UpsertEdgerRollPass returns PassNumber on update 36 Success
306 M2_EdgerRollPass_Tests test UpsertEdgerRollPass updates IsDiagonal on a single pass 61 Success
307 M2_EdgerRollPass_Tests test UpsertEdgerRollPass updates status to Damaged 48 Success
308 M2_EdgerRollPass_Tests test UpsertEdgerRollPass updates status to Used 41 Success
309 M2_EventErrorHandling_Tests test Cascade: Max cascade iterations throws descriptive error 53 Success
310 M2_EventErrorHandling_Tests test Cascade: Max Fixed resolution iterations throws descriptive error 130 Success
311 M2_EventErrorHandling_Tests test Compaction: Max iterations throws descriptive error 53 Success
312 M2_EventErrorHandling_Tests test Defaults: PreProcessEvent uses fallback limit 81 Success
313 M2_EventErrorHandling_Tests test ErrorMessage: Clean extraction removes technical context 25 Success
314 M2_EventErrorHandling_Tests test PreProcess: Error message contains context information 49 Success
315 M2_EventErrorHandling_Tests test PreProcess: Max iterations reached throws descriptive error 41 Success
316 M2_EventErrorHandling_Tests test Transaction: UpsertEvent rollback on PreProcess error 159 Success
317 M2_EventErrorHandling_Tests test Transaction: UpsertProductionEvent rollback on validation error 36 Success
318 M2_EventIntegration_Tests test Cascade: Long chain with intercalated Fixed 228 Success
319 M2_EventIntegration_Tests test Cascade: Stress test 10 consecutive events 293 Success
320 M2_EventIntegration_Tests test Compact: Blocked by Fixed event 265 Success
321 M2_EventIntegration_Tests test Compact: Complete gap closure 171 Success
322 M2_EventIntegration_Tests test Compact: Preserves dilation downstream 289 Success
323 M2_EventIntegration_Tests test Complex: BaseDuration preserved through complete cycle 252 Success
324 M2_EventIntegration_Tests test Complex: Complete production schedule with Fixed events 343 Success
325 M2_EventIntegration_Tests test Complex: Update triggers cascade and compaction 191 Success
326 M2_EventIntegration_Tests test Create: Production with minimal fields 224 Success
327 M2_EventIntegration_Tests test EdgeCase: Production spans midnight 150 Success
328 M2_EventIntegration_Tests test EdgeCase: Very long BaseDuration 24h 183 Success
329 M2_EventIntegration_Tests test EdgeCase: Very short BaseDuration 5min 216 Success
330 M2_EventIntegration_Tests test Insert: Fixed between Productions cascades 285 Success
331 M2_EventIntegration_Tests test PreProcess: Multiple consecutive Fixed events MOVE 220 Success
332 M2_EventIntegration_Tests test PreProcess: Overlapping Fixed events smart dilation 158 Success
333 M2_EventIntegration_Tests test PreProcess: Production vs Production MOVE 171 Success
334 M2_EventIntegration_Tests test STEP4: Shrinking Fixed readjusts dilated Production 183 Success
335 M2_EventIntegration_Tests test Update: Change Production SectionId 203 Success
336 M2_EventIntegration_Tests test Update: Moving Fixed triggers cascade 243 Success
337 M2_EventIntegration_Tests test Update: Multiple modifications preserve BaseDuration 163 Success
338 M2_EventIntegration_Tests test Update: Multiple Production fields batch 232 Success
339 M2_EventIntegration_Tests test Update: Start moves into collision zone 178 Success
340 M2_EventIntegration_Tests test UpsertEvent: Create compatible Downtime and Maintenance 118 Success
341 M2_EventIntegration_Tests test UpsertEvent: Update Fixed event adjusts affected Production 171 Success
342 M2_EventIntegration_Tests test UpsertProductionEvent: Auto-moves after Holiday 191 Success
343 M2_EventIntegration_Tests test UpsertProductionEvent: Create with all fields populated 171 Success
344 M2_EventIntegration_Tests test UpsertProductionEvent: Dilates around Downtime 187 Success
345 M2_EventIntegration_Tests test UpsertProductionEvent: Update preserves BaseDuration 191 Success
346 M2_EventIntegration_Tests test Validation: Downtime vs Downtime overlap is allowed 81 Success
347 M2_EventIntegration_Tests test Validation: Downtime vs Holiday overlap is allowed 73 Success
348 M2_EventIntegration_Tests test Validation: End before Start throws error 78 Success
349 M2_EventIntegration_Tests test Validation: Holiday vs Holiday overlap is allowed 127 Success
350 M2_EventIntegration_Tests test Validation: Invalid EventTypeCode error 48 Success
351 M2_EventIntegration_Tests test Validation: Invalid SectionId throws error 66 Success
352 M2_EventIntegration_Tests test Workflow: StatusCode P to I to C progression 230 Success
353 M2_GetCampaignsByEventId_Tests test RECONCILE #2258: apportioned detail sums to month and campaign totals 179 Success
354 M2_GetCampaignsByEventId_Tests test RECONCILE #2258: cobbles excluded from length shares but totals reconcile 82 Success
355 M2_GetCampaignsByEventId_Tests test Rejected weight is not subtracted from finished tons or yield 81 Success
356 M2_GetProductionMonth_Tests test ASSET ISOLATION: Mill #1 shifts are ignored by M2 12 Success
357 M2_GetProductionMonth_Tests test FALLBACK: scalar falls back to calendar month when no shift 8 Success
358 M2_GetProductionMonth_Tests test HALF-OPEN: boundary instant belongs to the next shift 16 Success
359 M2_GetProductionMonth_Tests test ITVF: returns no row when no shift covers the instant 12 Success
360 M2_GetProductionMonth_Tests test SHIFT-ALIGNED: Feb-calendar instant in a Jan-ProductionDate shift returns January 21 Success
361 M2_GetProductionMonth_Tests test SHIFT-ALIGNED: Jan-calendar instant in a Feb-ProductionDate shift returns February 12 Success
362 M2_NonProductiveOverlap_Tests test Dilation: Production dilates by the union of D M H 36 Success
363 M2_NonProductiveOverlap_Tests test Merge: chained events collapse into one island 20 Success
364 M2_NonProductiveOverlap_Tests test Merge: contained event adds no extra time 20 Success
365 M2_NonProductiveOverlap_Tests test Merge: disjoint events are summed 25 Success
366 M2_NonProductiveOverlap_Tests test Merge: inactive events are ignored 25 Success
367 M2_NonProductiveOverlap_Tests test Merge: intervals are clipped to the window 33 Success
368 M2_NonProductiveOverlap_Tests test Merge: partial overlap counts the union once 53 Success
369 M2_NonProductiveOverlap_Tests test Merge: Production events are excluded 33 Success
370 M2_NonProductiveOverlap_Tests test Merge: two overlapping Holidays count once 28 Success
371 M2_NonProductiveOverlap_Tests test ScheduledEnd: stretches by the union of D M H 25 Success
372 M2_PassCampaigns_Tests test GetPassCampaignData fails with invalid time range 69 Success
373 M2_PassCampaigns_Tests test GetPassCampaignData fails without EdgerRollPartId 150 Success
374 M2_PassCampaigns_Tests test GetPassCampaignData filters by PassNumber 77 Success
375 M2_PassCampaigns_Tests test GetPassCampaignData returns calculated totals 82 Success
376 M2_PassCampaigns_Tests test GetPassCampaignData returns data for EdgerRoll 81 Success
377 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails with deleted pass 105 Success
378 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails with non-existent id 65 Success
379 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails without any offset 65 Success
380 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets fails without id 94 Success
381 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets returns correct id 151 Success
382 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates multiple offsets 151 Success
383 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates OffsetBillets 146 Success
384 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates OffsetLength 154 Success
385 M2_PassCampaigns_Tests test UpdatePassCampaignOffsets updates OffsetWeight 102 Success
386 M2_ResolveEventCollisions_Tests test Cascade: Five event cascade chain 57 Success
387 M2_ResolveEventCollisions_Tests test Cascade: Last event collides with Fixed 37 Success
388 M2_ResolveEventCollisions_Tests test Cascade: Middle event already dilated 78 Success
389 M2_ResolveEventCollisions_Tests test Cascade: Moving Production pushes subsequent Production events 65 Success
390 M2_ResolveEventCollisions_Tests test Cascade: Production cascade blocked by Fixed wall 40 Success
391 M2_ResolveEventCollisions_Tests test Cascade: Production pushes another Production around Fixed event 94 Success
392 M2_ResolveEventCollisions_Tests test Cascade: Productions with large gaps between them 52 Success
393 M2_ResolveEventCollisions_Tests test Complex: Production DILATE then CASCADE another dilated Production 61 Success
394 M2_ResolveEventCollisions_Tests test Complex: Production DILATE through overlapping Downtime and Maintenance 45 Success
395 M2_ResolveEventCollisions_Tests test Edge: Event with minimum duration one minute 20 Success
396 M2_ResolveEventCollisions_Tests test Edge: Event with very long duration spans days 20 Success
397 M2_ResolveEventCollisions_Tests test Edge: Multiple events same start different durations 20 Success
398 M2_ResolveEventCollisions_Tests test Edge: Production ending exactly at Fixed start has no collision 16 Success
399 M2_ResolveEventCollisions_Tests test Edge: Production one second after Fixed has no collision 25 Success
400 M2_ResolveEventCollisions_Tests test Edge: Production one second before Fixed has no collision 20 Success
401 M2_ResolveEventCollisions_Tests test Edge: Production with no collisions remains unchanged 20 Success
402 M2_ResolveEventCollisions_Tests test Fixed: every D M H overlap combination is allowed 24 Success
403 M2_ResolveEventCollisions_Tests test O1: Multiple Other events can overlap 12 Success
404 M2_ResolveEventCollisions_Tests test O1: Other does not collide with Holiday 12 Success
405 M2_ResolveEventCollisions_Tests test O1: Other does not collide with Production 53 Success
406 M2_ResolveEventCollisions_Tests test O1: Production not affected by Other event 13 Success
407 M2_ResolveEventCollisions_Tests test P1: Multiple Productions overlapping simultaneously 37 Success
408 M2_ResolveEventCollisions_Tests test P1: Production completely contained moves after 29 Success
409 M2_ResolveEventCollisions_Tests test P1: Production containing existing moves after 21 Success
410 M2_ResolveEventCollisions_Tests test P1: Production moves after existing Production when S < NS 93 Success
411 M2_ResolveEventCollisions_Tests test P1: Production with same start time moves after existing 20 Success
412 M2_ResolveEventCollisions_Tests test P2: Production completely inside Fixed MOVES after 45 Success
413 M2_ResolveEventCollisions_Tests test P2: Production DILATE around Fixed when NS < S 37 Success
414 M2_ResolveEventCollisions_Tests test P2: Production DILATE through contiguous Fixed events 102 Success
415 M2_ResolveEventCollisions_Tests test P2: Production DILATE through Fixed events with variable gaps 25 Success
416 M2_ResolveEventCollisions_Tests test P2: Production DILATE through four consecutive Fixed events 25 Success
417 M2_ResolveEventCollisions_Tests test P2: Production DILATE through mixed Fixed event types 32 Success
418 M2_ResolveEventCollisions_Tests test P2: Production DILATE through multiple Holidays 24 Success
419 M2_ResolveEventCollisions_Tests test P2: Production DILATE through overlapping Fixed events without double counting 28 Success
420 M2_ResolveEventCollisions_Tests test P2: Production DILATE through three Fixed events with gaps 32 Success
421 M2_ResolveEventCollisions_Tests test P2: Production DILATE with Fixed ending at exact original P_End 29 Success
422 M2_ResolveEventCollisions_Tests test P2: Production MOVE after Fixed when S <= NS 40 Success
423 M2_ResolveEventCollisions_Tests test P2: Production MOVE then DILATE in sequence 20 Success
424 M2_ResolveEventCollisions_Tests test P2: Production starting at Fixed end has no collision 16 Success
425 M2_ResolveEventCollisions_Tests test P2: Production with Fixed starting at exact P_Start MOVES 17 Success
426 M2_ResolveEventCollisions_Tests test P2: Short Production DILATE through long Fixed event 21 Success
427 M2_ResolveEventCollisions_Tests test Stress: High density Fixed events 12 in 2 hours 61 Success
428 M2_ResolveEventCollisions_Tests test Stress: Multi-day Production through multiple Fixed events 41 Success
429 M2_ResolveEventCollisions_Tests test Update: Event excludes itself from collision detection 28 Success
430 M2_ResolveEventCollisions_Tests test Update: Event in middle of dilated chain 40 Success
431 M2_ResolveEventCollisions_Tests test Update: Fixed event moved away from collision 12 Success
432 M2_ResolveEventCollisions_Tests test Update: Production BaseDuration increased significantly 24 Success
433 M2_ResolveEventCollisions_Tests test Update: Production BaseDuration reduced significantly 41 Success
434 M2_ScheduleCompaction_Tests test Basic: 2-event compaction moves P2 backward 36 Success
435 M2_ScheduleCompaction_Tests test Basic: 3-event compaction cascades through all events 53 Success
436 M2_ScheduleCompaction_Tests test Basic: Partial gap elimination completes gracefully 81 Success
437 M2_ScheduleCompaction_Tests test Edge: Final event encounters Fixed during compaction 61 Success
438 M2_ScheduleCompaction_Tests test Edge: Gap fully eliminated creates contiguous events 33 Success
439 M2_ScheduleCompaction_Tests test Edge: No compaction when event not shortened 33 Success
440 M2_ScheduleCompaction_Tests test Edge: No subsequent events completes immediately 41 Success
441 M2_ScheduleCompaction_Tests test Fixed: Compaction DILATE around Fixed event 69 Success
442 M2_ScheduleCompaction_Tests test Fixed: Compaction MOVE after Fixed event 41 Success
443 M2_ScheduleCompaction_Tests test Fixed: Compaction MOVE then DILATE sequence 41 Success
444 M2_ScheduleCompaction_Tests test Fixed: Compaction stops when Fixed blocks entire remaining gap 155 Success
445 M2_ScheduleCompaction_Tests test Fixed: Compaction through mixed Fixed event types 41 Success
446 M2_ScheduleCompaction_Tests test Fixed: Compaction through multiple consecutive Fixed events 32 Success
447 M2_ScheduleCompaction_Tests test Fixed: Compaction through overlapping Fixed events without double counting 37 Success
448 M2_ScheduleCompaction_Tests test Fixed: Fixed event at exact gap boundary causes MOVE 37 Success
449 M2_ScheduleCompaction_Tests test Gap: Middle event shortening compacts subsequent events 57 Success
450 M2_ScheduleCompaction_Tests test Gap: Variable gaps between events compact correctly 73 Success
451 M2_ScheduleCompaction_Tests test Gap: Very large gap 5 hours compacts correctly 69 Success
452 M2_ScheduleCompaction_Tests test Gap: Very small gap 3 minutes compacts correctly 44 Success
453 M2_ScheduleCompaction_Tests test Integration: CompactSchedule disabled skips compaction 65 Success
454 M2_ScheduleCompaction_Tests test Integration: UpsertEvent skips compaction with blocking events 82 Success
455 M2_ScheduleCompaction_Tests test Integration: UpsertEvent triggers compaction on shortening 85 Success
456 M2_SwapRollsetsRolls_Tests test Error: BottomRollId1 is required 53 Success
457 M2_SwapRollsetsRolls_Tests test Error: BottomRollId2 does not exist in Rolls table 86 Success
458 M2_SwapRollsetsRolls_Tests test Error: BottomRollId2 required when RollsetId2 provided 77 Success
459 M2_SwapRollsetsRolls_Tests test Error: Cannot swap rollsets in different sections 57 Success
460 M2_SwapRollsetsRolls_Tests test Error: Cannot swap rollsets in different stands 61 Success
461 M2_SwapRollsetsRolls_Tests test Error: Rollset1 must have both rolls assigned 45 Success
462 M2_SwapRollsetsRolls_Tests test Error: RollsetId1 and RollsetId2 must be different 69 Success
463 M2_SwapRollsetsRolls_Tests test Error: RollsetId1 does not exist 158 Success
464 M2_SwapRollsetsRolls_Tests test Error: RollsetId1 is required 49 Success
465 M2_SwapRollsetsRolls_Tests test Error: RollsetId2 does not exist 41 Success
466 M2_SwapRollsetsRolls_Tests test Error: TopRollId1 does not exist in Rolls table 40 Success
467 M2_SwapRollsetsRolls_Tests test Error: TopRollId1 is required 76 Success
468 M2_SwapRollsetsRolls_Tests test Error: TopRollId2 required when RollsetId2 provided 70 Success
469 M2_SwapRollsetsRolls_Tests test Success: Create new rollset with specified rolls 175 Success
470 M2_SwapRollsetsRolls_Tests test Success: Swap rolls between two rollsets 220 Success
471 M2_SwapRollsetsRolls_Tests test Success: Use any valid rolls 166 Success
472 M2_SyncCampaignsToProductionEvents_Tests test CASCADE: Chain stops at matched barrier 117 Success
473 M2_SyncCampaignsToProductionEvents_Tests test CASCADE: Matched events are immovable barriers 73 Success
474 M2_SyncCampaignsToProductionEvents_Tests test CASCADE: Updating IsMatched prevents future cascade 106 Success
475 M2_SyncCampaignsToProductionEvents_Tests test COMPLEX: Multiple section changes create multiple events 191 Success
476 M2_SyncCampaignsToProductionEvents_Tests test COMPLEX: ResolveEventCascade called for each group 147 Success
477 M2_SyncCampaignsToProductionEvents_Tests test COMPLEX: StatusCode K preserved when updating 110 Success
478 M2_SyncCampaignsToProductionEvents_Tests test EDGE CASE: Date filters work correctly 191 Success
479 M2_SyncCampaignsToProductionEvents_Tests test EDGE CASE: Empty campaigns table produces no events 65 Success
480 M2_SyncCampaignsToProductionEvents_Tests test EDGE CASE: No campaigns returns gracefully 114 Success
481 M2_SyncCampaignsToProductionEvents_Tests test FIXED: Dilates unmatched but not matched 90 Success
482 M2_SyncCampaignsToProductionEvents_Tests test FIXED: Does not dilate matched events 81 Success
483 M2_SyncCampaignsToProductionEvents_Tests test GROUPING: Consecutive campaigns same section create single event 122 Success
484 M2_SyncCampaignsToProductionEvents_Tests test GROUPING: Section change creates separate events 179 Success
485 M2_SyncCampaignsToProductionEvents_Tests test GROUPING: Single campaign creates single event 106 Success
486 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Last group updates status P to I when matched 118 Success
487 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Matched event updated with IsMatched = 1 101 Success
488 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: New event created with IsMatched = 1 138 Success
489 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Prevents duplicate events on resync 118 Success
490 M2_SyncCampaignsToProductionEvents_Tests test ISMATCHED: Unmatched future event matched in next run 122 Success
491 M2_SyncCampaignsToProductionEvents_Tests test LINKING: All campaigns in group linked to same event 138 Success
492 M2_SyncCampaignsToProductionEvents_Tests test LINKING: EventId preserved for already-linked campaigns 123 Success
493 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Closest match selected when multiple exist 138 Success
494 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Event expands with campaigns 98 Success
495 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Event times adjust to campaigns 110 Success
496 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Exact temporal overlap matches event 90 Success
497 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Fallback respects section 199 Success
498 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Fallback to next unmatched same section 118 Success
499 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Inactive events not matched 130 Success
500 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: New event created when no match found 118 Success
501 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Proximity window 48h enforced 98 Success
502 M2_SyncCampaignsToProductionEvents_Tests test MATCHING: Proximity window matches close event 101 Success
503 M2_SyncCampaignsToProductionEvents_Tests test SMART START: First sync detects production run start 118 Success
504 M2_SyncCampaignsToProductionEvents_Tests test SMART START: Mixed matched and unmatched timeline 118 Success
505 M2_SyncCampaignsToProductionEvents_Tests test SMART START: Second sync continues from last matched event 114 Success
506 M2_SyncCampaignsToProductionEvents_Tests test SPLIT #2258: cross-month event gets one PEA row per production month 158 Success
507 M2_SyncCampaignsToProductionEvents_Tests test SPLIT #2258: resync does not duplicate PEA EventMonth rows 159 Success
508 M2_SyncCampaignsToProductionEvents_Tests test TIMESTAMPS: Continuity maintained between groups 167 Success
509 M2_SyncCampaignsToProductionEvents_Tests test TIMESTAMPS: FirstBilletTimestamp is first campaign start 126 Success
510 M2_SyncCampaignsToProductionEvents_Tests test TIMESTAMPS: TrackedEnd is last campaign end 105 Success
511 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob calculates cumulative start values 138 Success
512 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob calculates metrics from billets 106 Success
513 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob creates new campaign 102 Success
514 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob only counts billets in time range 147 Success
515 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob preserves offset values 130 Success
516 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob skips deleted carriers 135 Success
517 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob skips inactive passes 97 Success
518 M2_TrackPassCampaignsJob_Tests test TrackPassCampaignsJob updates existing campaign 142 Success

Raw Output Tail

|443|[M2_ScheduleCompaction_Tests].[test Fixed: Compaction MOVE then DILATE sequence]                                                                           |     41|Success|
|444|[M2_ScheduleCompaction_Tests].[test Fixed: Compaction stops when Fixed blocks entire remaining gap]                                                        |    155|Success|
|445|[M2_ScheduleCompaction_Tests].[test Fixed: Compaction through mixed Fixed event types]                                                                     |     41|Success|
|446|[M2_ScheduleCompaction_Tests].[test Fixed: Compaction through multiple consecutive Fixed events]                                                           |     32|Success|
|447|[M2_ScheduleCompaction_Tests].[test Fixed: Compaction through overlapping Fixed events without double counting]                                            |     37|Success|
|448|[M2_ScheduleCompaction_Tests].[test Fixed: Fixed event at exact gap boundary causes MOVE]                                                                  |     37|Success|
|449|[M2_ScheduleCompaction_Tests].[test Gap: Middle event shortening compacts subsequent events]                                                               |     57|Success|
|450|[M2_ScheduleCompaction_Tests].[test Gap: Variable gaps between events compact correctly]                                                                   |     73|Success|
|451|[M2_ScheduleCompaction_Tests].[test Gap: Very large gap 5 hours compacts correctly]                                                                        |     69|Success|
|452|[M2_ScheduleCompaction_Tests].[test Gap: Very small gap 3 minutes compacts correctly]                                                                      |     44|Success|
|453|[M2_ScheduleCompaction_Tests].[test Integration: CompactSchedule disabled skips compaction]                                                                |     65|Success|
|454|[M2_ScheduleCompaction_Tests].[test Integration: UpsertEvent skips compaction with blocking events]                                                        |     82|Success|
|455|[M2_ScheduleCompaction_Tests].[test Integration: UpsertEvent triggers compaction on shortening]                                                            |     85|Success|
|456|[M2_SwapRollsetsRolls_Tests].[test Error: BottomRollId1 is required]                                                                                       |     53|Success|
|457|[M2_SwapRollsetsRolls_Tests].[test Error: BottomRollId2 does not exist in Rolls table]                                                                     |     86|Success|
|458|[M2_SwapRollsetsRolls_Tests].[test Error: BottomRollId2 required when RollsetId2 provided]                                                                 |     77|Success|
|459|[M2_SwapRollsetsRolls_Tests].[test Error: Cannot swap rollsets in different sections]                                                                      |     57|Success|
|460|[M2_SwapRollsetsRolls_Tests].[test Error: Cannot swap rollsets in different stands]                                                                        |     61|Success|
|461|[M2_SwapRollsetsRolls_Tests].[test Error: Rollset1 must have both rolls assigned]                                                                          |     45|Success|
|462|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId1 and RollsetId2 must be different]                                                                     |     69|Success|
|463|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId1 does not exist]                                                                                       |    158|Success|
|464|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId1 is required]                                                                                          |     49|Success|
|465|[M2_SwapRollsetsRolls_Tests].[test Error: RollsetId2 does not exist]                                                                                       |     41|Success|
|466|[M2_SwapRollsetsRolls_Tests].[test Error: TopRollId1 does not exist in Rolls table]                                                                        |     40|Success|
|467|[M2_SwapRollsetsRolls_Tests].[test Error: TopRollId1 is required]                                                                                          |     76|Success|
|468|[M2_SwapRollsetsRolls_Tests].[test Error: TopRollId2 required when RollsetId2 provided]                                                                    |     70|Success|
|469|[M2_SwapRollsetsRolls_Tests].[test Success: Create new rollset with specified rolls]                                                                       |    175|Success|
|470|[M2_SwapRollsetsRolls_Tests].[test Success: Swap rolls between two rollsets]                                                                               |    220|Success|
|471|[M2_SwapRollsetsRolls_Tests].[test Success: Use any valid rolls]                                                                                           |    166|Success|
|472|[M2_SyncCampaignsToProductionEvents_Tests].[test CASCADE: Chain stops at matched barrier]                                                                  |    117|Success|
|473|[M2_SyncCampaignsToProductionEvents_Tests].[test CASCADE: Matched events are immovable barriers]                                                           |     73|Success|
|474|[M2_SyncCampaignsToProductionEvents_Tests].[test CASCADE: Updating IsMatched prevents future cascade]                                                      |    106|Success|
|475|[M2_SyncCampaignsToProductionEvents_Tests].[test COMPLEX: Multiple section changes create multiple events]                                                 |    191|Success|
|476|[M2_SyncCampaignsToProductionEvents_Tests].[test COMPLEX: ResolveEventCascade called for each group]                                                       |    147|Success|
|477|[M2_SyncCampaignsToProductionEvents_Tests].[test COMPLEX: StatusCode K preserved when updating]                                                            |    110|Success|
|478|[M2_SyncCampaignsToProductionEvents_Tests].[test EDGE CASE: Date filters work correctly]                                                                   |    191|Success|
|479|[M2_SyncCampaignsToProductionEvents_Tests].[test EDGE CASE: Empty campaigns table produces no events]                                                      |     65|Success|
|480|[M2_SyncCampaignsToProductionEvents_Tests].[test EDGE CASE: No campaigns returns gracefully]                                                               |    114|Success|
|481|[M2_SyncCampaignsToProductionEvents_Tests].[test FIXED: Dilates unmatched but not matched]                                                                 |     90|Success|
|482|[M2_SyncCampaignsToProductionEvents_Tests].[test FIXED: Does not dilate matched events]                                                                    |     81|Success|
|483|[M2_SyncCampaignsToProductionEvents_Tests].[test GROUPING: Consecutive campaigns same section create single event]                                         |    122|Success|
|484|[M2_SyncCampaignsToProductionEvents_Tests].[test GROUPING: Section change creates separate events]                                                         |    179|Success|
|485|[M2_SyncCampaignsToProductionEvents_Tests].[test GROUPING: Single campaign creates single event]                                                           |    106|Success|
|486|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Last group updates status P to I when matched]                                                 |    118|Success|
|487|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Matched event updated with IsMatched = 1]                                                      |    101|Success|
|488|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: New event created with IsMatched = 1]                                                          |    138|Success|
|489|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Prevents duplicate events on resync]                                                           |    118|Success|
|490|[M2_SyncCampaignsToProductionEvents_Tests].[test ISMATCHED: Unmatched future event matched in next run]                                                    |    122|Success|
|491|[M2_SyncCampaignsToProductionEvents_Tests].[test LINKING: All campaigns in group linked to same event]                                                     |    138|Success|
|492|[M2_SyncCampaignsToProductionEvents_Tests].[test LINKING: EventId preserved for already-linked campaigns]                                                  |    123|Success|
|493|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Closest match selected when multiple exist]                                                     |    138|Success|
|494|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Event expands with campaigns]                                                                   |     98|Success|
|495|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Event times adjust to campaigns]                                                                |    110|Success|
|496|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Exact temporal overlap matches event]                                                           |     90|Success|
|497|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Fallback respects section]                                                                      |    199|Success|
|498|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Fallback to next unmatched same section]                                                        |    118|Success|
|499|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Inactive events not matched]                                                                    |    130|Success|
|500|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: New event created when no match found]                                                          |    118|Success|
|501|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Proximity window 48h enforced]                                                                  |     98|Success|
|502|[M2_SyncCampaignsToProductionEvents_Tests].[test MATCHING: Proximity window matches close event]                                                           |    101|Success|
|503|[M2_SyncCampaignsToProductionEvents_Tests].[test SMART START: First sync detects production run start]                                                     |    118|Success|
|504|[M2_SyncCampaignsToProductionEvents_Tests].[test SMART START: Mixed matched and unmatched timeline]                                                        |    118|Success|
|505|[M2_SyncCampaignsToProductionEvents_Tests].[test SMART START: Second sync continues from last matched event]                                               |    114|Success|
|506|[M2_SyncCampaignsToProductionEvents_Tests].[test SPLIT #2258: cross-month event gets one PEA row per production month]                                     |    158|Success|
|507|[M2_SyncCampaignsToProductionEvents_Tests].[test SPLIT #2258: resync does not duplicate PEA EventMonth rows]                                               |    159|Success|
|508|[M2_SyncCampaignsToProductionEvents_Tests].[test TIMESTAMPS: Continuity maintained between groups]                                                         |    167|Success|
|509|[M2_SyncCampaignsToProductionEvents_Tests].[test TIMESTAMPS: FirstBilletTimestamp is first campaign start]                                                 |    126|Success|
|510|[M2_SyncCampaignsToProductionEvents_Tests].[test TIMESTAMPS: TrackedEnd is last campaign end]                                                              |    105|Success|
|511|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob calculates cumulative start values]                                                           |    138|Success|
|512|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob calculates metrics from billets]                                                              |    106|Success|
|513|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob creates new campaign]                                                                         |    102|Success|
|514|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob only counts billets in time range]                                                            |    147|Success|
|515|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob preserves offset values]                                                                      |    130|Success|
|516|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob skips deleted carriers]                                                                       |    135|Success|
|517|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob skips inactive passes]                                                                        |     97|Success|
|518|[M2_TrackPassCampaignsJob_Tests].[test TrackPassCampaignsJob updates existing campaign]                                                                    |    142|Success|
--------------------------------------------------------------------------------------------
Test Case Summary: 518 test case(s) executed, 518 succeeded, 0 skipped, 0 failed, 0 errored.
--------------------------------------------------------------------------------------------