Skip to content

Commit 779f48c

Browse files
Merge pull request #140 from IndicoDataSolutions/nate/ar_v3_result
add v3 result support
2 parents a8fbc07 + 15b53cb commit 779f48c

5 files changed

Lines changed: 75 additions & 8 deletions

File tree

IndicoV2.Abstractions/Reviews/IReviewsClient.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,16 @@ public interface IReviewsClient
1717
/// <param name="rejected">If review rejected.</param>
1818
/// <returns>Job's Id</returns>
1919
Task<string> SubmitReviewAsync(int submissionId, JObject changes, bool rejected = false, bool? forceComplete = null, CancellationToken cancellationToken = default);
20+
21+
/// <summary>
22+
/// Submits review for <see cref="ISubmission"/>
23+
/// </summary>
24+
/// <param name="submissionId"><see cref="ISubmission"/>'s Id</param>
25+
/// <param name="changes">Changes</param>
26+
/// <param name="forceComplete">Force complete review.</param>
27+
/// <param name="cancellationToken"><c><see cref="CancellationToken"/></c> for handling cancellation of asynchronous operations.</param>
28+
/// <param name="rejected">If review rejected.</param>
29+
/// <returns>Job's Id</returns>
30+
Task<string> SubmitReviewAsync(int submissionId, JArray changes, bool rejected = false, bool? forceComplete = null, CancellationToken cancellationToken = default);
2031
}
2132
}

IndicoV2.IntegrationTests/Reviews/ReviewsClientTests.cs

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,14 @@
77
using IndicoV2.IntegrationTests.Utils.DataHelpers;
88
using IndicoV2.IntegrationTests.Utils.Configs;
99
using IndicoV2.Reviews;
10+
using IndicoV2.Submissions.Models;
1011
using Newtonsoft.Json.Linq;
1112
using NUnit.Framework;
1213
using Unity;
14+
using System.Text.Json;
15+
using IndicoV2.Submissions;
16+
using System.Linq;
17+
using System.Collections.Generic;
1318

1419
namespace IndicoV2.IntegrationTests.Reviews
1520
{
@@ -46,10 +51,10 @@ public async Task SetUp()
4651
}
4752

4853
[Test]
49-
public async Task SubmitReviewAsync_ShouldSucceed()
54+
public async Task SubmitReviewAsyncV1Result_ShouldSucceed()
5055
{
5156
// Arrange
52-
var submission = await _dataHelper.Submissions().GetAnyAsync(_workflowId);
57+
var submission = await _dataHelper.Submissions().Get(_workflowId, resultsFileVersion: SubmissionResultsFileVersion.One);
5358
var result = await _submissionResultAwaiter.WaitReady(submission.Id);
5459
var changes = (JObject)result["results"]["document"]["results"];
5560

@@ -62,5 +67,37 @@ public async Task SubmitReviewAsync_ShouldSucceed()
6267
jobResult.Value<string>("submission_status").Should().Be("pending_review");
6368
jobResult.Value<bool>("success").Should().Be(true);
6469
}
70+
71+
72+
[Test]
73+
public async Task SubmitReviewAsyncV3Result_ShouldSucceed()
74+
{
75+
// Arrange
76+
var submission = await _dataHelper.Submissions().Get(_workflowId, resultsFileVersion: SubmissionResultsFileVersion.Three);
77+
var result = await _submissionResultAwaiter.WaitReady(submission.Id);
78+
submission = (await _dataHelper.Submissions().ListAsync(submissionIds: new List<int>() { submission.Id })).First();
79+
if (submission.Status.ToString() == "PENDING_AUTO_REVIEW")
80+
{
81+
var changes = result["submission_results"];
82+
foreach (JObject change in changes)
83+
{
84+
change["model_results"] = change["model_results"]["ORIGINAL"];
85+
change["component_results"] = change["component_results"]["ORIGINAL"];
86+
}
87+
// Act
88+
var submitReviewJobId = await _reviewsClient.SubmitReviewAsync(submission.Id, (JArray)changes);
89+
var jobResult = await _jobAwaiter.WaitReadyAsync<JObject>(submitReviewJobId, TimeSpan.FromSeconds(1));
90+
91+
// Assert
92+
jobResult.Should().NotBeNull();
93+
jobResult.Value<string>("submission_status").Should().Be("pending_review");
94+
jobResult.Value<bool>("success").Should().Be(true);
95+
}
96+
else
97+
{
98+
// multi-file submissions are not enabled and submission status should default to complete
99+
submission.Status.ToString().Should().Be("COMPLETE");
100+
}
101+
}
65102
}
66103
}

IndicoV2.IntegrationTests/Utils/DataHelpers/Submissions/SubmissionHelper.cs

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.IO;
34
using System.Linq;
45
using System.Threading.Tasks;
@@ -22,11 +23,11 @@ public SubmissionHelper(WorkflowHelper workflowHelper, FileHelper fileHelper, IS
2223
_fileHelper = fileHelper;
2324
_submissions = submissions;
2425
}
25-
26+
2627
public async Task<ISubmission> GetAnyAsync(int workflow_id)
2728
{
2829
await using var fileStream = _fileHelper.GetSampleFileStream();
29-
30+
3031
return await GetAnyAsync(fileStream, workflow_id);
3132
}
3233

@@ -40,6 +41,14 @@ public async Task<ISubmission> GetAnyAsync(Stream content, int workflow_id)
4041

4142
public async Task<int> Get(IWorkflow workflow, Stream content) => (await _submissions.CreateAsync(workflow.Id, new[] { ("csharp_test_content", content) })).Single();
4243

44+
public async Task<ISubmission> Get(int workflowId, SubmissionResultsFileVersion? resultsFileVersion = null, bool bundle = false)
45+
{
46+
var submissionIds = await _submissions.CreateAsync(workflowId, paths: new[] { _fileHelper.GetSampleFilePath() }, resultsFileVersion: resultsFileVersion, bundle: bundle);
47+
var submission = await _submissions.GetAsync(submissionIds.Single());
48+
49+
return submission;
50+
}
51+
4352
public async Task<(int workflowId, int submissionId)> ListAnyAsync(int workflowId)
4453
{
4554
await using var content = _fileHelper.GetSampleFileStream();
@@ -52,5 +61,13 @@ public async Task<ISubmission> GetAnyAsync(Stream content, int workflow_id)
5261

5362
return (workflowId, submissionIds.First());
5463
}
64+
65+
66+
public async Task<IEnumerable<ISubmission>> ListAsync(IEnumerable<int> submissionIds, int limit = 1000)
67+
{
68+
var submissions = await _submissions.ListAsync(submissionIds, new List<int>(), null, limit: limit);
69+
70+
return submissions;
71+
}
5572
}
5673
}

IndicoV2.StrawberryShake/Reviews/ReviewSsClient.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ public class ReviewSsClient : ErrorHandlingWrapper
1616

1717
public ReviewSsClient(ServiceProvider services) => _services = services;
1818

19-
public async Task<string> SubmitReview(int submissionId, JObject changes, bool rejected, bool? forceComplete, CancellationToken cancellationToken)
19+
public async Task<string> SubmitReview(int submissionId, string changes, bool rejected, bool? forceComplete, CancellationToken cancellationToken)
2020
{
2121
if (forceComplete == null)
2222
{
23-
var response = await _services.GetRequiredService<SubmitReviewMutation>().ExecuteAsync(submissionId, changes.ToString(), rejected, cancellationToken);
23+
var response = await _services.GetRequiredService<SubmitReviewMutation>().ExecuteAsync(submissionId, changes, rejected, cancellationToken);
2424
return response.Data.SubmitAutoReview.JobId;
2525
}
2626
else
2727
{
28-
var response = await _services.GetRequiredService<SubmitReviewForceCompleteMutation>().ExecuteAsync(submissionId, changes.ToString(), rejected, forceComplete, cancellationToken);
28+
var response = await _services.GetRequiredService<SubmitReviewForceCompleteMutation>().ExecuteAsync(submissionId, changes, rejected, forceComplete, cancellationToken);
2929
return response.Data.SubmitAutoReview.JobId;
3030
}
3131
}

IndicoV2/Reviews/ReviewsClient.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ public ReviewsClient(IndicoClient indicoClient)
1919
}
2020

2121
public async Task<string> SubmitReviewAsync(int submissionId, JObject changes, bool rejected = false, bool? forceComplete = null, CancellationToken cancellationToken = default) =>
22-
await _strawberryShake.Reviews().SubmitReview(submissionId, changes, rejected, forceComplete, cancellationToken);
22+
await _strawberryShake.Reviews().SubmitReview(submissionId, changes.ToString(), rejected, forceComplete, cancellationToken);
2323

24+
public async Task<string> SubmitReviewAsync(int submissionId, JArray changes, bool rejected = false, bool? forceComplete = null, CancellationToken cancellationToken = default) =>
25+
await _strawberryShake.Reviews().SubmitReview(submissionId, changes.ToString(), rejected, forceComplete, cancellationToken);
2426

2527
}
2628
}

0 commit comments

Comments
 (0)