Skip to content

Commit faa0e0c

Browse files
author
tokarev
committed
add integration tests
1 parent b10cd98 commit faa0e0c

File tree

9 files changed

+266
-6
lines changed

9 files changed

+266
-6
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using FluentAssertions;
2+
3+
namespace ReversoAPI.Web.IntegrationTests
4+
{
5+
public class ConjugationTests
6+
{
7+
private static IReversoClient ReversoClient = new ReversoClient();
8+
9+
[Theory]
10+
[MemberData(nameof(GetTestValues))]
11+
public async Task GetConjugationForAllValidLanguages(string text, Language source)
12+
{
13+
var conjugation = await ReversoClient.Conjugation.GetAsync(text, source);
14+
15+
conjugation.Should().NotBeNull();
16+
conjugation.Text.Should().NotBeNullOrWhiteSpace();
17+
conjugation.Language.Should().Be(source);
18+
conjugation.Conjugations.Should().HaveCountGreaterThan(0);
19+
foreach (var conjugationTypes in conjugation.Conjugations)
20+
{
21+
conjugationTypes.Key.Should().NotBeNullOrWhiteSpace();
22+
foreach (var example in conjugationTypes.Value)
23+
{
24+
example.Should().NotBeNull();
25+
example.Language.Should().Be(source);
26+
example.Group.Should().NotBeNullOrWhiteSpace();
27+
example.Verb.Should().NotBeNullOrWhiteSpace();
28+
}
29+
}
30+
}
31+
32+
public static IEnumerable<object[]> GetTestValues()
33+
{
34+
yield return new object[] { "go", Language.English };
35+
yield return new object[] { "aller", Language.French };
36+
yield return new object[] { "ir", Language.Spanish };
37+
yield return new object[] { "gehen", Language.German };
38+
yield return new object[] { "andare", Language.Italian };
39+
yield return new object[] { "ir", Language.Portuguese };
40+
yield return new object[] { "пойти", Language.Russian };
41+
yield return new object[] { "行く", Language.Japanese };
42+
yield return new object[] { "ללכת", Language.Hebrew };
43+
yield return new object[] { "ذهب", Language.Arabic };
44+
}
45+
}
46+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using FluentAssertions;
2+
3+
namespace ReversoAPI.Web.IntegrationTests
4+
{
5+
public class ContextTests
6+
{
7+
private static IReversoClient ReversoClient = new ReversoClient();
8+
private readonly static Language[] SupportedLanguages =
9+
{
10+
Language.Arabic, Language.German, Language.Spanish,
11+
Language.French, Language.Hebrew, Language.Italian,
12+
Language.Japanese, Language.Korean, Language.Dutch,
13+
Language.Polish, Language.Portuguese, Language.Romanian,
14+
Language.Russian, Language.Swedish, Language.Turkish,
15+
Language.Ukrainian, Language.Chinese, Language.English,
16+
};
17+
18+
[Theory]
19+
[MemberData(nameof(GetLanguages))]
20+
public async Task GetContextForAllValidLanguages(Language source, Language target)
21+
{
22+
var testText = "peace";
23+
var context = await ReversoClient.Context.GetAsync(testText, source, target);
24+
25+
context.Should().NotBeNull();
26+
context.Text.Should().NotBeNullOrWhiteSpace();
27+
context.Source.Should().Be(source);
28+
context.Target.Should().Be(target);
29+
context.Examples.Should().HaveCountGreaterThan(0);
30+
foreach (var example in context.Examples)
31+
{
32+
example.Source.Should().NotBeNull();
33+
example.Source.Text.Should().NotBeNullOrWhiteSpace();
34+
example.Source.Language.Should().Be(source);
35+
36+
example.Target.Should().NotBeNull();
37+
example.Target.Text.Should().NotBeNullOrWhiteSpace();
38+
example.Target.Language.Should().Be(target);
39+
}
40+
}
41+
42+
public static IEnumerable<object[]> GetLanguages()
43+
{
44+
return from source in SupportedLanguages.Where(x => x != Language.English)
45+
select new object[] { Language.English, source };
46+
}
47+
}
48+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using FluentAssertions;
2+
3+
namespace ReversoAPI.Web.IntegrationTests
4+
{
5+
public class GrammarCheck
6+
{
7+
private static IReversoClient ReversoClient = new ReversoClient();
8+
9+
[Theory]
10+
[MemberData(nameof(GetTestValues))]
11+
public async Task MakeGrammarCheckForValidLanguages(string text, Language source)
12+
{
13+
var spelling = await ReversoClient.Spelling.GetAsync(text, source);
14+
15+
spelling.Should().NotBeNull();
16+
spelling.Text.Should().NotBeNullOrWhiteSpace();
17+
spelling.Language.Should().Be(source);
18+
spelling.Correction.Should().HaveCountGreaterThan(0);
19+
foreach (var example in spelling.Correction)
20+
{
21+
example.CorrectedText.Should().NotBeNullOrWhiteSpace();
22+
example.MistakeText.Should().NotBeNullOrWhiteSpace();
23+
example.EndIndex.Should().NotBe(0);
24+
example.ShortDescription.Should().NotBeNullOrWhiteSpace();
25+
example.LongDescription.Should().NotBeNullOrWhiteSpace();
26+
example.Suggestions.Should().HaveCountGreaterThan(0);
27+
}
28+
}
29+
30+
public static IEnumerable<object[]> GetTestValues()
31+
{
32+
yield return new object[] { "encounterrr", Language.English };
33+
yield return new object[] { "allerrr", Language.French };
34+
yield return new object[] { "encuentrooo", Language.Spanish };
35+
yield return new object[] { "andareeee", Language.Italian };
36+
}
37+
}
38+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net7.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>disable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
<IsTestProject>true</IsTestProject>
10+
</PropertyGroup>
11+
12+
<ItemGroup>
13+
<PackageReference Include="FluentAssertions" Version="6.12.0" />
14+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
15+
<PackageReference Include="xunit" Version="2.4.2" />
16+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
17+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
18+
<PrivateAssets>all</PrivateAssets>
19+
</PackageReference>
20+
<PackageReference Include="coverlet.collector" Version="3.2.0">
21+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
22+
<PrivateAssets>all</PrivateAssets>
23+
</PackageReference>
24+
</ItemGroup>
25+
26+
<ItemGroup>
27+
<ProjectReference Include="..\ReversoAPI.Web\ReversoAPI.Web.csproj" />
28+
</ItemGroup>
29+
30+
</Project>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
using FluentAssertions;
2+
3+
namespace ReversoAPI.Web.IntegrationTests
4+
{
5+
public class SynonymsTests
6+
{
7+
private static IReversoClient ReversoClient = new ReversoClient();
8+
9+
[Theory]
10+
[MemberData(nameof(GetTestValues))]
11+
public async Task GetSynonymsAllValidLanguages(string text, Language source)
12+
{
13+
var synonyms = await ReversoClient.Synonyms.GetAsync(text, source);
14+
15+
synonyms.Should().NotBeNull();
16+
synonyms.Text.Should().NotBeNullOrWhiteSpace();
17+
synonyms.Language.Should().Be(source);
18+
synonyms.Synonyms.Should().HaveCountGreaterThan(0);
19+
foreach (var example in synonyms.Synonyms)
20+
{
21+
example.Should().NotBeNull();
22+
example.Value.Should().NotBeNullOrWhiteSpace();
23+
example.Language.Should().Be(source);
24+
}
25+
}
26+
27+
public static IEnumerable<object[]> GetTestValues()
28+
{
29+
yield return new object[] { "go", Language.English };
30+
yield return new object[] { "aller", Language.French };
31+
yield return new object[] { "encuentro", Language.Spanish };
32+
yield return new object[] { "gehen", Language.German };
33+
yield return new object[] { "andare", Language.Italian };
34+
yield return new object[] { "ir", Language.Portuguese };
35+
yield return new object[] { "пойти", Language.Russian };
36+
yield return new object[] { "行く", Language.Japanese };
37+
yield return new object[] { "ללכת", Language.Hebrew };
38+
yield return new object[] { "ذهب", Language.Arabic };
39+
yield return new object[] { "tegenkomen", Language.Dutch };
40+
yield return new object[] { "spotkanie", Language.Polish };
41+
yield return new object[] { "întâlnire", Language.Romanian };
42+
}
43+
}
44+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using FluentAssertions;
2+
3+
namespace ReversoAPI.Web.IntegrationTests
4+
{
5+
public class TranslationTests
6+
{
7+
private static IReversoClient ReversoClient = new ReversoClient();
8+
private readonly static Language[] SupportedLanguages =
9+
{
10+
Language.Arabic, Language.Chinese, Language.Czech,
11+
Language.Danish, Language.Dutch, Language.French,
12+
Language.German, Language.Greek, Language.Hebrew,
13+
Language.Hindi, Language.Hungarian, Language.Italian,
14+
Language.Japanese, Language.Korean, Language.Persian,
15+
Language.Polish, Language.Portuguese, Language.Romanian,
16+
Language.Russian, Language.Slovak, Language.Spanish,
17+
Language.Swedish, Language.Thai, Language.Turkish,
18+
Language.Ukrainian, Language.English,
19+
};
20+
21+
[Theory]
22+
[MemberData(nameof(GetLanguages))]
23+
public async Task TranslateToAllValidLanguages(Language source, Language target)
24+
{
25+
var testText = "peace";
26+
var translation = await ReversoClient.Translation.GetAsync(testText, source, target);
27+
28+
translation.Should().NotBeNull();
29+
translation.Text.Should().NotBeNullOrWhiteSpace();
30+
translation.Source.Should().Be(source);
31+
translation.Target.Should().Be(target);
32+
translation.Translations.Should().HaveCountGreaterThan(0);
33+
foreach (var translationExample in translation.Translations)
34+
{
35+
translationExample.Text.Should().NotBeNullOrWhiteSpace();
36+
translationExample.Source.Should().Be(source);
37+
translationExample.Target.Should().Be(target);
38+
}
39+
}
40+
41+
public static IEnumerable<object[]> GetLanguages()
42+
{
43+
return from source in SupportedLanguages.Where(x => x != Language.English)
44+
select new object[] { Language.English, source };
45+
}
46+
}
47+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global using Xunit;

ReversoAPI.Web/SynonymsFeature/Application/Validators/SynonymsRequestValidator.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
using System;
2-
using System.Linq;
3-
using System.Collections.Generic;
4-
using ReversoAPI.Web.Shared.Application.Interfaces;
1+
using ReversoAPI.Web.Shared.Application.Interfaces;
52
using ReversoAPI.Web.Shared.Application.Validators;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
66

77
namespace ReversoAPI.Web.SynonymsFeature.Application.Validators
88
{
@@ -12,9 +12,9 @@ public class SynonymsRequestValidator : AbstractValidator
1212
{
1313
Language.Arabic, Language.German, Language.Spanish,
1414
Language.French, Language.Hebrew, Language.Italian,
15-
Language.Japanese, Language.Korean, Language.Dutch,
15+
Language.Japanese, Language.Dutch, Language.English,
1616
Language.Polish, Language.Portuguese, Language.Romanian,
17-
Language.Russian, Language.English
17+
Language.Russian,
1818
};
1919

2020
public SynonymsRequestValidator(string text, Language language)

ReversoAPI.sln

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReversoAPI.Web.Tests", "Rev
99
EndProject
1010
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ReversoAPI.Web.Examples", "ReversoAPI.Web.Examples\ReversoAPI.Web.Examples.csproj", "{54348FC9-7A74-43AD-B9C6-54DE089CC13D}"
1111
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReversoAPI.Web.IntegrationTests", "ReversoAPI.Web.IntegrationTests\ReversoAPI.Web.IntegrationTests.csproj", "{BD83C674-4C80-4825-9A7A-2153DAD5DB04}"
13+
EndProject
1214
Global
1315
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1416
Debug|Any CPU = Debug|Any CPU
@@ -27,6 +29,10 @@ Global
2729
{54348FC9-7A74-43AD-B9C6-54DE089CC13D}.Debug|Any CPU.Build.0 = Debug|Any CPU
2830
{54348FC9-7A74-43AD-B9C6-54DE089CC13D}.Release|Any CPU.ActiveCfg = Release|Any CPU
2931
{54348FC9-7A74-43AD-B9C6-54DE089CC13D}.Release|Any CPU.Build.0 = Release|Any CPU
32+
{BD83C674-4C80-4825-9A7A-2153DAD5DB04}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33+
{BD83C674-4C80-4825-9A7A-2153DAD5DB04}.Debug|Any CPU.Build.0 = Debug|Any CPU
34+
{BD83C674-4C80-4825-9A7A-2153DAD5DB04}.Release|Any CPU.ActiveCfg = Release|Any CPU
35+
{BD83C674-4C80-4825-9A7A-2153DAD5DB04}.Release|Any CPU.Build.0 = Release|Any CPU
3036
EndGlobalSection
3137
GlobalSection(SolutionProperties) = preSolution
3238
HideSolutionNode = FALSE

0 commit comments

Comments
 (0)