public void SelectionsChangeFromOneItemToTwo()
        {
            var numberOfEvents = 0;

            var item1 = Mock.Of <IPromptItem>();
            var item2 = Mock.Of <IPromptItem>();

            var shoppingCart = new TestMultiSelectPrompt {
                SelectedAvailableItems = A.Array(item1)
            };

            shoppingCart.SelectItems.Execute(null);

            shoppingCart.ReadyForReportExecutionChanged += (s, e) =>
            {
                numberOfEvents++;
                Assert.IsTrue(shoppingCart.ReadyForReportExecution);
            };

            shoppingCart.SelectedAvailableItems = A.Array(item2);

            shoppingCart.SelectItems.Execute(null);

            Assert.AreEqual(0, numberOfEvents);
            shoppingCart.SelectedItems.AssertContains(item1, item2);
        }
        public void SelectionsChangeFrom3To0()
        {
            var item1 = Mock.Of <IPromptItem>();
            var item2 = Mock.Of <IPromptItem>();
            var item3 = Mock.Of <IPromptItem>();

            var numberOfEvents = 0;

            var shoppingCart = new TestMultiSelectPrompt {
                SelectedAvailableItems = A.Array(item1, item2, item3)
            };

            shoppingCart.SelectItems.Execute(null);
            shoppingCart.ReadyForReportExecutionChanged += (s, e) =>
            {
                numberOfEvents++;
                Assert.IsFalse(shoppingCart.ReadyForReportExecution);
            };

            shoppingCart.SelectedSelectedItems = A.Array(item1, item2, item3);
            shoppingCart.DeSelectItems.Execute(null);

            Assert.AreEqual(1, numberOfEvents);
            shoppingCart.SelectedItems.AssertLength(0);
        }
        public void DeSelectNullItem()
        {
            var numberOfEvents = 0;

            var shoppingCart = new TestMultiSelectPrompt();

            shoppingCart.ReadyForReportExecutionChanged += (s, e) => { numberOfEvents++; };

            shoppingCart.SelectedSelectedItems = null;
            shoppingCart.DeSelectItems.Execute(null);

            Assert.AreEqual(0, numberOfEvents);
        }
        public void ItDeselectsAllOfTheDefaultAllMembersWhenASelectIsExeduted()
        {
            var item1 = Mock.Of <IPromptItem>(i => i.IsDefaultAll == false);
            var item2 = Mock.Of <IPromptItem>(i => i.IsDefaultAll == true);
            var item3 = Mock.Of <IPromptItem>(i => i.IsDefaultAll == true);

            var numberOfEvents = 0;

            var shoppingCart = new TestMultiSelectPrompt
            {
                SelectedAvailableItems = A.Array(item1),
                SelectedItems          = A.ObservableCollection(item2, item3)
            };

            shoppingCart.SelectItems.Execute(null);
            shoppingCart.ReadyForReportExecutionChanged += (s, e) => { numberOfEvents++; };

            Assert.AreEqual(0, numberOfEvents);
            shoppingCart.SelectedItems.AssertLength(1);
            shoppingCart.SelectedItems.AssertContains(item1);
        }
        public void ItDeSelectsThePromptItemIfItIsMarkedAsADefaultAllAndAnotherItemIsSelected()
        {
            var item1 = Mock.Of <IPromptItem>(i => i.IsDefaultAll == true);
            var item2 = Mock.Of <IPromptItem>(i => i.IsDefaultAll == false);
            var item3 = Mock.Of <IPromptItem>(i => i.IsDefaultAll == false);

            var numberOfEvents = 0;

            var shoppingCart = new TestMultiSelectPrompt
            {
                SelectedAvailableItems = A.Array(item2),
                SelectedItems          = A.ObservableCollection(item1)
            };

            shoppingCart.SelectItems.Execute(null);
            shoppingCart.ReadyForReportExecutionChanged += (s, e) => { numberOfEvents++; };

            Assert.AreEqual(0, numberOfEvents);
            shoppingCart.SelectedItems.AssertLength(1);
            shoppingCart.SelectedItems.AssertContains(item2);
        }