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