Implements file IFileRepository leveraging entity framework
Inheritance: RepositoryBase, IFileRepository
        public void Get_All_Files_Test()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            int userId = 1;
            string postStatus = FileStatus.Posted.ToString();
            Func<File, bool> filter = file => file.CreatedBy == userId && (file.Status.Equals(postStatus, StringComparison.InvariantCulture) || file.isDeleted == null || file.isDeleted == false);
            var fileList = repository.GetFiles(filter);

            Assert.IsNotNull(fileList);

            Assert.AreEqual(fileList.Count(), 2);

            Assert.AreEqual(fileList.ToList()[0].FileId, 1);
            Assert.AreEqual(fileList.ToList()[1].FileId, 2);

            Assert.AreEqual(fileList.ToList()[0].Name, "Document One");
            Assert.AreEqual(fileList.ToList()[1].Name, "Document Two");
        }
        public void Get_File_By_FileId_Test()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            var file = repository.GetItem(1, 1);

            Assert.IsNotNull(file);

            Assert.AreEqual(file.FileId, 1);

            Assert.AreEqual(file.Name, "Document One");

            //  Assert.AreEqual(file.BlobId, "blobId");

            Assert.AreEqual(file.Citation, "Citation 1");

            Assert.AreEqual(file.CreatedBy, 1);

            Assert.AreEqual(file.Description, "Document 1");

            Assert.AreEqual(file.Identifier, "asdahgsdfsghadfsghad");

            Assert.AreEqual(file.isDeleted, false);

            Assert.AreEqual(file.MimeType, "Mime type 1");

            Assert.AreEqual(file.ModifiedBy, 1);

            Assert.IsNotNull(file.Repository);

            Assert.AreEqual(file.RepositoryId, 1);

            Assert.AreEqual(file.Size, 20.90);

            Assert.AreEqual(file.Status, "Uploaded");

            Assert.AreEqual(file.Title, "Document 1");
        }
 private void AddFile(File fileToAdd)
 {
     IFileRepository repository = new FileRepository(testDBContext);
     repository.AddFile(fileToAdd);
     testDBContext.Commit();
 }
        public void Update_File_With_FileData_Null_Test()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            var file = repository.GetItem(1, 1);

            file.BlobId = "TestBlobid";
            file.Citation = "Updated Citation";
            file.Description = "Updated description";
            file.FileMetadataFields = null;
            file.FileColumns = null;
            file.FileQualityChecks = null;

            repository.UpdateFile(file);
            testDBContext.Commit();
            var updatedFile = repository.GetItem(1, 1);

            Assert.AreEqual(updatedFile.BlobId, "TestBlobid");
            Assert.AreEqual(updatedFile.Citation, "Updated Citation");
            Assert.AreEqual(updatedFile.Description, "Updated description");

            Assert.IsNull(file.FileMetadataFields);
            Assert.IsNull(file.FileColumns);
            Assert.IsNull(file.FileQualityChecks);
        }
        public void Save_File_NullColumnUnit_DataTest()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            var file = repository.GetItem(1, 1);
            file.FileColumns = new List<FileColumn>();
            var newFilecolumn1 = new FileColumn()
            {
                FileColumnTypeId = 1,
                FileColumnUnitId = null,
                EntityName = "entityName",
                EntityDescription = "entityDesc",
                Description = "Description"
            };

            var newFilecolumn2 = new FileColumn()
            {
                FileColumnTypeId = 1,
                FileColumnUnitId = 1,
                EntityName = "entityName1",
                EntityDescription = "entityDesc1",
                Description = "Description1"
            };

            var newFilecolumn3 = new FileColumn()
            {
                FileColumnTypeId = 1,
                FileColumnUnitId = 1,
                EntityName = "entityName2",
                EntityDescription = "entityDesc2",
                Description = "Description2"
            };

            file.FileColumns.Add(newFilecolumn1);
            file.FileColumns.Add(newFilecolumn2);
            file.FileColumns.Add(newFilecolumn3);

            testDBContext.Commit();

            var fileColumns = GetFileColumns(file.FileId);

            Assert.AreEqual(3, fileColumns.Count);
            Assert.AreEqual(newFilecolumn1.EntityName, fileColumns[0].EntityName);
            Assert.AreEqual(newFilecolumn1.EntityDescription, fileColumns[0].EntityDescription);
            Assert.AreEqual(newFilecolumn1.Description, fileColumns[0].Description);
            Assert.AreEqual(newFilecolumn1.FileColumnUnitId, fileColumns[0].FileColumnUnitId);
            Assert.AreEqual(newFilecolumn1.FileColumnTypeId, fileColumns[0].FileColumnTypeId);

            Assert.AreEqual(newFilecolumn2.EntityName, fileColumns[1].EntityName);
            Assert.AreEqual(newFilecolumn2.EntityDescription, fileColumns[1].EntityDescription);
            Assert.AreEqual(newFilecolumn2.Description, fileColumns[1].Description);
            Assert.AreEqual(newFilecolumn2.FileColumnUnitId, fileColumns[1].FileColumnUnitId);
            Assert.AreEqual(newFilecolumn2.FileColumnTypeId, fileColumns[1].FileColumnTypeId);

            Assert.AreEqual(newFilecolumn3.EntityName, fileColumns[2].EntityName);
            Assert.AreEqual(newFilecolumn3.EntityDescription, fileColumns[2].EntityDescription);
            Assert.AreEqual(newFilecolumn3.Description, fileColumns[2].Description);
            Assert.AreEqual(newFilecolumn3.FileColumnUnitId, fileColumns[2].FileColumnUnitId);
            Assert.AreEqual(newFilecolumn3.FileColumnTypeId, fileColumns[2].FileColumnTypeId);

            var columnTypeList = GetFileColumnTypes();
            //only one column type should be there, one more dummy row was added

            Assert.AreEqual(1, columnTypeList.Count());
            var columnsUnitsList = GetFileColumnUnits();

            Assert.AreEqual(1, columnsUnitsList.Count());
            testDBContext.Commit();
        }
        public void Save_File_Data()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            var file = repository.GetItem(1, 1);
            file.FileColumns = new List<FileColumn>();
            var newFilecolumn = new FileColumn()
            {
                FileColumnTypeId = 1,
                FileColumnUnitId = 1,
                EntityName = "entityName",
                EntityDescription = "entityDesc",
                Description = "Description"
            };
            file.FileColumns.Add(newFilecolumn);
            testDBContext.Commit();

            var fileColumns = GetFileColumns(file.FileId);

            Assert.AreEqual(1, fileColumns.Count);
            Assert.AreEqual(newFilecolumn.EntityName, fileColumns[0].EntityName);
            Assert.AreEqual(newFilecolumn.EntityDescription, fileColumns[0].EntityDescription);
            Assert.AreEqual(newFilecolumn.Description, fileColumns[0].Description);
            Assert.AreEqual(newFilecolumn.FileColumnUnitId, fileColumns[0].FileColumnUnitId);
            Assert.AreEqual(newFilecolumn.FileColumnTypeId, fileColumns[0].FileColumnTypeId);

            var columnTypeList = GetFileColumnTypes();
            //only one column type should be there, one more dummy row was added

            Assert.AreEqual(1, columnTypeList.Count());
            var columnsUnitsList = GetFileColumnUnits();

            Assert.AreEqual(1, columnsUnitsList.Count());
            testDBContext.Commit();
        }
        public void Remove_Mentioned_File_Permenently_Test()
        {
            IFileRepository repository = new FileRepository(testDBContext);

            var result = repository.DeleteFile(1, "Posted");

            testDBContext.Commit();

            Assert.IsNotNull(result);

            int userId = 1;
            string postStatus = FileStatus.Posted.ToString();
            Func<File, bool> filter = file => file.CreatedBy == userId && (file.Status.Equals(postStatus, StringComparison.InvariantCulture) || file.isDeleted == null || file.isDeleted == false);
            var fileList = repository.GetFiles(filter);

            Assert.AreEqual(fileList.Count(), 1);

            Assert.AreEqual(fileList.ToList()[0].FileId, 2);

            Assert.AreEqual(fileList.ToList()[0].Name, "Document Two");
        }