@@ -21,15 +21,17 @@ public WorkItemsControllerTest()
2121 public async Task WorkItems_InvalidModelState_ReturnsEmptyView ( )
2222 {
2323 // Arrange
24- _controller . ModelState . AddModelError ( "Error" , "Invalid model state" ) ;
24+ Guid projectId = Guid . NewGuid ( ) ;
25+ _controller . ModelState . AddModelError ( "Error" , "Invalid model state" ) ;
2526
2627 // Act
27- var result = await _controller . WorkItems ( Guid . NewGuid ( ) , "TestProject" ) ;
28+ var result = await _controller . WorkItems ( projectId , "TestProject" ) ;
2829
2930 // Assert
3031 var viewResult = Assert . IsType < ViewResult > ( result ) ;
31- var model = Assert . IsType < WorkItem [ ] > ( viewResult . Model ) ;
32- Assert . Empty ( model ) ;
32+ var model = Assert . IsType < Tuple < Guid , WorkItem [ ] > > ( viewResult . Model ) ;
33+ Assert . Equal ( projectId , model . Item1 ) ;
34+ Assert . Empty ( model . Item2 ) ;
3335 }
3436
3537 [ Fact ]
@@ -69,10 +71,11 @@ public async Task WorkItems_ValidModelState_ReturnsWorkItems()
6971
7072 // Assert
7173 var viewResult = Assert . IsType < ViewResult > ( result ) ;
72- var model = Assert . IsType < WorkItem [ ] > ( viewResult . Model ) ;
73- Assert . Equal ( 2 , model . Length ) ;
74- Assert . Contains ( model , w => w . Id == 1 && w . Fields . SystemTitle == "WorkItem1" ) ;
75- Assert . Contains ( model , w => w . Id == 2 && w . Fields . SystemTitle == "WorkItem2" ) ;
74+ var model = Assert . IsType < Tuple < Guid , WorkItem [ ] > > ( viewResult . Model ) ;
75+ Assert . Equal ( projectId , model . Item1 ) ;
76+ Assert . Equal ( 2 , model . Item2 . Length ) ;
77+ Assert . Contains ( model . Item2 , w => w . Id == 1 && w . Fields . SystemTitle == "WorkItem1" ) ;
78+ Assert . Contains ( model . Item2 , w => w . Id == 2 && w . Fields . SystemTitle == "WorkItem2" ) ;
7679 }
7780
7881 [ Fact ]
@@ -91,7 +94,73 @@ public async Task WorkItems_ValidModelState_NoWorkItems_ReturnsEmptyView()
9194
9295 // Assert
9396 var viewResult = Assert . IsType < ViewResult > ( result ) ;
94- var model = Assert . IsType < WorkItem [ ] > ( viewResult . Model ) ;
95- Assert . Empty ( model ) ;
97+ var model = Assert . IsType < Tuple < Guid , WorkItem [ ] > > ( viewResult . Model ) ;
98+ Assert . Equal ( projectId , model . Item1 ) ;
99+ Assert . Empty ( model . Item2 ) ;
96100 }
97- }
101+
102+ [ Fact ]
103+ public async Task WorkItem_InvalidModelState_ReturnsEmptyWorkItem ( )
104+ {
105+ // Arrange
106+ _controller . ModelState . AddModelError ( "Error" , "Invalid model state" ) ;
107+
108+ // Act
109+ var result = await _controller . WorkItem ( Guid . NewGuid ( ) , 1 ) ;
110+
111+ // Assert
112+ var viewResult = Assert . IsType < ViewResult > ( result ) ;
113+ var model = Assert . IsType < WorkItem > ( viewResult . Model ) ;
114+ Assert . NotNull ( model ) ;
115+ Assert . Equal ( 0 , model . Id ) ;
116+ }
117+
118+ [ Fact ]
119+ public async Task WorkItem_ValidModelState_ReturnsWorkItem ( )
120+ {
121+ // Arrange
122+ var projectId = Guid . NewGuid ( ) ;
123+ var workitemId = 1 ;
124+ var expectedWorkItem = new WorkItem
125+ {
126+ Id = workitemId ,
127+ Fields = new Fields { SystemTitle = "Test WorkItem" }
128+ } ;
129+
130+ _mockWorkItemService
131+ . Setup ( s => s . GetWorkItemAsync ( projectId , workitemId ) )
132+ . ReturnsAsync ( expectedWorkItem ) ;
133+
134+ // Act
135+ var result = await _controller . WorkItem ( projectId , workitemId ) ;
136+
137+ // Assert
138+ var viewResult = Assert . IsType < ViewResult > ( result ) ;
139+ var model = Assert . IsType < WorkItem > ( viewResult . Model ) ;
140+ Assert . NotNull ( model ) ;
141+ Assert . Equal ( expectedWorkItem . Id , model . Id ) ;
142+ Assert . Equal ( expectedWorkItem . Fields . SystemTitle , model . Fields . SystemTitle ) ;
143+ }
144+
145+ [ Fact ]
146+ public async Task WorkItem_ValidModelState_WorkItemNotFound_ReturnsEmptyWorkItem ( )
147+ {
148+ // Arrange
149+ var projectId = Guid . NewGuid ( ) ;
150+ var workitemId = 1 ;
151+
152+ _mockWorkItemService
153+ . Setup ( s => s . GetWorkItemAsync ( projectId , workitemId ) )
154+ . ReturnsAsync ( ( WorkItem ? ) null ) ;
155+
156+ // Act
157+ var result = await _controller . WorkItem ( projectId , workitemId ) ;
158+
159+ // Assert
160+ var viewResult = Assert . IsType < ViewResult > ( result ) ;
161+ var model = Assert . IsType < WorkItem > ( viewResult . Model ) ;
162+ Assert . NotNull ( model ) ;
163+ Assert . Equal ( 0 , model . Id ) ;
164+ }
165+ }
166+
0 commit comments