1111using System . IO ;
1212using System . Linq ;
1313using System . Reflection ;
14- using System . Security . Cryptography . X509Certificates ;
1514using System . Text ;
1615using System . Threading . Tasks ;
1716
2221using RdoCondition = System . Func < kCura . Relativity . Client . DTOs . RDO , bool > ;
2322
2423using static Gravity . Test . Helpers . TestObjectHelper ;
24+ using Gravity . Utils ;
25+ using Gravity . Globals ;
2526
2627namespace 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}
0 commit comments