Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit feffbbb

Browse files
committed
test: add tests for Azure Translator Test
1 parent 30d2101 commit feffbbb

1 file changed

Lines changed: 152 additions & 0 deletions

File tree

Lines changed: 152 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,152 @@
1+
namespace ResXManager.Tests.Model;
2+
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Globalization;
6+
using System.Reflection;
7+
using System.Threading;
8+
using System.Threading.Tasks;
9+
using ResXManager.Infrastructure;
10+
using ResXManager.Translators;
11+
using Xunit;
12+
13+
public class AzureTranslatorTests
14+
{
15+
private static Uri InvokeCreateUriWithSettings(AzureTranslator sut, ITranslationSession session, Uri endpoint, CultureInfo targetLanguage, string textType)
16+
{
17+
var method = typeof(AzureTranslator).GetMethod("CreateUriWithSettings", BindingFlags.Instance | BindingFlags.NonPublic);
18+
Assert.NotNull(method);
19+
20+
object[] args = [session, endpoint, targetLanguage, textType];
21+
var result = method.Invoke(sut, args);
22+
var uri = Assert.IsType<Uri>(result);
23+
return uri;
24+
}
25+
26+
private static ITranslationSession CreateSession(CultureInfo sourceCulture)
27+
{
28+
return new TranslationSessionStub(sourceCulture);
29+
}
30+
31+
[Fact]
32+
public void WhenCustomCategoryIdIsSet_ShouldAddArgumentToRestRequest()
33+
{
34+
var sut = new AzureTranslator
35+
{
36+
CustomCategoryId = "my-custom-category"
37+
};
38+
39+
var session = CreateSession(CultureInfo.GetCultureInfo("en"));
40+
var endpoint = new Uri("https://example.com/");
41+
var target = CultureInfo.GetCultureInfo("de-DE");
42+
43+
var uri = InvokeCreateUriWithSettings(sut, session, endpoint, target, "plain");
44+
45+
Assert.Contains("category=my-custom-category", uri.Query);
46+
}
47+
48+
[Fact]
49+
public void WhenCustomCategoryIdIsNotSet_ShouldNotAddArgumentToRestRequest()
50+
{
51+
var sut = new AzureTranslator
52+
{
53+
CustomCategoryId = string.Empty
54+
};
55+
56+
var session = CreateSession(CultureInfo.GetCultureInfo("en"));
57+
var endpoint = new Uri("https://example.com/");
58+
var target = CultureInfo.GetCultureInfo("fr-FR");
59+
60+
var uri = InvokeCreateUriWithSettings(sut, session, endpoint, target, "plain");
61+
62+
Assert.DoesNotContain("category=", uri.Query);
63+
}
64+
65+
[Fact]
66+
public void WhenCustomCategoryIdIsWhitespace_ShouldNotAddArgumentToRestRequest()
67+
{
68+
var sut = new AzureTranslator
69+
{
70+
CustomCategoryId = " \t "
71+
};
72+
73+
var session = CreateSession(CultureInfo.GetCultureInfo("en"));
74+
var endpoint = new Uri("https://example.com/");
75+
var target = CultureInfo.GetCultureInfo("it-IT");
76+
77+
var uri = InvokeCreateUriWithSettings(sut, session, endpoint, target, "plain");
78+
79+
Assert.DoesNotContain("category=", uri.Query);
80+
}
81+
82+
[Fact]
83+
public void WhenTextTypeIsHtml_ShouldAddTextTypeHtml()
84+
{
85+
var sut = new AzureTranslator();
86+
var session = CreateSession(CultureInfo.GetCultureInfo("en"));
87+
var endpoint = new Uri("https://example.com/");
88+
var target = CultureInfo.GetCultureInfo("es-ES");
89+
90+
var uri = InvokeCreateUriWithSettings(sut, session, endpoint, target, "html");
91+
92+
Assert.Contains("textType=html", uri.Query);
93+
}
94+
95+
[Fact]
96+
public void WhenLanguagesProvided_ShouldUseIetfLanguageTagsForFromAndTo()
97+
{
98+
var sut = new AzureTranslator();
99+
var session = CreateSession(CultureInfo.GetCultureInfo("en-US"));
100+
var endpoint = new Uri("https://example.com/");
101+
var target = CultureInfo.GetCultureInfo("de-DE");
102+
103+
var uri = InvokeCreateUriWithSettings(sut, session, endpoint, target, "plain");
104+
105+
Assert.Contains("from=en-US", uri.Query);
106+
Assert.Contains("to=de-DE", uri.Query);
107+
}
108+
109+
[Fact]
110+
public void WhenSaveCredentialsToggles_SerializedAuthenticationKeyShouldRespectFlag()
111+
{
112+
var sut = new AzureTranslator
113+
{
114+
SaveCredentials = false,
115+
SerializedAuthenticationKey = "secret"
116+
};
117+
118+
Assert.Null(sut.SerializedAuthenticationKey);
119+
120+
sut.SaveCredentials = true;
121+
Assert.Equal("secret", sut.SerializedAuthenticationKey);
122+
}
123+
124+
[Fact]
125+
public void WhenTranslatorIsCreated_DefaultEndpointShouldBeSet()
126+
{
127+
var sut = new AzureTranslator();
128+
Assert.Equal("https://api.cognitive.microsofttranslator.com", sut.Endpoint);
129+
}
130+
131+
private sealed class TranslationSessionStub : ITranslationSession
132+
{
133+
public TranslationSessionStub(CultureInfo sourceLanguage)
134+
{
135+
SourceLanguage = sourceLanguage;
136+
}
137+
138+
public bool IsActive => false;
139+
public bool IsCanceled => false;
140+
public bool IsComplete => false;
141+
public CancellationToken CancellationToken => CancellationToken.None;
142+
public void Cancel() { }
143+
public ICollection<ITranslationItem> Items => Array.Empty<ITranslationItem>();
144+
public IList<string> Messages => Array.Empty<string>();
145+
public CultureInfo NeutralResourcesLanguage => CultureInfo.InvariantCulture;
146+
public int Progress { get; set; }
147+
public CultureInfo SourceLanguage { get; }
148+
public TaskFactory MainThread => Task.Factory;
149+
public void AddMessage(string text) { }
150+
public void Dispose() { }
151+
}
152+
}

0 commit comments

Comments
 (0)