@@ -1294,7 +1294,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1294
1294
public async Task Can_add_to_ManyToMany_relationship_using_local_ID ( )
1295
1295
{
1296
1296
// Arrange
1297
- var existingTrack = _fakers . MusicTrack . Generate ( ) ;
1297
+ var existingTracks = _fakers . MusicTrack . Generate ( 2 ) ;
1298
1298
1299
1299
var newPlaylistName = _fakers . Playlist . Generate ( ) . Name ;
1300
1300
var newTrackTitle = _fakers . MusicTrack . Generate ( ) . Title ;
@@ -1304,7 +1304,7 @@ public async Task Can_add_to_ManyToMany_relationship_using_local_ID()
1304
1304
1305
1305
await _testContext . RunOnDatabaseAsync ( async dbContext =>
1306
1306
{
1307
- dbContext . MusicTracks . Add ( existingTrack ) ;
1307
+ dbContext . MusicTracks . AddRange ( existingTracks ) ;
1308
1308
await dbContext . SaveChangesAsync ( ) ;
1309
1309
} ) ;
1310
1310
@@ -1332,7 +1332,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1332
1332
new
1333
1333
{
1334
1334
type = "musicTracks" ,
1335
- id = existingTrack . StringId
1335
+ id = existingTracks [ 0 ] . StringId
1336
1336
}
1337
1337
}
1338
1338
}
@@ -1369,6 +1369,24 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1369
1369
lid = trackLocalId
1370
1370
}
1371
1371
}
1372
+ } ,
1373
+ new
1374
+ {
1375
+ op = "add" ,
1376
+ @ref = new
1377
+ {
1378
+ type = "playlists" ,
1379
+ lid = playlistLocalId ,
1380
+ relationship = "tracks"
1381
+ } ,
1382
+ data = new [ ]
1383
+ {
1384
+ new
1385
+ {
1386
+ type = "musicTracks" ,
1387
+ id = existingTracks [ 1 ] . StringId
1388
+ }
1389
+ }
1372
1390
}
1373
1391
}
1374
1392
} ;
@@ -1381,7 +1399,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1381
1399
// Assert
1382
1400
httpResponse . Should ( ) . HaveStatusCode ( HttpStatusCode . OK ) ;
1383
1401
1384
- responseDocument . Results . Should ( ) . HaveCount ( 3 ) ;
1402
+ responseDocument . Results . Should ( ) . HaveCount ( 4 ) ;
1385
1403
1386
1404
responseDocument . Results [ 0 ] . SingleData . Should ( ) . NotBeNull ( ) ;
1387
1405
responseDocument . Results [ 0 ] . SingleData . Type . Should ( ) . Be ( "playlists" ) ;
@@ -1395,6 +1413,8 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1395
1413
1396
1414
responseDocument . Results [ 2 ] . Data . Should ( ) . BeNull ( ) ;
1397
1415
1416
+ responseDocument . Results [ 3 ] . Data . Should ( ) . BeNull ( ) ;
1417
+
1398
1418
var newPlaylistId = long . Parse ( responseDocument . Results [ 0 ] . SingleData . Id ) ;
1399
1419
var newTrackId = Guid . Parse ( responseDocument . Results [ 1 ] . SingleData . Id ) ;
1400
1420
@@ -1407,8 +1427,9 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1407
1427
1408
1428
playlistInDatabase . Name . Should ( ) . Be ( newPlaylistName ) ;
1409
1429
1410
- playlistInDatabase . PlaylistMusicTracks . Should ( ) . HaveCount ( 2 ) ;
1411
- playlistInDatabase . PlaylistMusicTracks . Should ( ) . ContainSingle ( playlistMusicTrack => playlistMusicTrack . MusicTrack . Id == existingTrack . Id ) ;
1430
+ playlistInDatabase . PlaylistMusicTracks . Should ( ) . HaveCount ( 3 ) ;
1431
+ playlistInDatabase . PlaylistMusicTracks . Should ( ) . ContainSingle ( playlistMusicTrack => playlistMusicTrack . MusicTrack . Id == existingTracks [ 0 ] . Id ) ;
1432
+ playlistInDatabase . PlaylistMusicTracks . Should ( ) . ContainSingle ( playlistMusicTrack => playlistMusicTrack . MusicTrack . Id == existingTracks [ 1 ] . Id ) ;
1412
1433
playlistInDatabase . PlaylistMusicTracks . Should ( ) . ContainSingle ( playlistMusicTrack => playlistMusicTrack . MusicTrack . Id == newTrackId ) ;
1413
1434
} ) ;
1414
1435
}
@@ -1543,17 +1564,26 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1543
1564
public async Task Can_remove_from_ManyToMany_relationship_using_local_ID ( )
1544
1565
{
1545
1566
// Arrange
1546
- var existingTrack = _fakers . MusicTrack . Generate ( ) ;
1567
+ var existingPlaylist = _fakers . Playlist . Generate ( ) ;
1568
+ existingPlaylist . PlaylistMusicTracks = new [ ]
1569
+ {
1570
+ new PlaylistMusicTrack
1571
+ {
1572
+ MusicTrack = _fakers . MusicTrack . Generate ( )
1573
+ } ,
1574
+ new PlaylistMusicTrack
1575
+ {
1576
+ MusicTrack = _fakers . MusicTrack . Generate ( )
1577
+ }
1578
+ } ;
1547
1579
1548
- var newPlaylistName = _fakers . Playlist . Generate ( ) . Name ;
1549
1580
var newTrackTitle = _fakers . MusicTrack . Generate ( ) . Title ;
1550
1581
1551
- const string playlistLocalId = "playlist-1" ;
1552
1582
const string trackLocalId = "track-1" ;
1553
1583
1554
1584
await _testContext . RunOnDatabaseAsync ( async dbContext =>
1555
1585
{
1556
- dbContext . MusicTracks . Add ( existingTrack ) ;
1586
+ dbContext . Playlists . Add ( existingPlaylist ) ;
1557
1587
await dbContext . SaveChangesAsync ( ) ;
1558
1588
} ) ;
1559
1589
@@ -1577,32 +1607,36 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1577
1607
new
1578
1608
{
1579
1609
op = "add" ,
1580
- data = new
1610
+ @ref = new
1581
1611
{
1582
1612
type = "playlists" ,
1583
- lid = playlistLocalId ,
1584
- attributes = new
1613
+ id = existingPlaylist . StringId ,
1614
+ relationship = "tracks"
1615
+ } ,
1616
+ data = new [ ]
1617
+ {
1618
+ new
1585
1619
{
1586
- name = newPlaylistName
1587
- } ,
1588
- relationships = new
1620
+ type = "musicTracks" ,
1621
+ lid = trackLocalId
1622
+ }
1623
+ }
1624
+ } ,
1625
+ new
1626
+ {
1627
+ op = "remove" ,
1628
+ @ref = new
1629
+ {
1630
+ type = "playlists" ,
1631
+ id = existingPlaylist . StringId ,
1632
+ relationship = "tracks"
1633
+ } ,
1634
+ data = new [ ]
1635
+ {
1636
+ new
1589
1637
{
1590
- tracks = new
1591
- {
1592
- data = new object [ ]
1593
- {
1594
- new
1595
- {
1596
- type = "musicTracks" ,
1597
- id = existingTrack . StringId
1598
- } ,
1599
- new
1600
- {
1601
- type = "musicTracks" ,
1602
- lid = trackLocalId
1603
- }
1604
- }
1605
- }
1638
+ type = "musicTracks" ,
1639
+ id = existingPlaylist . PlaylistMusicTracks [ 1 ] . MusicTrack . StringId
1606
1640
}
1607
1641
}
1608
1642
} ,
@@ -1612,7 +1646,7 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1612
1646
@ref = new
1613
1647
{
1614
1648
type = "playlists" ,
1615
- lid = playlistLocalId ,
1649
+ id = existingPlaylist . StringId ,
1616
1650
relationship = "tracks"
1617
1651
} ,
1618
1652
data = new [ ]
@@ -1635,33 +1669,28 @@ await _testContext.RunOnDatabaseAsync(async dbContext =>
1635
1669
// Assert
1636
1670
httpResponse . Should ( ) . HaveStatusCode ( HttpStatusCode . OK ) ;
1637
1671
1638
- responseDocument . Results . Should ( ) . HaveCount ( 3 ) ;
1672
+ responseDocument . Results . Should ( ) . HaveCount ( 4 ) ;
1639
1673
1640
1674
responseDocument . Results [ 0 ] . SingleData . Should ( ) . NotBeNull ( ) ;
1641
1675
responseDocument . Results [ 0 ] . SingleData . Type . Should ( ) . Be ( "musicTracks" ) ;
1642
1676
responseDocument . Results [ 0 ] . SingleData . Lid . Should ( ) . BeNull ( ) ;
1643
1677
responseDocument . Results [ 0 ] . SingleData . Attributes [ "title" ] . Should ( ) . Be ( newTrackTitle ) ;
1644
1678
1645
- responseDocument . Results [ 1 ] . SingleData . Should ( ) . NotBeNull ( ) ;
1646
- responseDocument . Results [ 1 ] . SingleData . Type . Should ( ) . Be ( "playlists" ) ;
1647
- responseDocument . Results [ 1 ] . SingleData . Lid . Should ( ) . BeNull ( ) ;
1648
- responseDocument . Results [ 1 ] . SingleData . Attributes [ "name" ] . Should ( ) . Be ( newPlaylistName ) ;
1679
+ responseDocument . Results [ 1 ] . Data . Should ( ) . BeNull ( ) ;
1649
1680
1650
1681
responseDocument . Results [ 2 ] . Data . Should ( ) . BeNull ( ) ;
1651
1682
1652
- var newPlaylistId = long . Parse ( responseDocument . Results [ 1 ] . SingleData . Id ) ;
1683
+ responseDocument . Results [ 3 ] . Data . Should ( ) . BeNull ( ) ;
1653
1684
1654
1685
await _testContext . RunOnDatabaseAsync ( async dbContext =>
1655
1686
{
1656
1687
var playlistInDatabase = await dbContext . Playlists
1657
1688
. Include ( playlist => playlist . PlaylistMusicTracks )
1658
1689
. ThenInclude ( playlistMusicTrack => playlistMusicTrack . MusicTrack )
1659
- . FirstAsync ( playlist => playlist . Id == newPlaylistId ) ;
1660
-
1661
- playlistInDatabase . Name . Should ( ) . Be ( newPlaylistName ) ;
1690
+ . FirstAsync ( playlist => playlist . Id == existingPlaylist . Id ) ;
1662
1691
1663
1692
playlistInDatabase . PlaylistMusicTracks . Should ( ) . HaveCount ( 1 ) ;
1664
- playlistInDatabase . PlaylistMusicTracks [ 0 ] . MusicTrack . Id . Should ( ) . Be ( existingTrack . Id ) ;
1693
+ playlistInDatabase . PlaylistMusicTracks [ 0 ] . MusicTrack . Id . Should ( ) . Be ( existingPlaylist . PlaylistMusicTracks [ 0 ] . MusicTrack . Id ) ;
1665
1694
} ) ;
1666
1695
}
1667
1696
0 commit comments