Example #1
0
        public virtual async Task ApplyVariationChanges(IApplyProviderVariations variationsApplication)
        {
            while (_variationChanges.Count > 0)
            {
                IVariationChange variationChange = _variationChanges.Dequeue();

                await variationChange.Apply(variationsApplication);
            }
        }
Example #2
0
        public void QueueVariationChange(IVariationChange variationChange)
        {
            //the different concrete variation strategies can queue implementations
            //of IVariationChange here to be run against this provider context
            //the changes are basically commands to run (moving funding about, creating new providers etc.)
            //the strategies instantiate the correct change and set its properties correctly so that it
            //can be run in order per provider

            _variationChanges.Enqueue(variationChange);
        }
Example #3
0
        public async Task QueuesVariationChangesToBeAppliedLater()
        {
            IVariationChange changeOne   = NewChange();
            IVariationChange changeTwo   = NewChange();
            IVariationChange changeThree = NewChange();

            _variationContext.QueueVariationChange(changeThree);
            _variationContext.QueueVariationChange(changeOne);
            _variationContext.QueueVariationChange(changeTwo);

            await _variationContext.ApplyVariationChanges(_applyProviderVariations);

            Received.InOrder(async() =>
            {
                await changeThree.Apply(_applyProviderVariations);
                await changeOne.Apply(_applyProviderVariations);
                await changeTwo.Apply(_applyProviderVariations);
            });
        }
Example #4
0
        protected void ThenTheVariationChangeWasQueued <TChange>()
            where TChange : IVariationChange
        {
            VariationContext
            .QueuedChanges
            .Count()
            .Should()
            .BeGreaterOrEqualTo(_queuedChangeIndex + 1);

            IVariationChange variationChange = VariationContext
                                               .QueuedChanges
                                               .ElementAt(_queuedChangeIndex);

            variationChange
            .Should()
            .BeOfType <TChange>();

            _queuedChangeIndex++;
        }