Skip to content

Commit

Permalink
Merge pull request #141 from relativitydev/fileTests
Browse files Browse the repository at this point in the history
File Field Tests Finished
  • Loading branch information
aarongilbert123 committed Sep 21, 2018
2 parents 749081a + 439e69c commit a4874bc
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 27 deletions.
42 changes: 23 additions & 19 deletions Gravity/Gravity.Test.Unit/RsapiDaoInsertTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
using System.IO;
using System.Linq;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

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

using static Gravity.Test.Helpers.TestObjectHelper;
using Gravity.Utils;
using Gravity.Globals;

namespace Gravity.Test.Unit
{
public class RsapiDaoInsertTests
{
private const int FileFieldId = 44;
Mock<IRsapiProvider> mockProvider;

[SetUp]
Expand Down Expand Up @@ -104,10 +106,9 @@ public void Insert_MultipleChoice()
InsertObject(objectToInsert, matchingRdoCondition, ObjectFieldsDepthLevel.OnlyParentObject);
}

[Test, Ignore("TODO: Implement")]
[Test]
public void Insert_FileField()
{
int fileFieldArtifactId = 1;
var objectToInsert = new G1
{
ArtifactId = 10,
Expand All @@ -118,10 +119,8 @@ public void Insert_FileField()
};

//checks that matches inserted object
//RdoCondition matchingRdoCondition = rdo => rdo[FieldGuid<G1>(nameof(G1.FileField))].Value.Equals((object)objectToInsert.FileField);
RdoCondition matchingRdoCondition = rdo => rdo.ArtifactID == 10;
SetupFileField(FieldGuid<G1>(nameof(G1.FileField)), fileFieldArtifactId);
InsertObject(objectToInsert,matchingRdoCondition,ObjectFieldsDepthLevel.FirstLevelOnly);
InsertObjectContainingFileField(objectToInsert, matchingRdoCondition, ObjectFieldsDepthLevel.FirstLevelOnly);
}

[Test]
Expand Down Expand Up @@ -192,9 +191,12 @@ public void Insert_ExistingSingleObject_DontInsertChildren()
{
GravityLevel2Obj = new G2
{
ArtifactId = g2Id, Name = "G2A", GravityLevel3SingleObj = new G3
ArtifactId = g2Id,
Name = "G2A",
GravityLevel3SingleObj = new G3
{
ArtifactId = g3Id, Name = "G3A"
ArtifactId = g3Id,
Name = "G3A"
}
}
};
Expand Down Expand Up @@ -386,22 +388,24 @@ public void SetupInsertManyCondition(Func<List<RDO>, bool> condition, params int
.Returns(resultIds.Select(x => new RDO(x)).ToSuccessResultSet<WriteResultSet<RDO>>());
}

public void SetupFileField(Guid artifactGuid, int artifactId)
void InsertObjectContainingFileField(G1 objectToInsert, RdoCondition rootCondition, ObjectFieldsDepthLevel depthLevel)
{
RDO rdo = new RDO(artifactGuid, artifactId);
Result<RDO> rdoResult = new Result<RDO>();
rdoResult.Success = true;
rdoResult.Artifact = rdo;
ResultSet<RDO> rdoResultSet = new ResultSet<RDO>();
rdoResultSet.Success = true;
rdoResultSet.Results.Add(rdoResult);
SetupInsertManyCondition(x => x.Count == 1 && rootCondition(x.Single()), 10);

mockProvider
.Setup(x => x.Read(It.IsAny<RDO>()))
.Returns(rdoResultSet);
.Setup(x => x.Read(It.Is<RDO[]>(y => y.Single().Guids.Single() == FieldGuid<G1>(nameof(G1.FileField)))))
.Returns(new[] { new RDO(FileFieldId) }.ToSuccessResultSet<WriteResultSet<RDO>>());

mockProvider
.Setup(x => x.UploadFile(artifactId, 10,
.Setup(x => x.UploadFile(FileFieldId, 10,
Path.Combine(Path.GetTempPath(), "ByteArrayFileDto")));

InvokeWithRetrySettings invokeWithRetrySettings = new InvokeWithRetrySettings(SharedConstants.retryAttempts,
SharedConstants.sleepTimeInMiliseconds);
var insertedId = new RsapiDao(mockProvider.Object, new InvokeWithRetryService(invokeWithRetrySettings))
.Insert(objectToInsert, depthLevel);
Assert.AreEqual(10, insertedId);
Assert.AreEqual(10, objectToInsert.ArtifactId);
}
}
}
58 changes: 55 additions & 3 deletions Gravity/Gravity.Test.Unit/RsapiDaoUpdateTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
using Artifact = kCura.Relativity.Client.DTOs.Artifact;

using static Gravity.Test.Helpers.TestObjectHelper;
using System.IO;
using Castle.Components.DictionaryAdapter.Xml;
using Gravity.Utils;
using Gravity.Globals;

namespace Gravity.Test.Unit
{
Expand Down Expand Up @@ -155,19 +159,47 @@ public void Update_MultipleChoice_Remove(bool emptyList)
UpdateObject(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
}

[Test, Ignore("TODO: Implement")]
[Test]
public void Update_FileField_Add()
{
var objectToUpdate = new G1 {
ArtifactId = 10,
FileField = new ByteArrayFileDto {
FileName = "ByteArrayFileDto",
ByteArray = new byte[] {65}
}
};

RdoBoolCond matchingRdoExpression = rdo => rdo.ArtifactID == 10;
UpdateObjectWithFileField(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
}

[Test, Ignore("TODO: Implement")]
[Test]
public void Update_FileField_Remove()
{
var objectToUpdate = new G1 {
ArtifactId = 10,
FileField = null
};

RdoBoolCond matchingRdoExpression = rdo => rdo.ArtifactID == 10;
UpdateObjectWithFileField(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
}

[Test, Ignore("TODO: Implement")]
//[Test, Ignore("TODO: Implement")]
[Test]
public void Update_FileField_Modify()
{
var objectToUpdate = new G1 {
ArtifactId = 10,
FileField = new ByteArrayFileDto {
FileName = "NewName",
ByteArray = new byte[] { 65 }
}
};

RdoBoolCond matchingRdoExpression = rdo => rdo.ArtifactID == 10;
UpdateObjectWithFileField(objectToUpdate, matchingRdoExpression, ObjectFieldsDepthLevel.OnlyParentObject);
}

[Test]
Expand Down Expand Up @@ -500,6 +532,26 @@ void UpdateObject(G1 objectToUpdate, RdoBoolCond rootExpression, ObjectFieldsDep

new RsapiDao(mockProvider.Object, null).Update(objectToUpdate, depthLevel);
}

void UpdateObjectWithFileField(G1 objectToUpdate, RdoBoolCond rootExpression, ObjectFieldsDepthLevel depthLevel)
{
objectToUpdate.ArtifactId = G1ArtifactId;
SetupUpdateManyCondition(x => x.Count == 1 && x[0].ArtifactID == G1ArtifactId && rootExpression(x[0]));

//setup clearing the non-present file
mockProvider
.Setup(x => x.Read(It.Is<RDO[]>(y => y.Single().Guids.Single() == FieldGuid<G1>(nameof(G1.FileField)))))
.Returns(new[] { new RDO(FileFieldId) }.ToSuccessResultSet<WriteResultSet<RDO>>());
mockProvider
.Setup(x => x.ClearFile(FileFieldId, G1ArtifactId));
mockProvider
.Setup(x => x.UploadFile(FileFieldId, 10, Path.Combine(Path.GetTempPath(), "ByteArrayFileDto")));
mockProvider
.Setup(x => x.UploadFile(FileFieldId, 10, Path.Combine(Path.GetTempPath(), "NewName")));
InvokeWithRetrySettings invokeWithRetrySettings = new InvokeWithRetrySettings(SharedConstants.retryAttempts,
SharedConstants.sleepTimeInMiliseconds);
new RsapiDao(mockProvider.Object, new InvokeWithRetryService(invokeWithRetrySettings)).Update(objectToUpdate, depthLevel);
}

private void SetupSingleObjectQuery(params int[] resultArtifactIds)
{
Expand Down
1 change: 0 additions & 1 deletion Gravity/Gravity.Test/TestClasses/GravityLevel2.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using Gravity.Base;

namespace Gravity.Test.TestClasses
Expand Down
4 changes: 0 additions & 4 deletions Gravity/Gravity.Test/TestClasses/GravityLevel3Child.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Gravity.Base;

namespace Gravity.Test.TestClasses
Expand Down

0 comments on commit a4874bc

Please sign in to comment.