Ejemplo n.º 1
0
        public void CreateSpecification_AlertDefinitionWithMultipleCriteria_SpecificationCreated()
        {
            // Arrange
            var factory = new AlertCriteriaSpecificationFactory();
            var alertDefinitionsRepositoryMock = new Mock <IAlertDefinitionsRepository>();
            var notificationServiceMock        = new Mock <INotificationsService>();
            var rootCriteriaId  = Guid.NewGuid();
            var alertDefinition = new AlertDefinition(alertDefinitionsRepositoryMock.Object, factory, notificationServiceMock.Object)
            {
                RootCriteria = new AlertCriteria
                {
                    Type             = CriteriaType.Composite,
                    Operator         = CriteriaOperator.And,
                    ChildrenCriteria = new List <AlertCriteria>
                    {
                        new AlertCriteria
                        {
                            Type     = CriteriaType.Price,
                            Operator = CriteriaOperator.LessThanOrEqualTo,
                            Level    = 50
                        },
                        new AlertCriteria
                        {
                            Type     = CriteriaType.DailyPercentageGainLoss,
                            Operator = CriteriaOperator.LessThanOrEqualTo,
                            Level    = -0.02M
                        }
                    }
                }
            };

            // Act
            var specification = factory.CreateSpecification(alertDefinition);

            // Assert
            specification.Should().BeOfType <AndSpecification <AlertEvaluationMessage> >();
            var children = (specification as CompositeSpecification <AlertEvaluationMessage>).Children;

            children.Count.Should().Be(2);
            children.First().Should().BeOfType <PriceSpecification>();
            children.Last().Should().BeOfType <DailyPercentageGainLossSpecification>();
        }
Ejemplo n.º 2
0
        public void CreateSpecification_AlertDefinitionWithSingleCriteria_SpecificationCreated()
        {
            // Arrange
            var factory = new AlertCriteriaSpecificationFactory();
            var alertDefinitionsRepositoryMock = new Mock <IAlertDefinitionsRepository>();
            var notificationServiceMock        = new Mock <INotificationsService>();
            var alertDefinition = new AlertDefinition(alertDefinitionsRepositoryMock.Object, factory, notificationServiceMock.Object)
            {
                RootCriteria = new AlertCriteria
                {
                    Type     = CriteriaType.Price,
                    Operator = CriteriaOperator.LessThanOrEqualTo,
                    Level    = 50
                }
            };

            // Act
            var specification = factory.CreateSpecification(alertDefinition);

            // Assert
            specification.Should().BeOfType <PriceSpecification>();
        }