@@ -79,6 +79,49 @@ public async Task GetOrCreateChannelAsync_ShouldCreateChannel_WhenChannelDoesNot
7979 Assert . Equal ( channelName , result . Name ) ;
8080 }
8181
82+ [ Fact ]
83+ public async Task GetChannelAsync_ShouldReturnChannel_WhenChannelExists ( )
84+ {
85+ // Arrange
86+ var channelName = "ExistingChannel" ;
87+ var channelJson = """
88+ {
89+ "PROJECT_ID": 676550906,
90+ "common.ALLTYPES_NAME": "ExistingChannel",
91+ "common.ALLTYPES_DESCRIPTION": "Example Channel",
92+ "servermain.MULTIPLE_TYPES_DEVICE_DRIVER": "Simulator"
93+ }
94+ """ ;
95+
96+ _httpMessageHandlerMock . SetupRequest ( HttpMethod . Get , TEST_ENDPOINT + $ "/config/v1/project/channels/{ channelName } ")
97+ . ReturnsResponse ( channelJson , "application/json" ) ;
98+
99+ // Act
100+ var result = await _projectApiHandler . Channels . GetChannelAsync ( channelName ) ;
101+
102+ // Assert
103+ Assert . NotNull ( result ) ;
104+ Assert . Equal ( channelName , result . Name ) ;
105+ }
106+
107+ [ Fact ]
108+ public async Task GetChannelAsync_ShouldReturnNull_WhenChannelDoesNotExist ( )
109+ {
110+ // Arrange
111+ await ConfigureToServeDrivers ( ) ;
112+
113+ var channelName = "NewChannel" ;
114+
115+ _httpMessageHandlerMock . SetupRequest ( HttpMethod . Get , TEST_ENDPOINT + $ "/config/v1/project/channels/{ channelName } ")
116+ . ReturnsResponse ( HttpStatusCode . NotFound ) ;
117+
118+ // Act
119+ var result = await _projectApiHandler . Channels . GetChannelAsync ( channelName ) ;
120+
121+ // Assert
122+ Assert . Null ( result ) ;
123+ }
124+
82125 [ Fact ]
83126 public async Task UpdateChannelAsync_ShouldReturnTrue_WhenUpdateIsSuccessful ( )
84127 {
@@ -190,6 +233,57 @@ public async Task GetOrCreateDeviceAsync_ShouldCreateDevice_WhenDeviceDoesNotExi
190233 Assert . Equal ( deviceName , result . Name ) ;
191234 }
192235
236+ [ Fact ]
237+ public async Task GetDeviceAsync_ShouldReturnDevice_WhenDeviceExists ( )
238+ {
239+ // Arrange
240+ await ConfigureToServeDrivers ( ) ;
241+ var channel = new Channel { Name = "ExistingChannel" } ;
242+ var deviceName = "ExistingDevice" ;
243+ var deviceJson = """
244+ {
245+ "PROJECT_ID": 676550906,
246+ "common.ALLTYPES_NAME": "ExistingDevice",
247+ "common.ALLTYPES_DESCRIPTION": "Example Device",
248+ "servermain.DEVICE_CHANNEL_ASSIGNMENT": "ExistingChannel"
249+ }
250+ """ ;
251+
252+ _httpMessageHandlerMock . SetupRequest ( HttpMethod . Get , TEST_ENDPOINT + $ "/config/v1/project/channels/{ channel . Name } /devices/{ deviceName } ")
253+ . ReturnsResponse ( deviceJson , "application/json" ) ;
254+
255+ _httpMessageHandlerMock . SetupRequest ( HttpMethod . Get , TEST_ENDPOINT + $ "/config/v1/project/channels/{ channel . Name } /devices/{ deviceName } /tags")
256+ . ReturnsResponse ( "[]" , "application/json" ) ;
257+
258+ _httpMessageHandlerMock . SetupRequest ( HttpMethod . Get , TEST_ENDPOINT + $ "/config/v1/project/channels/{ channel . Name } /devices/{ deviceName } /tag_groups")
259+ . ReturnsResponse ( "[]" , "application/json" ) ;
260+
261+ // Act
262+ var result = await _projectApiHandler . Devices . GetDeviceAsync ( channel , deviceName ) ;
263+
264+ // Assert
265+ Assert . NotNull ( result ) ;
266+ Assert . Equal ( deviceName , result . Name ) ;
267+ }
268+
269+ [ Fact ]
270+ public async Task GetDeviceAsync_ShouldReturnNull_WhenDeviceDoesNotExist ( )
271+ {
272+ // Arrange
273+ await ConfigureToServeDrivers ( ) ;
274+ var channel = new Channel { Name = "ExistingChannel" , DeviceDriver = "Simulator" } ;
275+ var deviceName = "NewDevice" ;
276+
277+ _httpMessageHandlerMock . SetupRequest ( HttpMethod . Get , TEST_ENDPOINT + $ "/config/v1/project/channels/{ channel . Name } /devices/{ deviceName } ")
278+ . ReturnsResponse ( HttpStatusCode . NotFound ) ;
279+
280+ // Act
281+ var result = await _projectApiHandler . Devices . GetDeviceAsync ( channel , deviceName ) ;
282+
283+ // Assert
284+ Assert . Null ( result ) ;
285+ }
286+
193287 [ Fact ]
194288 public async Task UpdateDeviceAsync_ShouldReturnTrue_WhenUpdateIsSuccessful ( )
195289 {
@@ -269,7 +363,8 @@ public async Task LoadTagGroupsRecursiveAsync_ShouldLoadTagGroupsCorrectly()
269363 . ReturnsResponse ( "[]" , "application/json" ) ;
270364
271365 var tagGroup = new DeviceTagGroup { Name = "TagGroup1" , Owner = device } ;
272- var tagGroups = new List < DeviceTagGroup > { tagGroup } ;
366+ var tagGroup2 = new DeviceTagGroup { Name = "TagGroup1" , Owner = tagGroup } ;
367+ var tagGroups = new List < DeviceTagGroup > { tagGroup , tagGroup2 } ;
273368
274369 // Act
275370 await ProjectApiHandler . LoadTagGroupsRecursiveAsync ( _kepwareApiClient , tagGroups ) ;
@@ -278,6 +373,8 @@ public async Task LoadTagGroupsRecursiveAsync_ShouldLoadTagGroupsCorrectly()
278373 Assert . NotNull ( tagGroup . TagGroups ) ;
279374 Assert . Single ( tagGroup . TagGroups ) ;
280375 Assert . Equal ( "TagGroup1" , tagGroup . TagGroups . First ( ) . Name ) ;
376+ Assert . NotNull ( tagGroup2 . TagGroups ) ;
377+ Assert . Empty ( tagGroup2 . TagGroups ) ;
281378 }
282379
283380 #endregion
0 commit comments