예제 #1
0
        public void Initialize()
        {
            var user1 = new User {ID = 1};
            var user2 = new User {ID = 2};
            var user3 = new User {ID = 2};

            _users = new List<User> {user1, user2, user3};
            _users2 = new List<User> {user1};

            var dataField1 = new DataField
            {
                UserData = new List<UserData>()
            };
            var dataField2 = new DataField
            {
                UserData = new List<UserData>()
            };
            var dataField3 = new DataField
            {
                UserData = new List<UserData>()
            };

            var task1 = new StudyTask
            {
                DataFields = new List<DataField> {dataField1, dataField2},
                Users = new List<User>()
            };
            var task2 = new StudyTask
            {
                DataFields = new List<DataField> {dataField3},
                Users = new List<User>()
            };

            _tasks = new List<StudyTask> {task1, task2};
        }
예제 #2
0
        /// <summary>
        /// Generate review tasks for every item
        /// </summary>
        /// <param name="item">item to generate a task for</param>
        /// <param name="criteria">lsit of criteria for a task to meet</param>
        /// <returns></returns>
        public StudyTask GenerateReviewTask(Item item, List<Criteria> criteria)
        {
            var task = new StudyTask
            {
                Paper = item,
                TaskType = StudyTask.Type.Review,
                DataFields = new List<DataField>(),
                Users = new List<User>()
            };

            foreach (var criterion in criteria)
            {
                //Trying to parse data from the bib item
                var data = new StoredString {Value = item.FindFieldValue(criterion.Name)};

                var dataField = new DataField
                {
                    Description = criterion.Description,
                    FieldType = criterion.DataType,
                    Name = criterion.Name,
                    UserData = new List<UserData> {new UserData {Data = new List<StoredString> {data}}}
                };

                if (criterion.DataType == DataField.DataType.Enumeration ||
                    criterion.DataType == DataField.DataType.Flags)
                {
                    dataField.TypeInfo = new List<StoredString>();
                    foreach (var s in criterion.TypeInfo)
                    {
                        dataField.TypeInfo.Add(s);
                    }
                }

                //Check if the information was found in the bib item, if yes the task is finished.
                task.IsEditable = data.Value == null;

                task.DataFields.Add(dataField);
            }

            return task;
        }
예제 #3
0
        /// <summary>
        /// Generate validation task for every conflicting task
        /// </summary>
        /// <param name="conflictingTask">study task in conflict</param>
        /// <returns></returns>
        public StudyTask GenerateValidateTasks(StudyTask conflictingTask)
        {
            var task = new StudyTask
            {
                Paper = conflictingTask.Paper,
                TaskType = StudyTask.Type.Conflict,
                DataFields = new List<DataField>(),
                IsEditable = true,
                Users = new List<User>()
            };

            foreach (var dataField in conflictingTask.DataFields)
            {
                var newDataField = new DataField
                {
                    Description = dataField.Description,
                    FieldType = dataField.FieldType,
                    Name = dataField.Name,
                    UserData = new List<UserData>(),
                    ConflictingData = new List<UserData>()
                };

                foreach (var userData in dataField.UserData)
                {
                    newDataField.ConflictingData.Add(userData);
                }

                task.DataFields.Add(newDataField);

                var datacount = dataField.UserData.ToArray();
            }

            return task;
        }
예제 #4
0
        public void InitializeTests()
        {
            var user1 = new User {ID = 1};
            var user2 = new User {ID = 2};

            var team1 = new Team {Users = new List<User> {user1, user2}};

            var dataString1 = new StoredString {Value = "someData"};
            var datastring2 = new StoredString {Value = "someOtherData"};
            var nullString = new StoredString {Value = null};

            var userData1 = new UserData {UserId = 1, Data = new List<StoredString> {dataString1, datastring2}};
            var userData2 = new UserData {UserId = 2, Data = new List<StoredString> {nullString, nullString}};
            var userData3 = new UserData {UserId = 2, Data = new List<StoredString> {dataString1, datastring2}};
            var userData4 = new UserData {UserId = 1, Data = new List<StoredString> {nullString, nullString}};

            var dataField = new DataField {UserData = new List<UserData> {userData1, userData3}};
            var dataField2 = new DataField {UserData = new List<UserData> {userData2, userData4}};

            var task1 = new StudyTask
            {
                DataFields = new List<DataField> {dataField},
                Users = new List<User> {user1, user2}
            };
            var task2 = new StudyTask
            {
                DataFields = new List<DataField> {dataField2},
                Users = new List<User> {user1, user2}
            };

            var userstudy1 = new UserStudies {User = user1};
            var userstudy2 = new UserStudies {User = user2};

            var stage1 = new Stage
            {
                Name = "stage1",
                IsCurrentStage = true,
                ID = 1,
                Users = new List<UserStudies> {userstudy1, userstudy2},
                Tasks = new List<StudyTask> {task1, task2}
            };
            var stage2 = new Stage
            {
                Name = "stage2",
                IsCurrentStage = false,
                ID = 2,
                Users = new List<UserStudies> {userstudy1, userstudy2},
                Tasks = new List<StudyTask> {task1, task2}
            };

            _id = 1;
            _mockStudyRepo = new Mock<IGenericRepository>();

            _testStudy = new Study
            {
                ID = 1,
                IsFinished = false,
                Items = new List<Item>(),
                Stages = new List<Stage> {stage1, stage2},
                Team = team1
            };

            _studies = new Dictionary<int, Study> {{1, _testStudy}};

            _testStudyStorageManager = new StudyStorageManager(_mockStudyRepo.Object);

            _testController = new StudyOverview(_testStudyStorageManager, _testTaskStorageManager);

            // Read item
            _mockStudyRepo.Setup(r => r.Read<Study>(It.IsAny<int>()))
                .Returns<int>(id => _studies.First(e => e.Key == id).Value);

            // Read items
            _mockStudyRepo.Setup(r => r.Read<Study>()).Returns(_studies.Values.AsQueryable());

            // Create
            _mockStudyRepo.Setup(r => r.Create(It.IsAny<Study>())).Callback<Study>(study =>
            {
                var nextId = _id++;
                study.ID = nextId;
                _studies.Add(nextId, study);
            });

            // Update
            _mockStudyRepo.Setup(r => r.Update(It.IsAny<Study>())).Callback<Study>(study =>
            {
                if (_studies.ContainsKey(study.ID))
                {
                    _studies[study.ID] = study;
                }
            });

            // Delete
            _mockStudyRepo.Setup(r => r.Delete(It.IsAny<Study>()))
                .Callback<Study>(study => { _studies.Remove(study.ID); });
        }