Exemplo n.º 1
0
 public CircularRelationshipValidator(IGetsHierarchicalTicketRelationshipsWhichCouldCreateACircularRelationship hierarchicalRelationshipProvider,
                                      IDetectsCircularRelationship circularRelationshipDetector,
                                      IGetsTraversibleRelationships traversibleRelationshipProvider,
                                      ILog logger)
 {
     this.hierarchicalRelationshipProvider = hierarchicalRelationshipProvider ?? throw new ArgumentNullException(nameof(hierarchicalRelationshipProvider));
     this.circularRelationshipDetector     = circularRelationshipDetector ?? throw new ArgumentNullException(nameof(circularRelationshipDetector));
     this.traversibleRelationshipProvider  = traversibleRelationshipProvider ?? throw new ArgumentNullException(nameof(traversibleRelationshipProvider));
     this.logger = logger ?? throw new ArgumentNullException(nameof(logger));
 }
        public void AreRelationshipsValid_returns_true_if_no_relationship_is_circular([Frozen] IGetsHierarchicalTicketRelationshipsWhichCouldCreateACircularRelationship hierarchicalRelationshipProvider,
                                                                                      [Frozen] IGetsTraversibleRelationships traversibleRelationshipProvider,
                                                                                      [Frozen] IDetectsCircularRelationship detector,
                                                                                      CircularRelationshipValidator sut,
                                                                                      IEnumerable <TheoreticalRelationship> relationships,
                                                                                      IIdentity <Ticket> editedTicket,
                                                                                      IEnumerable <HierarchicalTicketRelationship> hierarchicalRelationships,
                                                                                      TraversibleRelationship traversibleRelationship)
        {
            var allRelationships = new[] { traversibleRelationship };

            Mock.Get(hierarchicalRelationshipProvider)
            .Setup(x => x.GetRelevantHierarchicalRelationships(relationships))
            .Returns(hierarchicalRelationships);
            Mock.Get(traversibleRelationshipProvider)
            .Setup(x => x.GetTraversibleRelationships(relationships, hierarchicalRelationships))
            .Returns(allRelationships);
            Mock.Get(detector)
            .Setup(x => x.IsRelationshipCircular(traversibleRelationship.Type, allRelationships))
            .Returns(false);

            var result = sut.AreRelationshipsValid(editedTicket, relationships);

            Assert.That(result, Is.True);
        }
        public void AreRelationshipsValid_passes_hierarchical_relationships_to_traversible_provider([Frozen] IGetsHierarchicalTicketRelationshipsWhichCouldCreateACircularRelationship hierarchicalRelationshipProvider,
                                                                                                    [Frozen] IGetsTraversibleRelationships traversibleRelationshipProvider,
                                                                                                    CircularRelationshipValidator sut,
                                                                                                    IEnumerable <TheoreticalRelationship> relationships,
                                                                                                    IIdentity <Ticket> editedTicket,
                                                                                                    IEnumerable <HierarchicalTicketRelationship> hierarchicalRelationships)
        {
            Mock.Get(hierarchicalRelationshipProvider)
            .Setup(x => x.GetRelevantHierarchicalRelationships(relationships))
            .Returns(hierarchicalRelationships);

            sut.AreRelationshipsValid(editedTicket, relationships);

            Mock.Get(traversibleRelationshipProvider)
            .Verify(x => x.GetTraversibleRelationships(relationships, hierarchicalRelationships), Times.Once);
        }