Skip to content

Commit 439e69c

Browse files
File Field Tests Finished
1 parent 749081a commit 439e69c

4 files changed

Lines changed: 78 additions & 27 deletions

File tree

Gravity/Gravity.Test.Unit/RsapiDaoInsertTests.cs

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
using System.IO;
1212
using System.Linq;
1313
using System.Reflection;
14-
using System.Security.Cryptography.X509Certificates;
1514
using System.Text;
1615
using System.Threading.Tasks;
1716

@@ -22,11 +21,14 @@
2221
using RdoCondition = System.Func<kCura.Relativity.Client.DTOs.RDO, bool>;
2322

2423
using static Gravity.Test.Helpers.TestObjectHelper;
24+
using Gravity.Utils;
25+
using Gravity.Globals;
2526

2627
namespace Gravity.Test.Unit
2728
{
2829
public class RsapiDaoInsertTests
2930
{
31+
private const int FileFieldId = 44;
3032
Mock<IRsapiProvider> mockProvider;
3133

3234
[SetUp]
@@ -104,10 +106,9 @@ public void Insert_MultipleChoice()
104106
InsertObject(objectToInsert, matchingRdoCondition, ObjectFieldsDepthLevel.OnlyParentObject);
105107
}
106108

107-
[Test, Ignore("TODO: Implement")]
109+
[Test]
108110
public void Insert_FileField()
109111
{
110-
int fileFieldArtifactId = 1;
111112
var objectToInsert = new G1
112113
{
113114
ArtifactId = 10,
@@ -118,10 +119,8 @@ public void Insert_FileField()
118119
};
119120

120121
//checks that matches inserted object
121-
//RdoCondition matchingRdoCondition = rdo => rdo[FieldGuid<G1>(nameof(G1.FileField))].Value.Equals((object)objectToInsert.FileField);
122122
RdoCondition matchingRdoCondition = rdo => rdo.ArtifactID == 10;
123-
SetupFileField(FieldGuid<G1>(nameof(G1.FileField)), fileFieldArtifactId);
124-
InsertObject(objectToInsert,matchingRdoCondition,ObjectFieldsDepthLevel.FirstLevelOnly);
123+
InsertObjectContainingFileField(objectToInsert, matchingRdoCondition, ObjectFieldsDepthLevel.FirstLevelOnly);
125124
}
126125

127126
[Test]
@@ -192,9 +191,12 @@ public void Insert_ExistingSingleObject_DontInsertChildren()
192191
{
193192
GravityLevel2Obj = new G2
194193
{
195-
ArtifactId = g2Id, Name = "G2A", GravityLevel3SingleObj = new G3
194+
ArtifactId = g2Id,
195+
Name = "G2A",
196+
GravityLevel3SingleObj = new G3
196197
{
197-
ArtifactId = g3Id, Name = "G3A"
198+
ArtifactId = g3Id,
199+
Name = "G3A"
198200
}
199201
}
200202
};
@@ -386,22 +388,24 @@ public void SetupInsertManyCondition(Func<List<RDO>, bool> condition, params int
386388
.Returns(resultIds.Select(x => new RDO(x)).ToSuccessResultSet<WriteResultSet<RDO>>());
387389
}
388390

389-
public void SetupFileField(Guid artifactGuid, int artifactId)
391+
void InsertObjectContainingFileField(G1 objectToInsert, RdoCondition rootCondition, ObjectFieldsDepthLevel depthLevel)
390392
{
391-
RDO rdo = new RDO(artifactGuid, artifactId);
392-
Result<RDO> rdoResult = new Result<RDO>();
393-
rdoResult.Success = true;
394-
rdoResult.Artifact = rdo;
395-
ResultSet<RDO> rdoResultSet = new ResultSet<RDO>();
396-
rdoResultSet.Success = true;
397-
rdoResultSet.Results.Add(rdoResult);
393+
SetupInsertManyCondition(x => x.Count == 1 && rootCondition(x.Single()), 10);
394+
398395
mockProvider
399-
.Setup(x => x.Read(It.IsAny<RDO>()))
400-
.Returns(rdoResultSet);
396+
.Setup(x => x.Read(It.Is<RDO[]>(y => y.Single().Guids.Single() == FieldGuid<G1>(nameof(G1.FileField)))))
397+
.Returns(new[] { new RDO(FileFieldId) }.ToSuccessResultSet<WriteResultSet<RDO>>());
401398

402399
mockProvider
403-
.Setup(x => x.UploadFile(artifactId, 10,
400+
.Setup(x => x.UploadFile(FileFieldId, 10,
404401
Path.Combine(Path.GetTempPath(), "ByteArrayFileDto")));
402+
403+
InvokeWithRetrySettings invokeWithRetrySettings = new InvokeWithRetrySettings(SharedConstants.retryAttempts,
404+
SharedConstants.sleepTimeInMiliseconds);
405+
var insertedId = new RsapiDao(mockProvider.Object, new InvokeWithRetryService(invokeWithRetrySettings))
406+
.Insert(objectToInsert, depthLevel);
407+
Assert.AreEqual(10, insertedId);
408+
Assert.AreEqual(10, objectToInsert.ArtifactId);
405409
}
406410
}
407411
}

Gravity/Gravity.Test.Unit/RsapiDaoUpdateTests.cs

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@
2323
using Artifact = kCura.Relativity.Client.DTOs.Artifact;
2424

2525
using static Gravity.Test.Helpers.TestObjectHelper;
26+
using System.IO;
27+
using Castle.Components.DictionaryAdapter.Xml;
28+
using Gravity.Utils;
29+
using Gravity.Globals;
2630

2731
namespace Gravity.Test.Unit
2832
{
@@ -155,19 +159,47 @@ public void Update_MultipleChoice_Remove(bool emptyList)
155159
UpdateObject(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
156160
}
157161

158-
[Test, Ignore("TODO: Implement")]
162+
[Test]
159163
public void Update_FileField_Add()
160164
{
165+
var objectToUpdate = new G1 {
166+
ArtifactId = 10,
167+
FileField = new ByteArrayFileDto {
168+
FileName = "ByteArrayFileDto",
169+
ByteArray = new byte[] {65}
170+
}
171+
};
172+
173+
RdoBoolCond matchingRdoExpression = rdo => rdo.ArtifactID == 10;
174+
UpdateObjectWithFileField(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
161175
}
162176

163-
[Test, Ignore("TODO: Implement")]
177+
[Test]
164178
public void Update_FileField_Remove()
165179
{
180+
var objectToUpdate = new G1 {
181+
ArtifactId = 10,
182+
FileField = null
183+
};
184+
185+
RdoBoolCond matchingRdoExpression = rdo => rdo.ArtifactID == 10;
186+
UpdateObjectWithFileField(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
166187
}
167188

168-
[Test, Ignore("TODO: Implement")]
189+
//[Test, Ignore("TODO: Implement")]
190+
[Test]
169191
public void Update_FileField_Modify()
170192
{
193+
var objectToUpdate = new G1 {
194+
ArtifactId = 10,
195+
FileField = new ByteArrayFileDto {
196+
FileName = "NewName",
197+
ByteArray = new byte[] { 65 }
198+
}
199+
};
200+
201+
RdoBoolCond matchingRdoExpression = rdo => rdo.ArtifactID == 10;
202+
UpdateObjectWithFileField(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
171203
}
172204

173205
[Test]
@@ -500,6 +532,26 @@ void UpdateObject(G1 objectToUpdate, RdoBoolCond rootExpression, ObjectFieldsDep
500532

501533
new RsapiDao(mockProvider.Object, null).Update(objectToUpdate, depthLevel);
502534
}
535+
536+
void UpdateObjectWithFileField(G1 objectToUpdate, RdoBoolCond rootExpression, ObjectFieldsDepthLevel depthLevel)
537+
{
538+
objectToUpdate.ArtifactId = G1ArtifactId;
539+
SetupUpdateManyCondition(x => x.Count == 1 && x[0].ArtifactID == G1ArtifactId && rootExpression(x[0]));
540+
541+
//setup clearing the non-present file
542+
mockProvider
543+
.Setup(x => x.Read(It.Is<RDO[]>(y => y.Single().Guids.Single() == FieldGuid<G1>(nameof(G1.FileField)))))
544+
.Returns(new[] { new RDO(FileFieldId) }.ToSuccessResultSet<WriteResultSet<RDO>>());
545+
mockProvider
546+
.Setup(x => x.ClearFile(FileFieldId, G1ArtifactId));
547+
mockProvider
548+
.Setup(x => x.UploadFile(FileFieldId, 10, Path.Combine(Path.GetTempPath(), "ByteArrayFileDto")));
549+
mockProvider
550+
.Setup(x => x.UploadFile(FileFieldId, 10, Path.Combine(Path.GetTempPath(), "NewName")));
551+
InvokeWithRetrySettings invokeWithRetrySettings = new InvokeWithRetrySettings(SharedConstants.retryAttempts,
552+
SharedConstants.sleepTimeInMiliseconds);
553+
new RsapiDao(mockProvider.Object, new InvokeWithRetryService(invokeWithRetrySettings)).Update(objectToUpdate, depthLevel);
554+
}
503555

504556
private void SetupSingleObjectQuery(params int[] resultArtifactIds)
505557
{

Gravity/Gravity.Test/TestClasses/GravityLevel2.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
32
using Gravity.Base;
43

54
namespace Gravity.Test.TestClasses

Gravity/Gravity.Test/TestClasses/GravityLevel3Child.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
4-
using System.Text;
5-
using System.Threading.Tasks;
62
using Gravity.Base;
73

84
namespace Gravity.Test.TestClasses

0 commit comments

Comments
 (0)