1+ using System . Collections . Generic ;
2+ using System . Linq ;
3+
4+ using NSubstitute ;
5+
6+ using NUnit . Framework ;
7+
8+ using Ploeh . AutoFixture ;
9+
10+ using Wyam . LiveReload ;
11+
12+ namespace Wyam . Tests . LiveReload
13+ {
14+ [ TestFixture ]
15+ public class LiveReloadServerTests
16+ {
17+ private static readonly Fixture AutoFixture = new Fixture ( ) ;
18+
19+ [ Test ]
20+ public void RebuildCompletedShouldNotifyConnectedClients ( )
21+ {
22+ var changedFiles = AutoFixture . CreateMany < string > ( 1 ) . ToList ( ) ;
23+
24+ var reloadClientMock = Substitute . For < IReloadClient > ( ) ;
25+ reloadClientMock . IsConnected . Returns ( true ) ;
26+
27+ var serviceLocatorMock = Substitute . ForPartsOf < ReloadClientServiceLocator > ( ) ;
28+ serviceLocatorMock . ReloadClients . Returns ( new List < IReloadClient > { reloadClientMock } ) ;
29+
30+ var server = new LiveReloadServer ( serviceLocatorMock ) ;
31+ server . RebuildCompleted ( changedFiles ) ;
32+
33+ reloadClientMock . Received ( ) . NotifyOfChanges ( Arg . Is < string > ( s => changedFiles . Contains ( s ) ) , Arg . Is ( true ) ) ;
34+ }
35+
36+ [ Test ]
37+ public void RebuildCompletedShouldAvoidMissingClients ( )
38+ {
39+ var changedFiles = AutoFixture . CreateMany < string > ( 1 ) . ToList ( ) ;
40+
41+ var reloadClientMock = Substitute . For < IReloadClient > ( ) ;
42+ reloadClientMock . IsConnected . Returns ( false ) ;
43+
44+ var serviceLocatorMock = Substitute . ForPartsOf < ReloadClientServiceLocator > ( ) ;
45+ serviceLocatorMock . ReloadClients . Returns ( new List < IReloadClient > { reloadClientMock } ) ;
46+
47+ var server = new LiveReloadServer ( serviceLocatorMock ) ;
48+ server . RebuildCompleted ( changedFiles ) ;
49+
50+ reloadClientMock . DidNotReceive ( ) . NotifyOfChanges ( Arg . Any < string > ( ) , Arg . Any < bool > ( ) ) ;
51+ }
52+
53+ [ Test ]
54+ public void RebuildCompletedShouldNotifyOfAllChangedFiles ( )
55+ {
56+ var changedFiles = AutoFixture . CreateMany < string > ( ) . ToList ( ) ;
57+
58+ var reloadClientMock = Substitute . For < IReloadClient > ( ) ;
59+ reloadClientMock . IsConnected . Returns ( true ) ;
60+
61+ var serviceLocatorMock = Substitute . ForPartsOf < ReloadClientServiceLocator > ( ) ;
62+ serviceLocatorMock . ReloadClients . Returns ( new List < IReloadClient > { reloadClientMock } ) ;
63+
64+ var server = new LiveReloadServer ( serviceLocatorMock ) ;
65+ server . RebuildCompleted ( changedFiles ) ;
66+
67+ foreach ( var changedFile in changedFiles )
68+ {
69+ reloadClientMock . Received ( ) . NotifyOfChanges ( Arg . Is ( changedFile ) , Arg . Is ( true ) ) ;
70+ }
71+ }
72+ }
73+ }
0 commit comments