RBD-MS tSQLt Report

PASSED

146 passed, 0 failed, 146 total

ResultTest
No individual test rows were parsed. See raw output.

Raw Output

(0 rows affected)
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 broken thing                                                                                                                                                                                                                                                     alice                                              2026-05-01 11:00:00.000           5               2             1            0           1
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 broken thing                                                                                                                                                                                                                                                     alice                                              2026-05-01 11:00:00.000           5               2             1            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000             999 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000             999 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 02:00:00.000 2026-05-01 06:00:00.000               1 2026-05-01 02:00:00.000 2026-05-01 06:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000                    NULL NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000                    NULL               1 2026-05-01 06:00:00.000                    NULL NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 16:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 16:00:00.000 2026-05-01 18:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000               1 2026-05-01 08:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000                    NULL NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 16:00:00.000               1 2026-05-01 06:00:00.000                    NULL NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 16:00:00.000 2026-05-02 00:00:00.000               1 2026-05-01 06:00:00.000                    NULL NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 16:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 16:00:00.000 2026-05-01 18:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 16:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 16:00:00.000 2026-05-01 18:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 08:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 16:00:00.000               1 2026-05-01 08:00:00.000 2026-05-01 16:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 16:00:00.000 2026-05-01 18:00:00.000               1 2026-05-01 16:00:00.000 2026-05-01 18:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
Start                   End                     OriginalDelayId OriginalStart           OriginalEnd             Comments                                                                                                                                                                                                                                                         JustifiedByUser                                    JustifiedDatetime       DelayCodeId DelayCategoryId IsDelayManual IsMicroDelay AssetId    
----------------------- ----------------------- --------------- ----------------------- ----------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------- ----------------------- ----------- --------------- ------------- ------------ -----------
2026-05-01 06:00:00.000 2026-05-01 08:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
2026-05-01 08:00:00.000 2026-05-01 10:00:00.000               1 2026-05-01 06:00:00.000 2026-05-01 10:00:00.000 NULL                                                                                                                                                                                                                                                             NULL                                                                  NULL        NULL            NULL             0            0           1
 
+----------------------+
|Test Execution Summary|
+----------------------+
 
|No |Test Case Name                                                                                                       |Dur(ms)|Result |
+---+---------------------------------------------------------------------------------------------------------------------+-------+-------+
|1  |[DEL_GetDelay_Tests].[test IsDelayManual is aliased as IsManual for manual delay]                                    |     62|Success|
|2  |[DEL_GetDelay_Tests].[test returns delay row when DelayId exists]                                                    |     66|Success|
|3  |[DEL_GetDelay_Tests].[test returns empty result set when DelayId does not exist]                                     |     53|Success|
|4  |[DEL_GetDelay_Tests].[test returns NULL End for active delay]                                                        |   1496|Success|
|5  |[DEL_GetDelay_Tests].[test returns NULL justification fields for unjustified delay]                                  |    147|Success|
|6  |[DEL_GetDelay_Tests].[test returns only matching delay when multiple delays exist]                                   |    125|Success|
|7  |[DEL_GetDelay_Tests].[test returns split delay original fields]                                                      |     70|Success|
|8  |[DEL_SpliceDelaysByShiftJob_Tests].[test assigns ShiftId via GetShiftId for new slices]                              |    100|Success|
|9  |[DEL_SpliceDelaysByShiftJob_Tests].[test closes open delay at boundary for past shifts]                              |     79|Success|
|10 |[DEL_SpliceDelaysByShiftJob_Tests].[test does not modify delay contained in one shift]                               |     70|Success|
|11 |[DEL_SpliceDelaysByShiftJob_Tests].[test handles delay starting on shift boundary]                                   |     82|Success|
|12 |[DEL_SpliceDelaysByShiftJob_Tests].[test ignores delays before DaysBack window]                                      |     79|Success|
|13 |[DEL_SpliceDelaysByShiftJob_Tests].[test ignores delays starting after End parameter]                                |     78|Success|
|14 |[DEL_SpliceDelaysByShiftJob_Tests].[test is idempotent on second run]                                                |    104|Success|
|15 |[DEL_SpliceDelaysByShiftJob_Tests].[test keeps open delay open in current shift]                                     |     78|Success|
|16 |[DEL_SpliceDelaysByShiftJob_Tests].[test marks slice non-micro when longer than MinDelayTime]                        |     99|Success|
|17 |[DEL_SpliceDelaysByShiftJob_Tests].[test NULL AssetId processes only Caster EAF LMF]                                 |     79|Success|
|18 |[DEL_SpliceDelaysByShiftJob_Tests].[test preserves OriginalDelayId when re-splicing]                                 |    108|Success|
|19 |[DEL_SpliceDelaysByShiftJob_Tests].[test propagates justification and metadata to new slices]                        |    140|Success|
|20 |[DEL_SpliceDelaysByShiftJob_Tests].[test sets OriginalDelayId to self for first splice]                              |     79|Success|
|21 |[DEL_SpliceDelaysByShiftJob_Tests].[test splits delay crossing multiple shift boundaries]                            |    107|Success|
|22 |[DEL_SpliceDelaysByShiftJob_Tests].[test splits delay crossing one shift boundary]                                   |    144|Success|
|23 |[DEL_SpliceDelaysByShiftJob_Tests].[test throws when AssetId does not exist]                                         |     66|Success|
|24 |[DEL_UpsertDelayCategory_Tests].[test insert ignores @IsActive parameter]                                            |     62|Success|
|25 |[DEL_UpsertDelayCategory_Tests].[test insert with name colliding inactive sibling succeeds]                          |     59|Success|
|26 |[DEL_UpsertDelayCategory_Tests].[test insert with same name in different area succeeds]                              |     58|Success|
|27 |[DEL_UpsertDelayCategory_Tests].[test insert writes Name Color and DelayAreaAssetId]                                 |     45|Success|
|28 |[DEL_UpsertDelayCategory_Tests].[test successful insert does not call WriteLog]                                      |     58|Success|
|29 |[DEL_UpsertDelayCategory_Tests].[test successful update calls WriteLog once]                                         |     54|Success|
|30 |[DEL_UpsertDelayCategory_Tests].[test throws 50000 when name collides with active sibling in same area]              |    104|Success|
|31 |[DEL_UpsertDelayCategory_Tests].[test throws 51001 when both DelayAreaAssetId and DelayCategoryId are NULL]          |     45|Success|
|32 |[DEL_UpsertDelayCategory_Tests].[test throws 51002 when DelayAreaAssetId is not a delay area]                        |     63|Success|
|33 |[DEL_UpsertDelayCategory_Tests].[test throws 51002 when update reparents to a non-delay-area asset]                  |     54|Success|
|34 |[DEL_UpsertDelayCategory_Tests].[test throws 51004 when DelayCategoryName is NULL]                                   |    133|Success|
|35 |[DEL_UpsertDelayCategory_Tests].[test throws 51005 when DelayCategoryColor is NULL]                                  |    112|Success|
|36 |[DEL_UpsertDelayCategory_Tests].[test throws 51006 when DelayCategoryId does not exist]                              |     45|Success|
|37 |[DEL_UpsertDelayCategory_Tests].[test update inherits DelayAreaAssetId from existing row when NULL]                  |     66|Success|
|38 |[DEL_UpsertDelayCategory_Tests].[test update reparents category to new DelayAreaAssetId]                             |     53|Success|
|39 |[DEL_UpsertDelayCategory_Tests].[test update toggles IsActive]                                                       |     67|Success|
|40 |[DEL_UpsertDelayCategory_Tests].[test update with same name as self does not throw 50000]                            |     53|Success|
|41 |[DEL_UpsertDelayCategory_Tests].[test update writes new DelayCategoryColor]                                          |     66|Success|
|42 |[DEL_UpsertDelayCategory_Tests].[test update writes new DelayCategoryName]                                           |     66|Success|
|43 |[DEL_UpsertManualDelay_Tests].[test insert open delay leaves End NULL]                                               |    103|Success|
|44 |[DEL_UpsertManualDelay_Tests].[test insert throws 51301 when AssetId is NULL]                                        |    111|Success|
|45 |[DEL_UpsertManualDelay_Tests].[test insert throws 51302 when Start is NULL]                                          |     62|Success|
|46 |[DEL_UpsertManualDelay_Tests].[test insert throws 51303 when an open delay precedes Start]                           |     78|Success|
|47 |[DEL_UpsertManualDelay_Tests].[test insert throws 51304 when End is before Start]                                    |    105|Success|
|48 |[DEL_UpsertManualDelay_Tests].[test insert throws 51305 when range collides with existing delay]                     |    207|Success|
|49 |[DEL_UpsertManualDelay_Tests].[test insert throws 51306 when End is NULL and a later delay exists]                   |     87|Success|
|50 |[DEL_UpsertManualDelay_Tests].[test insert with code stamps JustifiedByUser and JustifiedDatetime]                   |    103|Success|
|51 |[DEL_UpsertManualDelay_Tests].[test insert with End sets IsDelayManual IsMicroDelay and ShiftId]                     |    107|Success|
|52 |[DEL_UpsertManualDelay_Tests].[test insert without code or category leaves Justified fields NULL]                    |     83|Success|
|53 |[DEL_UpsertManualDelay_Tests].[test NULL skips Code and Category existence check]                                    |    190|Success|
|54 |[DEL_UpsertManualDelay_Tests].[test sentinel -1 skips Code and Category existence check]                             |    112|Success|
|55 |[DEL_UpsertManualDelay_Tests].[test throws 51309 when DelayCategoryId does not exist]                                |     86|Success|
|56 |[DEL_UpsertManualDelay_Tests].[test throws 51309 when DelayCodeId does not exist]                                    |    112|Success|
|57 |[DEL_UpsertManualDelay_Tests].[test throws 51310 when no shift exists for Start]                                     |    124|Success|
|58 |[DEL_UpsertManualDelay_Tests].[test update changing code re-stamps Justified fields]                                 |    111|Success|
|59 |[DEL_UpsertManualDelay_Tests].[test update inherits current Start when @Start is NULL]                               |    107|Success|
|60 |[DEL_UpsertManualDelay_Tests].[test update throws 51307 when DelayId does not exist]                                 |    157|Success|
|61 |[DEL_UpsertManualDelay_Tests].[test update throws 51308 when delay is not manual]                                    |     75|Success|
|62 |[DEL_UpsertManualDelay_Tests].[test update throws 51311 when an open delay precedes Start]                           |    128|Success|
|63 |[DEL_UpsertManualDelay_Tests].[test update throws 51312 when inherited End is before new Start]                      |    136|Success|
|64 |[DEL_UpsertManualDelay_Tests].[test update with non-NULL Comments overwrites]                                        |    120|Success|
|65 |[DEL_UpsertManualDelay_Tests].[test update with NULL Comments keeps existing]                                        |     94|Success|
|66 |[DEL_UpsertManualDelay_Tests].[test update with NULL wipes code]                                                     |    120|Success|
|67 |[DEL_UpsertManualDelay_Tests].[test update with same code does not re-stamp Justified fields]                        |     90|Success|
|68 |[DEL_UpsertManualDelay_Tests].[test update with sentinel -1 keeps current code]                                      |    104|Success|
|69 |[DEL_UpsertManualDelay_Tests].[test update with sentinel -1 on code does not re-stamp Justified fields]              |    111|Success|
|70 |[DEL_UpsertManualDelay_Tests].[test update writes new Start End and recomputes ShiftId]                              |    120|Success|
|71 |[EQP_UpsertPart_Tests].[test 1 INSERT writes PartTypeId and PartName]                                                |     37|Success|
|72 |[EQP_UpsertPart_Tests].[test 10 VALIDATE NULL PartTypeId throws]                                                     |     25|Success|
|73 |[EQP_UpsertPart_Tests].[test 11 UPDATE overwrites PartTypeId and PartName of the targeted row]                       |     33|Success|
|74 |[EQP_UpsertPart_Tests].[test 12 UPDATE returns the targeted PartId]                                                  |     33|Success|
|75 |[EQP_UpsertPart_Tests].[test 13 UPDATE preserves IsActive IsDefaultArray and AuxPartId]                              |     37|Success|
|76 |[EQP_UpsertPart_Tests].[test 14 UPDATE only affects the targeted row]                                                |     41|Success|
|77 |[EQP_UpsertPart_Tests].[test 15 UPDATE with PartTypeId = -1 preserves current]                                       |     37|Success|
|78 |[EQP_UpsertPart_Tests].[test 16 UPDATE with empty PartName preserves current]                                        |     38|Success|
|79 |[EQP_UpsertPart_Tests].[test 17 UPDATE with explicit IsActive flips the value]                                       |     41|Success|
|80 |[EQP_UpsertPart_Tests].[test 18 UPDATE with explicit IsDefaultArray flips the value]                                 |     38|Success|
|81 |[EQP_UpsertPart_Tests].[test 19 UPDATE with explicit AuxPartId writes the new value]                                 |     33|Success|
|82 |[EQP_UpsertPart_Tests].[test 2 INSERT returns the new identity value]                                                |     28|Success|
|83 |[EQP_UpsertPart_Tests].[test 20 UPDATE with AuxPartId = -1 preserves current]                                        |     37|Success|
|84 |[EQP_UpsertPart_Tests].[test 21 UPDATE with explicit NULL AuxPartId clears the value]                                |     45|Success|
|85 |[EQP_UpsertPart_Tests].[test 22 VALIDATE on non-existent PartId throws]                                              |    136|Success|
|86 |[EQP_UpsertPart_Tests].[test 23 UPDATE with no changes still returns the PartId]                                     |     33|Success|
|87 |[EQP_UpsertPart_Tests].[test 24 VALIDATE NULL User throws]                                                           |     25|Success|
|88 |[EQP_UpsertPart_Tests].[test 25 VALIDATE empty User throws]                                                          |     28|Success|
|89 |[EQP_UpsertPart_Tests].[test 26 LOG insert writes an informational audit log row]                                    |     41|Success|
|90 |[EQP_UpsertPart_Tests].[test 27 LOG update with changes writes an informational audit log row with the delta]        |     37|Success|
|91 |[EQP_UpsertPart_Tests].[test 28 LOG update with no changes writes no audit log row]                                  |     28|Success|
|92 |[EQP_UpsertPart_Tests].[test 29 LOG User parameter is forwarded to the audit log]                                    |     33|Success|
|93 |[EQP_UpsertPart_Tests].[test 3 INSERT leaves IsActive IsDefaultArray and AuxPartId at table defaults]                |     33|Success|
|94 |[EQP_UpsertPart_Tests].[test 30 LOG custom LogMessage replaces the auto-generated insert message]                    |     46|Success|
|95 |[EQP_UpsertPart_Tests].[test 31 LOG custom LogMessage replaces the auto-generated update message]                    |     41|Success|
|96 |[EQP_UpsertPart_Tests].[test 32 LOG custom LogMessage is ignored on no-change update]                                |     33|Success|
|97 |[EQP_UpsertPart_Tests].[test 4 INSERT with explicit IsDefaultArray writes the value]                                 |     94|Success|
|98 |[EQP_UpsertPart_Tests].[test 5 INSERT with explicit AuxPartId writes the value]                                      |     45|Success|
|99 |[EQP_UpsertPart_Tests].[test 6 INSERT allows duplicate PartName values]                                              |     42|Success|
|100|[EQP_UpsertPart_Tests].[test 7 VALIDATE empty PartName throws]                                                       |     25|Success|
|101|[EQP_UpsertPart_Tests].[test 8 VALIDATE NULL PartName throws]                                                        |     24|Success|
|102|[EQP_UpsertPart_Tests].[test 9 VALIDATE PartTypeId = -1 throws]                                                      |     21|Success|
|103|[EQP_UpsertPartType_Tests].[test 1 INSERT writes PartTypeName IsArray IsReplaceable and InheritedFrom]               |     32|Success|
|104|[EQP_UpsertPartType_Tests].[test 10 UPDATE with IsArray IsReplaceable and SortOrder omitted preserves current]       |     37|Success|
|105|[EQP_UpsertPartType_Tests].[test 11 UPDATE with explicit SortOrder writes the new value]                             |     37|Success|
|106|[EQP_UpsertPartType_Tests].[test 12 VALIDATE on non-existent PartTypeId throws]                                      |     37|Success|
|107|[EQP_UpsertPartType_Tests].[test 13 VALIDATE InheritedFrom equal to PartTypeId throws]                               |     29|Success|
|108|[EQP_UpsertPartType_Tests].[test 14 UPDATE with no changes still returns the PartTypeId]                             |     29|Success|
|109|[EQP_UpsertPartType_Tests].[test 15 VALIDATE NULL User throws]                                                       |     46|Success|
|110|[EQP_UpsertPartType_Tests].[test 16 VALIDATE empty User throws]                                                      |     21|Success|
|111|[EQP_UpsertPartType_Tests].[test 17 LOG insert writes an informational audit log row]                                |     33|Success|
|112|[EQP_UpsertPartType_Tests].[test 18 LOG update with changes writes an informational audit log row with the delta]    |     38|Success|
|113|[EQP_UpsertPartType_Tests].[test 19 LOG update with no changes writes no audit log row]                              |     29|Success|
|114|[EQP_UpsertPartType_Tests].[test 2 INSERT returns the new identity value]                                            |     32|Success|
|115|[EQP_UpsertPartType_Tests].[test 20 LOG User parameter is forwarded to the audit log]                                |     37|Success|
|116|[EQP_UpsertPartType_Tests].[test 21 LOG custom LogMessage replaces the auto-generated insert message]                |     41|Success|
|117|[EQP_UpsertPartType_Tests].[test 22 LOG custom LogMessage replaces the auto-generated update message]                |     42|Success|
|118|[EQP_UpsertPartType_Tests].[test 23 LOG custom LogMessage is ignored on no-change update]                            |     25|Success|
|119|[EQP_UpsertPartType_Tests].[test 3 INSERT with optional params omitted honours table defaults]                       |     29|Success|
|120|[EQP_UpsertPartType_Tests].[test 4 VALIDATE empty PartTypeName throws]                                               |     20|Success|
|121|[EQP_UpsertPartType_Tests].[test 5 VALIDATE NULL PartTypeName throws]                                                |     20|Success|
|122|[EQP_UpsertPartType_Tests].[test 6 UPDATE overwrites all five columns of the existing row]                           |     29|Success|
|123|[EQP_UpsertPartType_Tests].[test 7 UPDATE returns the targeted PartTypeId]                                           |     99|Success|
|124|[EQP_UpsertPartType_Tests].[test 8 UPDATE with empty PartTypeName preserves current]                                 |     95|Success|
|125|[EQP_UpsertPartType_Tests].[test 9 UPDATE with InheritedFrom = -1 preserves current]                                 |     37|Success|
|126|[EQP_UpsertPartTypeTree_Tests].[test 1 INSERT writes ParentPartTypeId PartTypeId PositionId and PositionName]        |     37|Success|
|127|[EQP_UpsertPartTypeTree_Tests].[test 10 UPDATE returns zero]                                                         |     33|Success|
|128|[EQP_UpsertPartTypeTree_Tests].[test 11 UPDATE with empty PositionName preserves current]                            |     33|Success|
|129|[EQP_UpsertPartTypeTree_Tests].[test 12 UPDATE with explicit NULL PositionName clears the value]                     |     41|Success|
|130|[EQP_UpsertPartTypeTree_Tests].[test 13 VALIDATE NULL User throws]                                                   |     29|Success|
|131|[EQP_UpsertPartTypeTree_Tests].[test 14 VALIDATE empty User throws]                                                  |     25|Success|
|132|[EQP_UpsertPartTypeTree_Tests].[test 15 LOG insert writes an informational audit log row]                            |     41|Success|
|133|[EQP_UpsertPartTypeTree_Tests].[test 16 LOG update with changes writes an informational audit log row with the delta]|     37|Success|
|134|[EQP_UpsertPartTypeTree_Tests].[test 17 LOG update with no changes writes no audit log row]                          |     66|Success|
|135|[EQP_UpsertPartTypeTree_Tests].[test 18 LOG User parameter is forwarded to the audit log]                            |     37|Success|
|136|[EQP_UpsertPartTypeTree_Tests].[test 19 LOG custom LogMessage replaces the auto-generated insert message]            |     37|Success|
|137|[EQP_UpsertPartTypeTree_Tests].[test 2 INSERT returns zero]                                                          |     33|Success|
|138|[EQP_UpsertPartTypeTree_Tests].[test 20 LOG custom LogMessage replaces the auto-generated update message]            |     41|Success|
|139|[EQP_UpsertPartTypeTree_Tests].[test 21 LOG custom LogMessage is ignored on no-change update]                        |     41|Success|
|140|[EQP_UpsertPartTypeTree_Tests].[test 3 INSERT with omitted PositionName writes NULL]                                 |     37|Success|
|141|[EQP_UpsertPartTypeTree_Tests].[test 4 INSERT allows the same child type at multiple positions of the same parent]   |     37|Success|
|142|[EQP_UpsertPartTypeTree_Tests].[test 5 VALIDATE NULL ParentPartTypeId throws]                                        |     29|Success|
|143|[EQP_UpsertPartTypeTree_Tests].[test 6 VALIDATE NULL PartTypeId throws]                                              |     38|Success|
|144|[EQP_UpsertPartTypeTree_Tests].[test 7 VALIDATE NULL PositionId throws]                                              |     34|Success|
|145|[EQP_UpsertPartTypeTree_Tests].[test 8 VALIDATE self-referencing edge throws]                                        |     21|Success|
|146|[EQP_UpsertPartTypeTree_Tests].[test 9 UPDATE overwrites PositionName when edge already exists]                      |     75|Success|
--------------------------------------------------------------------------------------------
Test Case Summary: 146 test case(s) executed, 146 succeeded, 0 skipped, 0 failed, 0 errored.
--------------------------------------------------------------------------------------------