Ejemplo n.º 1
0
        public void Resource_Has_Nested_Cyclic_Relations()
        {
            // Arrange
            var todoDiscovery = SetDiscoverableHooks <TodoItem>(_targetHooks, DisableDbValues);

            var(hookExecutor, todoResourceMock) = CreateTestObjects(todoDiscovery);
            var rootTodo = new TodoItem {
                Id = 1
            };
            var child = new TodoItem {
                ParentTodo = rootTodo, Id = 2
            };

            rootTodo.ChildTodoItems = child.AsList();
            var grandChild = new TodoItem {
                ParentTodo = child, Id = 3
            };

            child.ChildTodoItems = grandChild.AsList();
            var greatGrandChild = new TodoItem {
                ParentTodo = grandChild, Id = 4
            };

            grandChild.ChildTodoItems      = greatGrandChild.AsList();
            greatGrandChild.ChildTodoItems = rootTodo.AsList();
            var todoList = rootTodo.AsList();

            // Act
            hookExecutor.OnReturn(todoList, ResourcePipeline.Post);

            // Assert
            todoResourceMock.Verify(rd => rd.OnReturn(It.IsAny <HashSet <TodoItem> >(), ResourcePipeline.Post), Times.Exactly(4));
            VerifyNoOtherCalls(todoResourceMock);
        }
Ejemplo n.º 2
0
        public void Resource_Has_Multiple_Relations_To_Same_Type()
        {
            // Arrange
            var todoDiscovery   = SetDiscoverableHooks <TodoItem>(_targetHooks, DisableDbValues);
            var personDiscovery = SetDiscoverableHooks <Person>(_targetHooks, DisableDbValues);

            var(_, _, hookExecutor, todoResourceMock, ownerResourceMock) = CreateTestObjects(todoDiscovery, personDiscovery);
            var person1 = new Person();
            var todo    = new TodoItem {
                Owner = person1
            };
            var person2 = new Person {
                AssignedTodoItems = new HashSet <TodoItem> {
                    todo
                }
            };

            todo.Assignee = person2;
            var person3 = new Person {
                StakeHolderTodoItem = todo
            };

            todo.StakeHolders = new HashSet <Person> {
                person3
            };
            var todoList = todo.AsList();

            // Act
            hookExecutor.OnReturn(todoList, ResourcePipeline.Post);

            // Assert
            todoResourceMock.Verify(rd => rd.OnReturn(It.IsAny <HashSet <TodoItem> >(), ResourcePipeline.Post), Times.Once());
            ownerResourceMock.Verify(rd => rd.OnReturn(It.IsAny <HashSet <Person> >(), ResourcePipeline.Post), Times.Once());
            VerifyNoOtherCalls(todoResourceMock, ownerResourceMock);
        }
        public void Resource_Has_Cyclic_Relations()
        {
            // Arrange
            IHooksDiscovery <TodoItem> todoDiscovery = SetDiscoverableHooks <TodoItem>(_targetHooks, DisableDbValues);

            (IResourceHookExecutor hookExecutor, Mock <IResourceHookContainer <TodoItem> > todoResourceMock) = CreateTestObjects(todoDiscovery);
            var todo = new TodoItem();

            todo.ParentTodo     = todo;
            todo.ChildTodoItems = todo.AsList();
            List <TodoItem> todoList = todo.AsList();

            // Act
            hookExecutor.OnReturn(todoList, ResourcePipeline.Post);

            // Assert
            todoResourceMock.Verify(rd => rd.OnReturn(It.IsAny <HashSet <TodoItem> >(), ResourcePipeline.Post), Times.Once());
            VerifyNoOtherCalls(todoResourceMock);
        }
Ejemplo n.º 4
0
        protected IList <TodoItem> CreateTodoWithToOnePerson()
        {
            TodoItem        todoItem = TodoFaker.Generate();
            Person          person   = PersonFaker.Generate();
            List <TodoItem> todoList = todoItem.AsList();

            person.OneToOneTodoItem = todoItem;
            todoItem.OneToOnePerson = person;
            return(todoList);
        }