Skip to content

Commit 14a5702

Browse files
committed
Added Client and Network unit tests
1 parent 4e8327c commit 14a5702

3 files changed

Lines changed: 138 additions & 0 deletions

File tree

Tests/LyricsScraperNET.UnitTest/LyricsScraperClientTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,34 @@ public void AddAndRemoveExternalProvider_ShouldBeSwitched()
304304
Assert.Null(lyricsScraperClient[externalProviderType]);
305305
}
306306

307+
[Theory]
308+
[InlineData(ExternalProviderType.AZLyrics)]
309+
[InlineData(ExternalProviderType.None)]
310+
public void RemoveProvider_NotExisted_ShouldNotThrowException(ExternalProviderType externalProviderType)
311+
{
312+
// Arrange
313+
var lyricsScraperClient = new LyricsScraperClient();
314+
315+
// Assert 0
316+
Assert.Null(lyricsScraperClient[externalProviderType]);
317+
318+
// Act
319+
var exception = Record.Exception(() => lyricsScraperClient.RemoveProvider(externalProviderType));
320+
321+
// Assert 1
322+
Assert.Null(exception);
323+
}
324+
325+
[Fact]
326+
public void AddProvider_NullProvider_ShouldThrowException()
327+
{
328+
// Arrange
329+
var lyricsScraperClient = new LyricsScraperClient();
330+
331+
// Act & Assert
332+
Assert.Throws<ArgumentNullException>(() => lyricsScraperClient.AddProvider(null));
333+
}
334+
307335
[Fact]
308336
public void SearchLyric_Should_Throw_OperationCanceledException_When_Cancellation_Is_Requested()
309337
{
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using LyricsScraperNET.Network;
2+
using System;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
using Xunit;
6+
7+
namespace LyricsScraperNET.UnitTest.Network
8+
{
9+
public class HtmlAgilityWebClientTests
10+
{
11+
[Fact]
12+
public void Load_InvalidUri_ShouldReturnEmptyString()
13+
{
14+
// Arrange
15+
var webClient = new HtmlAgilityWebClient();
16+
var invalidUri = new Uri("http://nonexistent12345123.url");
17+
18+
// Act
19+
var result = webClient.Load(invalidUri, CancellationToken.None);
20+
21+
// Assert
22+
Assert.Equal(string.Empty, result);
23+
}
24+
25+
[Fact]
26+
public async Task LoadAsync_InvalidUri_ShouldReturnEmptyString()
27+
{
28+
// Arrange
29+
var webClient = new HtmlAgilityWebClient();
30+
var invalidUri = new Uri("http://nonexistent12345123.url");
31+
32+
// Act
33+
var result = await webClient.LoadAsync(invalidUri, CancellationToken.None);
34+
35+
// Assert
36+
Assert.Equal(string.Empty, result);
37+
}
38+
}
39+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
using LyricsScraperNET.Network;
2+
using System;
3+
using System.Threading;
4+
using System.Threading.Tasks;
5+
using Xunit;
6+
7+
namespace LyricsScraperNET.UnitTest.Network
8+
{
9+
public class NetHttpClientTests
10+
{
11+
[Fact]
12+
public void Load_InvalidUri_ShouldReturnEmptyString()
13+
{
14+
// Arrange
15+
var webClient = new NetHttpClient();
16+
var invalidUri = new Uri("http://nonexistent12345123.url");
17+
18+
// Act
19+
var result = webClient.Load(invalidUri, CancellationToken.None);
20+
21+
// Assert
22+
Assert.Equal(string.Empty, result);
23+
}
24+
25+
[Fact]
26+
public void Load_CancelledToken_ShouldThrowException()
27+
{
28+
// Arrange
29+
var webClient = new NetHttpClient();
30+
var invalidUri = new Uri("http://nonexistent12345123.url");
31+
var token = GetCancelledCancellationToken();
32+
33+
// Act & Assert
34+
Assert.Throws<TaskCanceledException>(() => webClient.Load(invalidUri, token));
35+
}
36+
37+
[Fact]
38+
public async Task LoadAsync_InvalidUri_ShouldReturnEmptyString()
39+
{
40+
// Arrange
41+
var webClient = new NetHttpClient();
42+
var invalidUri = new Uri("http://nonexistent12345123.url");
43+
44+
// Act
45+
var result = await webClient.LoadAsync(invalidUri, CancellationToken.None);
46+
47+
// Assert
48+
Assert.Equal(string.Empty, result);
49+
}
50+
51+
[Fact]
52+
public async Task LoadAsync_CancelledToken_ShouldThrowException()
53+
{
54+
// Arrange
55+
var webClient = new NetHttpClient();
56+
var invalidUri = new Uri("http://nonexistent12345123.url");
57+
var token = GetCancelledCancellationToken();
58+
59+
// Act & Assert
60+
await Assert.ThrowsAsync<TaskCanceledException>(async () => await webClient.LoadAsync(invalidUri, token));
61+
}
62+
63+
private CancellationToken GetCancelledCancellationToken()
64+
{
65+
CancellationTokenSource source = new CancellationTokenSource();
66+
CancellationToken token = source.Token;
67+
source.Cancel();
68+
return token;
69+
}
70+
}
71+
}

0 commit comments

Comments
 (0)