Skip to content
This repository was archived by the owner on Oct 14, 2025. It is now read-only.

Commit 444ad4d

Browse files
authored
Merge pull request #2 from mtokar3v/ToDomainDrivenDesign
To domain driven design approach
2 parents 5f1fded + 0ac2dd2 commit 444ad4d

File tree

128 files changed

+1169
-715
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+1169
-715
lines changed

ReversoAPI.Web.Examples/Program.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using ReversoAPI.Web.Clients;
2-
using ReversoAPI.Web.Values;
1+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
32

43
namespace ReversoAPI.Web.Examples
54
{
@@ -23,7 +22,7 @@ static async Task Main(string[] args)
2322

2423
await PrintSpellingsAsync(text, source);
2524

26-
await DownloadPronunciationAsync(text, source, Directory.GetCurrentDirectory());
25+
await DownloadPronunciationAsync(text, source, Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), $"{source}.mp3"));
2726
}
2827

2928
private static async Task PrintSpellingsAsync(string text, Language language)

ReversoAPI.Web.Tests/Clients/SpellingClientTests.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
using FluentAssertions;
2-
using Moq;
3-
using ReversoAPI.Web.Clients;
4-
using ReversoAPI.Web.DTOs.SpellingResponseData;
5-
using ReversoAPI.Web.Entities;
6-
using ReversoAPI.Web.Http;
7-
using ReversoAPI.Web.Http.Interfaces;
8-
using ReversoAPI.Web.Values;
1+
using Moq;
2+
using Xunit;
3+
using FluentAssertions;
94
using System;
10-
using System.Collections;
11-
using System.Collections.Generic;
125
using System.IO;
13-
using System.Text;
146
using System.Threading;
157
using System.Threading.Tasks;
16-
using Xunit;
8+
using System.Collections.Generic;
9+
using ReversoAPI.Web.GrammarCheckFeature.Domain.Entities;
10+
using ReversoAPI.Web.GrammarCheckFeature.Domain.ValueObjects;
11+
using ReversoAPI.Web.GrammarCheckFeature.Application.DTOs;
12+
using ReversoAPI.Web.GrammarCheckFeature.Application.Interfaces.Services;
13+
using ReversoAPI.Web.GrammarCheckFeature.Application.Services;
14+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
15+
using ReversoAPI.Web.Shared.Infrastructure.Http;
16+
using ReversoAPI.Web.Shared.Infrastructure.Http.Interfaces;
1717

1818
namespace ReversoAPI.Web.Tests.Clients
1919
{
2020
public class SpellingClientTests
2121
{
2222
private readonly Mock<IAPIConnector> _apiConnector;
23-
private readonly SpellingClient _client;
23+
private readonly ISpellingService _client;
2424

2525
public SpellingClientTests()
2626
{
2727
_apiConnector = new Mock<IAPIConnector>();
28-
_client = new SpellingClient(_apiConnector.Object);
28+
_client = new SpellingService(_apiConnector.Object);
2929
}
3030

3131
[Theory]
@@ -64,14 +64,14 @@ public static IEnumerable<object[]> SpellingDataForTest()
6464
Language = Language.English,
6565
Correction = new []
6666
{
67-
new Correction("Maney", "maney")
68-
{
69-
StartIndex = 0,
70-
EndIndex = 4,
71-
ShortDescription = "Spelling Mistake",
72-
LongDescription = "A proper or common noun is not capitalized",
73-
Suggestions = new[] { "Maney", "money", "many" }
74-
},
67+
new Correction(
68+
"Maney",
69+
"maney",
70+
startIndex: 0,
71+
endIndex: 4,
72+
"Spelling Mistake",
73+
"A proper or common noun is not capitalized",
74+
suggestions: new[] { "Maney", "money", "many" })
7575
}
7676
}
7777
};

ReversoAPI.Web.Tests/Clients/TranslationClientTests.cs

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
1-
using FluentAssertions;
2-
using Moq;
3-
using ReversoAPI.Web.Clients;
4-
using ReversoAPI.Web.DTOs.TranslationObjects;
5-
using ReversoAPI.Web.Entities;
6-
using ReversoAPI.Web.Http;
7-
using ReversoAPI.Web.Http.Interfaces;
8-
using ReversoAPI.Web.Values;
1+
using Moq;
2+
using Xunit;
3+
using FluentAssertions;
94
using System;
10-
using System.Collections.Generic;
115
using System.IO;
126
using System.Threading;
137
using System.Threading.Tasks;
14-
using Xunit;
8+
using System.Collections.Generic;
9+
using ReversoAPI.Web.TranslationFeature.Application.DTOs;
10+
using ReversoAPI.Web.TranslationFeature.Application.Interfaces.Services;
11+
using ReversoAPI.Web.TranslationFeature.Application.Services;
12+
using ReversoAPI.Web.TranslationFeature.Domain.Entities;
13+
using ReversoAPI.Web.TranslationFeature.Domain.ValueObjects;
14+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
15+
using ReversoAPI.Web.Shared.Infrastructure.Http;
16+
using ReversoAPI.Web.Shared.Infrastructure.Http.Interfaces;
1517

1618
namespace ReversoAPI.Web.Tests.Clients
1719
{
1820
public class TranslationClientTests
1921
{
2022
private readonly Mock<IAPIConnector> _apiConnector;
21-
private readonly TranslationClient _client;
23+
private readonly ITranslationService _client;
2224

2325
public TranslationClientTests()
2426
{
2527
_apiConnector = new Mock<IAPIConnector>();
26-
_client = new TranslationClient(_apiConnector.Object);
28+
_client = new TranslationService(_apiConnector.Object);
2729
}
2830

2931
[Theory]
@@ -43,19 +45,21 @@ public async Task GetFromOneWordAsync_Success(string text, Language source, Lang
4345
expectedResult.Should().BeEquivalentTo(result);
4446
}
4547

46-
[Fact]
47-
public async Task GetFromOneWordAsync_Length_Exceeded()
48-
{
49-
// Arrange
50-
var text = new string('x', 2001);
48+
//TO DO: Move it into separate service tests
5149

52-
// Act
53-
var act = async () => await _client.GetAsync(text, It.IsAny<Language>(), It.IsAny<Language>());
50+
//[Fact]
51+
//public async Task GetFromOneWordAsync_Length_Exceeded()
52+
//{
53+
// // Arrange
54+
// var text = new string('x', 2001);
5455

55-
// Assert
56-
var exception = await Assert.ThrowsAsync<ArgumentException>(act);
57-
Assert.Equal("The text provided exceeds the limit of 2000 symbols. (Parameter 'text')", exception.Message);
58-
}
56+
// // Act
57+
// var act = async () => await _client.GetAsync(text, It.IsAny<Language>(), It.IsAny<Language>());
58+
59+
// // Assert
60+
// var exception = await Assert.ThrowsAsync<ArgumentException>(act);
61+
// Assert.Equal("The text provided exceeds the limit of 2000 symbols. (Parameter 'text')", exception.Message);
62+
//}
5963

6064
#region TestData
6165

ReversoAPI.Web.Tests/Extensions/ParseExtesionsTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
using Xunit;
2-
using ReversoAPI.Web.Extensions;
3-
using ReversoAPI.Web.Values;
2+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
3+
using ReversoAPI.Web.Shared.Domain.Extensions;
44

55
namespace ReversoAPI.Web.Tests.Extensions
66
{

ReversoAPI.Web.Tests/Parsers/ConjugationResponseParserTest.cs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
using FluentAssertions;
2-
using ReversoAPI.Web.Entities;
3-
using ReversoAPI.Web.Tools.Parsers;
4-
using ReversoAPI.Web.Values;
5-
using System.Collections.Generic;
1+
using Xunit;
2+
using FluentAssertions;
63
using System.IO;
74
using System.Text;
8-
using Xunit;
5+
using System.Collections.Generic;
6+
using ReversoAPI.Web.ConjugationFeature.Domain.Core.Entities;
7+
using ReversoAPI.Web.ConjugationFeature.Domain.Core.Interfaces.ValueObjects;
8+
using ReversoAPI.Web.ConjugationFeature.Domain.Core.Services;
9+
using ReversoAPI.Web.ConjugationFeature.Domain.Core.ValueObjects;
10+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
911

1012
namespace ReversoAPI.Web.Tests.Parsers
1113
{
@@ -16,7 +18,7 @@ public class ConjugationResponseParserTest
1618
public void Invoke_Test(ConjugationData expectedResult, Stream html)
1719
{
1820
// Arrange
19-
var parser = new ConjugationResponseParser();
21+
var parser = new ConjugationParser();
2022

2123
// Act
2224
var result = parser.Invoke(html);
@@ -36,7 +38,7 @@ public static IEnumerable<object[]> HtmlResponsesForTest()
3638
{
3739
Text = "run",
3840
Language = Language.English,
39-
Conjugations = new Dictionary<string, IEnumerable<Conjugation>>
41+
Conjugations = new Dictionary<string, IEnumerable<IConjugation>>
4042
{
4143
{ "Indicative Present", new[]
4244
{
@@ -76,7 +78,7 @@ public static IEnumerable<object[]> HtmlResponsesForTest()
7678
{
7779
Text = "бежать",
7880
Language = Language.Russian,
79-
Conjugations = new Dictionary<string, IEnumerable<Conjugation>>
81+
Conjugations = new Dictionary<string, IEnumerable<IConjugation>>
8082
{
8183
{ "настоящее", new[]
8284
{
@@ -141,7 +143,7 @@ public static IEnumerable<object[]> HtmlResponsesForTest()
141143
{
142144
Text = "cair",
143145
Language = Language.Portuguese,
144-
Conjugations = new Dictionary<string, IEnumerable<Conjugation>>
146+
Conjugations = new Dictionary<string, IEnumerable<IConjugation>>
145147
{
146148
{ "Indicativo Presente", new[]
147149
{

ReversoAPI.Web.Tests/Parsers/ContextResponseParserTest.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
using System.IO;
2-
using System.Text;
3-
using ReversoAPI.Web.Values;
4-
using ReversoAPI.Web.Entities;
5-
using ReversoAPI.Web.Tools.Parsers;
6-
using Xunit;
1+
using Xunit;
72
using FluentAssertions;
3+
using System.IO;
4+
using System.Text;
85
using System.Collections.Generic;
6+
using ReversoAPI.Web.ContextFeature.Domain.Core.Enities;
7+
using ReversoAPI.Web.ContextFeature.Domain.Core.Services;
8+
using ReversoAPI.Web.ContextFeature.Domain.Core.ValueObjects;
9+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
910

1011
namespace ReversoAPI.Web.Tests.Parsers
1112
{
@@ -16,7 +17,7 @@ public class ContextResponseParserTest
1617
public void Invoke_Test(ContextData expectedResult, Stream html)
1718
{
1819
// Arrange
19-
var parser = new ContextResponseParser();
20+
var parser = new ContextParser();
2021

2122
// Act
2223
var result = parser.Invoke(html);

ReversoAPI.Web.Tests/Parsers/SynonymsResponseParserTest.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
using FluentAssertions;
2-
using ReversoAPI.Web.Entities;
3-
using ReversoAPI.Web.Tools.Parsers;
4-
using ReversoAPI.Web.Values;
5-
using System.Collections.Generic;
1+
using Xunit;
2+
using FluentAssertions;
63
using System.IO;
74
using System.Text;
8-
using Xunit;
5+
using System.Collections.Generic;
6+
using ReversoAPI.Web.SynonymsFeature.Domain.Core.Entities;
7+
using ReversoAPI.Web.SynonymsFeature.Domain.Core.Services;
8+
using ReversoAPI.Web.SynonymsFeature.Domain.Core.ValueObjects;
9+
using ReversoAPI.Web.Shared.Domain.ValueObjects;
910

1011
namespace ReversoAPI.Web.Tests.Parsers
1112
{
@@ -16,7 +17,7 @@ public class SynonymsResponseParserTest
1617
public void Invoke_Test(SynonymsData expectedResult, Stream html)
1718
{
1819
// Arrange
19-
var parser = new SynonymsResponseParser();
20+
var parser = new SynonymsParser();
2021

2122
// Act
2223
var result = parser.Invoke(html);

ReversoAPI.Web.Tests/ReversoAPI.Web.Tests.csproj

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,4 @@
4242
</EmbeddedResource>
4343
</ItemGroup>
4444

45-
<ItemGroup>
46-
<Folder Include="Http\" />
47-
</ItemGroup>
48-
4945
</Project>

ReversoAPI.Web/Clients/APIClient.cs

Lines changed: 0 additions & 13 deletions
This file was deleted.

ReversoAPI.Web/Clients/Interfaces/IConjugationClient.cs

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)