@@ -3,13 +3,8 @@ namespace Serenity.Services;
3
3
public partial class UpdatableExtensionBehavior_ForeignThisKey_Test
4
4
{
5
5
[ Fact ]
6
- public void ForeignKeyField_CanBeUsedAs_ThisKey ( )
6
+ public void ForeignKeyField_CanBeUsedAs_ThisKey_WithManualIdAssigned ( )
7
7
{
8
- var context = new MockRequestContext ( )
9
- {
10
- Behaviors = new NullBehaviorProvider ( ) ,
11
- Permissions = new NullPermissions ( )
12
- } ;
13
8
bool saveDetailCalled = false ;
14
9
var handlerFactory = new MockHandlerFactory ( ( rowType , intfType ) =>
15
10
{
@@ -53,6 +48,43 @@ public void ForeignKeyField_CanBeUsedAs_ThisKey()
53
48
Assert . True ( saveDetailCalled ) ;
54
49
}
55
50
51
+ [ Fact ]
52
+ public void ForeignKeyField_CanBeUsedAs_ThisKey_WithoutDetailId ( )
53
+ {
54
+ bool saveDetailCalled = false ;
55
+ var handlerFactory = new MockHandlerFactory ( ( rowType , intfType ) =>
56
+ {
57
+ Assert . Equal ( typeof ( DetailRow ) , rowType ) ;
58
+ Assert . Equal ( typeof ( ISaveRequestProcessor ) , intfType ) ;
59
+ return new MockSaveHandler < DetailRow > ( x =>
60
+ {
61
+ Assert . Equal ( SaveRequestType . Create , x . RequestType ) ;
62
+ Assert . Null ( x . Request ? . EntityId ) ;
63
+ var detail = Assert . IsType < DetailRow > ( x . Request . Entity ) ;
64
+ Assert . Null ( detail . Id ) ;
65
+ Assert . Equal ( "TestDetail" , detail . Text ) ;
66
+ saveDetailCalled = true ;
67
+ x . Response . EntityId = 1357 ;
68
+ } ) ;
69
+ } ) ;
70
+ var row = new MainRow ( )
71
+ {
72
+ DetailText = "TestDetail"
73
+ } ;
74
+ var connection = new MockDbConnection ( ) ;
75
+ var handler = new MockSaveHandler < MainRow > ( )
76
+ {
77
+ Connection = connection ,
78
+ Row = row
79
+ } ;
80
+ var behavior = new UpdatableExtensionBehavior ( handlerFactory ) ;
81
+ Assert . True ( behavior . ActivateFor ( row ) ) ;
82
+ behavior . OnBeforeSave ( handler ) ;
83
+ behavior . OnAfterSave ( handler ) ;
84
+ Assert . True ( saveDetailCalled ) ;
85
+ Assert . Equal ( 1357 , row . DetailId ) ;
86
+ }
87
+
56
88
[ TableName ( "Mains" ) ]
57
89
[ UpdatableExtension ( "d" , typeof ( DetailRow ) , ThisKey = "DetailId" ) ]
58
90
public class MainRow : Row < MainRow . RowFields > , IIdRow
0 commit comments