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)); }
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" }; }