Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Crowdin.Api/ProjectsGroups/AddProjectRequest.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using JetBrains.Annotations;

#nullable enable
Expand Down
5 changes: 4 additions & 1 deletion src/Crowdin.Api/ProjectsGroups/EnterpriseProjectForm.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using System.Collections.Generic;
using JetBrains.Annotations;
using Newtonsoft.Json;
Expand Down Expand Up @@ -124,5 +124,8 @@ public class EnterpriseProjectForm : AddProjectRequest

[JsonProperty("defaultGlossaryId")]
public long? DefaultGlossaryId { get; set; }

[JsonProperty("tmApprovedSuggestionsOnly")]
public bool? TmApprovedSuggestionsOnly { get; set; }
}
}
5 changes: 4 additions & 1 deletion src/Crowdin.Api/ProjectsGroups/FileBasedProjectForm.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using System.Collections.Generic;
using JetBrains.Annotations;
using Newtonsoft.Json;
Expand Down Expand Up @@ -115,5 +115,8 @@ public class FileBasedProjectForm : ProjectForm

[JsonProperty("defaultGlossaryId")]
public long? DefaultGlossaryId { get; set; }

[JsonProperty("tmApprovedSuggestionsOnly")]
public bool? TmApprovedSuggestionsOnly { get; set; }
}
}
5 changes: 4 additions & 1 deletion src/Crowdin.Api/ProjectsGroups/ProjectSettings.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using System.Collections.Generic;

using JetBrains.Annotations;
Expand Down Expand Up @@ -115,5 +115,8 @@ public class ProjectSettings : Project
[JsonProperty("tmPenalties")]
[JsonConverter(typeof(EmptyArrayAsObjectConverter))]
public TmPenalties TmPenalties { get; set; }

[JsonProperty("tmApprovedSuggestionsOnly")]
public bool? TmApprovedSuggestionsOnly { get; set; }
}
}
5 changes: 4 additions & 1 deletion src/Crowdin.Api/ProjectsGroups/StringsBasedProjectForm.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using System.Collections.Generic;
using JetBrains.Annotations;
using Newtonsoft.Json;
Expand Down Expand Up @@ -115,5 +115,8 @@ public class StringsBasedProjectForm : ProjectForm

[JsonProperty("defaultGlossaryId")]
public long? DefaultGlossaryId { get; set; }

[JsonProperty("tmApprovedSuggestionsOnly")]
public bool? TmApprovedSuggestionsOnly { get; set; }
}
}
18 changes: 18 additions & 0 deletions tests/Crowdin.Api.UnitTesting/Resources/Projects.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion tests/Crowdin.Api.UnitTesting/Resources/Projects.resx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>

<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
Expand Down Expand Up @@ -315,4 +315,10 @@
<data name="AddProject_RightRequestJson_EnumsTest" xml:space="preserve">
<value>{"languageAccessPolicy":"open","translateDuplicates":4}</value>
</data>
<data name="AddProject_RightRequestJson_TmApprovedSuggestionsOnlyTest_ForStandardProject" xml:space="preserve">
<value>{"name":"Test Standard Project","sourceLanguageId":"en","tmApprovedSuggestionsOnly":true}</value>
</data>
<data name="AddProject_RightRequestJson_TmApprovedSuggestionsOnlyTest_ForEnterpriseProject" xml:space="preserve">
<value>{"name":"Test Enterprise Project","sourceLanguageId":"en","tmApprovedSuggestionsOnly":false}</value>
</data>
</root>
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@


using System.Collections.Generic;
using System.Linq;
using System.Net;
Expand Down Expand Up @@ -149,5 +149,68 @@ public async Task AddProject_TestEnumsConversion()

Assert.NotNull(projectResponse);
}

[Fact]
public async Task AddProject_ShouldIncludeTmApprovedSuggestionsOnly_ForStandardProject()
{
var request = new FileBasedProjectForm
{
Name = "Test Standard Project",
SourceLanguageId = "en",
TmApprovedSuggestionsOnly = true
};

JsonSerializerSettings options = TestUtils.CreateJsonSerializerOptions();
Mock<ICrowdinApiClient> mockClient = TestUtils.CreateMockClientWithDefaultParser();

string requestJson = JsonConvert.SerializeObject(request, options);
string rightRequestJson = Projects.AddProject_RightRequestJson_TmApprovedSuggestionsOnlyTest_ForStandardProject;
Assert.Equal(rightRequestJson, requestJson);

mockClient
.Setup(client => client.SendPostRequest("/projects", request, null))
.ReturnsAsync(new CrowdinApiResult
{
StatusCode = HttpStatusCode.Created,
JsonObject = JObject.Parse(Projects.AddProject_RightResponseJson_ProjectInfo)
});

var executor = new ProjectsGroupsApiExecutor(mockClient.Object);
var projectResponse = await executor.AddProject<Project>(request);

Assert.NotNull(projectResponse);
}

[Fact]
public async Task AddProject_ShouldIncludeTmApprovedSuggestionsOnly_ForEnterpriseProject()
{
var request = new EnterpriseProjectForm
{
Name = "Test Enterprise Project",
SourceLanguageId = "en",
TmApprovedSuggestionsOnly = false
};

JsonSerializerSettings options = TestUtils.CreateJsonSerializerOptions();
Mock<ICrowdinApiClient> mockClient = TestUtils.CreateMockClientWithDefaultParser();

string requestJson = JsonConvert.SerializeObject(request, options);
string rightRequestJson = Projects.AddProject_RightRequestJson_TmApprovedSuggestionsOnlyTest_ForEnterpriseProject;
Assert.Equal(rightRequestJson, requestJson);

mockClient
.Setup(client => client.SendPostRequest("/projects", request, null))
.ReturnsAsync(new CrowdinApiResult
{
StatusCode = HttpStatusCode.Created,
JsonObject = JObject.Parse(Projects.AddProject_RightResponseJson_ProjectInfo)
});

var executor = new ProjectsGroupsApiExecutor(mockClient.Object);
var projectResponse = await executor.AddProject<Project>(request);

Assert.NotNull(projectResponse);
}

}
}
Loading