@@ -175,5 +175,98 @@ public async Task OnPointerDown_ShouldDeleteLinkFalse_KeepsLink()
175175 Assert . Contains ( link , diagram . Links ) ;
176176 }
177177
178+ [ Fact ]
179+ public async Task OnPointerDown_NoConstraints_RemovesGroup ( )
180+ {
181+ // Arrange
182+ RemoveControl removeControl = new ( 0 , 0 ) ;
183+ Diagram diagram = new TestDiagram ( ) ;
184+
185+ var node1 = new NodeModel ( new Point ( 50 , 50 ) ) ;
186+ var node2 = new NodeModel ( new Point ( 300 , 300 ) ) ;
187+ diagram . Nodes . Add ( new [ ] { node1 , node2 } ) ;
188+ node1 . AddPort ( PortAlignment . Right ) ;
189+ node2 . AddPort ( PortAlignment . Left ) ;
190+
191+ var group = new GroupModel ( new [ ] { node1 , node2 } ) ;
192+
193+
194+ diagram . Groups . Add ( group ) ;
195+
196+ // Act
197+ await removeControl . OnPointerDown ( diagram , group , PointerEventArgs ) ;
198+
199+ // Assert
200+ Assert . Empty ( diagram . Groups ) ;
201+ Assert . Empty ( diagram . Nodes ) ;
202+ }
203+
204+ [ Fact ]
205+ public async Task OnPointerDown_ShouldDeleteGroupTrue_RemovesGroup ( )
206+ {
207+ // Arrange
208+ RemoveControl removeControl = new ( 0 , 0 ) ;
209+ Diagram diagram = new TestDiagram (
210+ new Options . DiagramOptions
211+ {
212+ Constraints =
213+ {
214+ ShouldDeleteGroup = ( node ) => ValueTask . FromResult ( true )
215+ }
216+ } ) ;
217+
218+ var node1 = new NodeModel ( new Point ( 50 , 50 ) ) ;
219+ var node2 = new NodeModel ( new Point ( 300 , 300 ) ) ;
220+ diagram . Nodes . Add ( new [ ] { node1 , node2 } ) ;
221+ node1 . AddPort ( PortAlignment . Right ) ;
222+ node2 . AddPort ( PortAlignment . Left ) ;
223+
224+ var group = new GroupModel ( new [ ] { node1 , node2 } ) ;
225+
226+
227+ diagram . Groups . Add ( group ) ;
228+
229+ // Act
230+ await removeControl . OnPointerDown ( diagram , group , PointerEventArgs ) ;
231+
232+ // Assert
233+ Assert . Empty ( diagram . Groups ) ;
234+ Assert . Empty ( diagram . Nodes ) ;
235+ }
236+
237+ [ Fact ]
238+ public async Task OnPointerDown_ShouldDeleteGroupFalse_KeepsGroup ( )
239+ {
240+ // Arrange
241+ RemoveControl removeControl = new ( 0 , 0 ) ;
242+ Diagram diagram = new TestDiagram (
243+ new Options . DiagramOptions
244+ {
245+ Constraints =
246+ {
247+ ShouldDeleteGroup = ( node ) => ValueTask . FromResult ( false )
248+ }
249+ } ) ;
250+
251+ var node1 = new NodeModel ( new Point ( 50 , 50 ) ) ;
252+ var node2 = new NodeModel ( new Point ( 300 , 300 ) ) ;
253+ diagram . Nodes . Add ( new [ ] { node1 , node2 } ) ;
254+ node1 . AddPort ( PortAlignment . Right ) ;
255+ node2 . AddPort ( PortAlignment . Left ) ;
256+
257+ var group = new GroupModel ( new [ ] { node1 , node2 } ) ;
258+
259+
260+ diagram . Groups . Add ( group ) ;
261+
262+ // Act
263+ await removeControl . OnPointerDown ( diagram , group , PointerEventArgs ) ;
264+
265+ // Assert
266+ Assert . Contains ( group , diagram . Groups ) ;
267+ Assert . Contains ( node1 , diagram . Nodes ) ;
268+ Assert . Contains ( node2 , diagram . Nodes ) ;
269+ }
270+
178271 }
179272}
0 commit comments