internal bool AddTagRelation(AnnotationTagRelationFormModel model)
        {
            var tag1 = DbContext.AnnotationTags.Single(tag => tag.Id == model.FirstTagId);
            var tag2 = DbContext.AnnotationTags.Single(tag => tag.Id == model.SecondTagId);

            if (TagRelationExists(tag1, tag2))
            {
                return(false);
            }
            else if (tag1 != null && tag2 != null)
            {
                var forwardRelation = new AnnotationTagRelation(tag1, tag2, model.Name, model.ArrowStyle, model.Color);
                DbContext.AnnotationTagRelations.Add(forwardRelation);
                DbContext.SaveChanges();
                return(true);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// Should return code 200 and a list of all tag relations that are available for the given tag instance
        /// </summary>
        // TODO  [Test]
        public void GetAvailableRelationsForIdTest()
        {
            var tag5 = new AnnotationTag()
            {
                Id = 5
            };
            var relation35 = new AnnotationTagRelation(_tag3, tag5);
            var expected   = new List <AnnotationTagRelation>()
            {
                _relation34, relation35
            };
            var instance3 = new AnnotationTagInstance(_tag3);
            var instances = new List <AnnotationTagInstance>()
            {
                new AnnotationTagInstance(_tag1),
                new AnnotationTagInstance(_tag2),
                instance3,
                new AnnotationTagInstance(_tag4),
                new AnnotationTagInstance(tag5)
            };

            MyMvc
            .Controller <AnnotationController>()
            .WithAuthenticatedUser(user => user.WithClaim("Id", "1"))
            .WithDbContext(dbContext => dbContext
                           .WithSet <User>(db => db.Add(_admin))
                           .WithSet <AnnotationTag>(db => db.AddRange(_tag1, _tag2, _tag3, _tag4))
                           .WithSet <AnnotationTagRelation>(db => db.AddRange(_relation12, _relation34, relation35))
                           // TODO How to model that the tag instances are part of the same document?
                           )
            .Calling(c => c.GetAvailableRelationsForInstance(instance3.Id))
            .ShouldReturn()
            .Ok()
            .WithModelOfType <List <AnnotationTagRelation> >()
            .Passing(actual => expected.SequenceEqual(actual));
        }
示例#3
0
 public AnnotationTagRelationResult(AnnotationTagRelation relation)
 {
     Name      = relation.Name;
     FirstTag  = new AnnotationTagResult(relation.FirstTag);
     SecondTag = new AnnotationTagResult(relation.SecondTag);
 }
        public void BeforeTest()
        {
            // create some User, Tag and TagRelation objects for mocking the database
            _admin = new User
            {
                Id    = 1,
                Email = "*****@*****.**",
                Role  = "Administrator"
            };
            _student = new User
            {
                Id    = 2,
                Email = "*****@*****.**",
                Role  = "Student"
            };
            _supervisor = new User
            {
                Id    = 3,
                Email = "*****@*****.**",
                Role  = "Supervisor"
            };

            /*
             * Layer1   Layer2
             * |-tag1   |-tag2
             * |-tag3   |-tag4
             *
             * Layer Relation Rules:
             * Layer1 -> Layer2
             *
             * Annotation Tag Relations:
             * tag1 -> tag2
             * tag3 -> tag2
             * tag3 -> tag4
             */
            _layer1 = new Layer()
            {
                Id = 1, Name = "Time"
            };
            _layer2 = new Layer()
            {
                Id = 2, Name = "Perspective"
            };
            _tag1 = new AnnotationTag()
            {
                Id = 1, Layer = _layer1.Name
            };
            _tag2 = new AnnotationTag()
            {
                Id = 2, Layer = _layer2.Name
            };
            _tag3 = new AnnotationTag()
            {
                Id = 3, Layer = _layer1.Name
            };
            _tag4 = new AnnotationTag()
            {
                Id = 4, Layer = _layer2.Name
            };
            _tag1.ChildTags = new List <AnnotationTag>()
            {
                _tag3
            };
            _tag2.ChildTags = new List <AnnotationTag>()
            {
                _tag4
            };
            _relation12        = new AnnotationTagRelation(_tag1, _tag2);
            _relation34        = new AnnotationTagRelation(_tag3, _tag4);
            _layerRelationRule = new LayerRelationRule()
            {
                SourceLayer   = _layer1,
                SourceLayerId = _layer1.Id,
                TargetLayer   = _layer2,
                TargetLayerId = _layer2.Id,
                Color         = "test-color",
                ArrowStyle    = "test-style"
            };
        }