Exemple #1
0
        public void ShouldAddTenAdvicesToIngredientAndThenRemoveFive()
        {
            var ingredient = IngredientBuilder.BuildIngredient();

            _ingredientRepository.Add(ingredient);
            _ingredientRepository.Persist();

            for (int i = 0; i < 10; i++)
            {
                var newAdvice = AdviceBuilder.BuildAdvice <IngredientAdvice>("Advice_" + i);
                ingredient.AddAdvice(newAdvice);
                _ingredientRepository.Persist();
            }

            var advices = _ingredientRepository.FindOne(i => i != null).IngredientAdvices;

            for (int i = 0; i < 5; i++)
            {
                var indexCopy      = i;
                var adviceToDelete = _ingredientAdviceRepository.FindOne(a => a == advices[indexCopy]);
                _ingredientAdviceRepository.Delete(adviceToDelete);
                _ingredientAdviceRepository.Persist();
            }

            _ingredientRepository.Refresh(ingredient);
            _ingredientRepository.FindOne(i => i != null).IngredientAdvices.Count.ShouldEqual(5);

            using (var dataContext = GetNewDataContext())
            {
                var result =
                    dataContext.GetTableForType(typeof(IngredientAdvice)).OfType <IngredientAdvice>().ToList();
                result.Count.ShouldEqual(5);
            }
        }
Exemple #2
0
        public void SetValues()
        {
            var construction = ObjectMother.GetConstruction();
            var method       = ObjectMother.GetMethodInfo();
            var pointcut     = ObjectMother.GetPointcut();

            var builder = new AdviceBuilder()
                          .SetConstruction(construction)
                          .SetMethod(method)
                          .SetName("name")
                          .SetRole("role")
                          .SetExecution(AdviceExecution.Around)
                          .SetScope(AdviceScope.Static)
                          .SetPriority(1)
                          .AddPointcut(pointcut);

            var result = builder.Build();

            Assert.That(result.Construction, Is.SameAs(construction));
            Assert.That(result.Method, Is.SameAs(method));
            Assert.That(result.Name, Is.EqualTo("name"));
            Assert.That(result.Role, Is.EqualTo("role"));
            Assert.That(result.Execution, Is.EqualTo(AdviceExecution.Around));
            Assert.That(result.Scope, Is.EqualTo(AdviceScope.Static));
            Assert.That(result.Priority, Is.EqualTo(1));
            Assert.That(result.Pointcuts, Has.Member(pointcut));
        }
 public void SetUp()
 {
     _pointcutBuilderMock = MockRepository.GenerateStrictMock <IPointcutBuilder>();
     _orderingBuilderMock = MockRepository.GenerateStrictMock <IOrderingBuilder>();
     _mappingBuilderMock  = MockRepository.GenerateStrictMock <IContextMappingBuilder>();
     _builder             = new AdviceBuilder(_pointcutBuilderMock, _orderingBuilderMock, _mappingBuilderMock);
 }
Exemple #4
0
        private void CheckThrowForMultipleSet(Action <AdviceBuilder> action)
        {
            var adviceBuilder = new AdviceBuilder();

            Assert.That(
                () =>
            {
                action(adviceBuilder);
                action(adviceBuilder);
            },
                Throws.Exception);
        }
Exemple #5
0
        public void ThrowsForMultiplePointcutTypes()
        {
            var builder = new AdviceBuilder();

            var pointcutType = typeof(TypePointcut);

            var pointcut1 = ObjectMother.GetPointcut(pointcutType);
            var pointcut2 = ObjectMother.GetPointcut(pointcutType);

            builder.AddPointcut(pointcut1);
            var message = string.Format("Cannot add multiple pointcuts of type '{0}'", pointcutType.Name);

            Assert.That(() => builder.AddPointcut(pointcut2), Throws.InvalidOperationException.With.Message.EqualTo(message));
        }
        public void ShouldFindOneAdviceOnProductIngredient()
        {
            var product          = _productRepository.FindOne(p => p != null);
            var ingredientAdvice = AdviceBuilder.BuildAdvice <IngredientAdvice>();

            product.Ingredients[0].IngredientAdvices.Add(ingredientAdvice);
            _productRepository.Persist();

            using (var dataContext = GetNewDataContext())
            {
                var prod = dataContext.GetTable <Product>().Where(p => p != null).Single();
                prod.Ingredients[0].IngredientAdvices.Count.ShouldEqual(1);
            }
        }
Exemple #7
0
        private void CheckThrowForMissing(
            string missingMember,
            IAspectConstruction construction = null,
            MethodInfo method         = null,
            AdviceExecution execution = AdviceExecution.Undefined,
            AdviceScope scope         = AdviceScope.Undefined)
        {
            var builder = new AdviceBuilder()
                          .SetConstruction(construction)
                          .SetMethod(method)
                          .SetExecution(execution)
                          .SetScope(scope);
            var message = string.Format("Cannot build advice without having set its {0}.", missingMember);

            Assert.That(() => builder.Build(), Throws.InvalidOperationException.With.Message.EqualTo(message));
        }
Exemple #8
0
        public void ShouldAddTenAdvicesToIngredient()
        {
            var ingredient = IngredientBuilder.BuildIngredient();

            _ingredientRepository.Add(ingredient);
            _ingredientRepository.Persist();

            for (int i = 0; i < 10; i++)
            {
                var newAdvice = AdviceBuilder.BuildAdvice <IngredientAdvice>("Advice_" + i);
                ingredient.AddAdvice(newAdvice);
                _ingredientRepository.Persist();
            }

            _ingredientRepository.FindOne(i => i != null).IngredientAdvices.Count.ShouldEqual(10);

            using (var dataContext = GetNewDataContext())
            {
                var result =
                    dataContext.GetTableForType(typeof(IngredientAdvice)).OfType <IngredientAdvice>().ToList();
                result.Count.ShouldEqual(10);
            }
        }
Exemple #9
0
        public void Copy()
        {
            var builder = new AdviceBuilder()
                          .SetConstruction(ObjectMother.GetConstruction())
                          .SetMethod(ObjectMother.GetMethodInfo())
                          .SetName("name")
                          .SetRole("name")
                          .SetExecution(AdviceExecution.Around)
                          .SetScope(AdviceScope.Static)
                          .SetPriority(1)
                          .AddPointcut(ObjectMother.GetPointcut());

            var copiedAdvice   = builder.Copy().Build();
            var originalAdvice = builder.Build();

            Assert.That(copiedAdvice.Construction, Is.SameAs(originalAdvice.Construction));
            Assert.That(copiedAdvice.Method, Is.SameAs(originalAdvice.Method));
            Assert.That(copiedAdvice.Name, Is.EqualTo(originalAdvice.Name));
            Assert.That(copiedAdvice.Role, Is.EqualTo(originalAdvice.Role));
            Assert.That(copiedAdvice.Execution, Is.EqualTo(originalAdvice.Execution));
            Assert.That(copiedAdvice.Scope, Is.EqualTo(originalAdvice.Scope));
            Assert.That(copiedAdvice.Priority, Is.EqualTo(originalAdvice.Priority));
            Assert.That(copiedAdvice.Pointcuts, Is.EquivalentTo(originalAdvice.Pointcuts));
        }