public void should()
        {
            string letter   = "A";
            var    eventArg = new BandListEventArgs()
            {
                Letter = letter
            };

            var viewMock = new Mock <IBandListView>();

            viewMock.Setup(x => x.Model).Returns(new BandListModel());

            var bands          = this.GetBands();
            var expectedResult = bands.Where(x => x.BandName.Substring(0, 1) == letter).ToList();

            var bandServiceMock = new Mock <IBandService>();

            bandServiceMock.Setup(x => x.GetBands(letter)).Returns(expectedResult);

            BandListPresenter bandListPresenter = new BandListPresenter(viewMock.Object, bandServiceMock.Object);

            viewMock.Raise(x => x.LoadBands += null, eventArg);

            CollectionAssert.AreEquivalent(expectedResult, viewMock.Object.Model.Bands);
            bandServiceMock.Verify(x => x.GetBands(letter), Times.Once);
        }
        public void CreatesAnInstace_InheritingPresenter()
        {
            var viewMock    = new Mock <IBandListView>();
            var serviceMock = new Mock <IBandService>();

            BandListPresenter bandPresenter = new BandListPresenter(viewMock.Object, serviceMock.Object);

            Assert.That(bandPresenter, Is.InstanceOf <Presenter <IBandListView> >());
        }
        public void CreatesAnInstance_WhenParameters_AreCorret()
        {
            var viewMock    = new Mock <IBandListView>();
            var serviceMock = new Mock <IBandService>();

            BandListPresenter bandPresenter = new BandListPresenter(viewMock.Object, serviceMock.Object);

            Assert.That(bandPresenter, Is.Not.Null);
        }
        public void NotThrow_IfBandServiceIsValid()
        {
            var viewMock    = new Mock <IBandListView>();
            var serviceMock = new Mock <IBandService>();

            Assert.DoesNotThrow(() =>
            {
                BandListPresenter bandPresenter = new BandListPresenter(viewMock.Object, serviceMock.Object);
            });
        }
        public void ThrowArgumentNullException_IfBandServiceIsNull()
        {
            var          viewMock    = new Mock <IBandListView>();
            IBandService serviceMock = null;

            Assert.Throws <ArgumentNullException>(() =>
            {
                BandListPresenter bandPresenter = new BandListPresenter(viewMock.Object, serviceMock);
            });
        }
        public void InvokeBandService_GetAllBands_Once()
        {
            var viewMock = new Mock <IBandListView>();

            viewMock.Setup(v => v.Model).Returns(new BandListModel());

            var bands = GetBands();

            var bandServiceMock = new Mock <IBandService>();

            bandServiceMock.Setup(x => x.GetAllBands()).Returns(bands);

            BandListPresenter bandListPresenter = new BandListPresenter(viewMock.Object, bandServiceMock.Object);

            viewMock.Raise(v => v.LoadAllBands += null, EventArgs.Empty);

            bandServiceMock.Verify(x => x.GetAllBands(), Times.Once());
        }
        public void ReturnInstancesOfBand_WhenEventIsRaised()
        {
            var viewMock = new Mock <IBandListView>();

            viewMock.Setup(v => v.Model).Returns(new BandListModel());

            var bands = GetBands();

            var bandServiceMock = new Mock <IBandService>();

            bandServiceMock.Setup(x => x.GetAllBands()).Returns(bands);

            BandListPresenter bandListPresenter = new BandListPresenter(viewMock.Object, bandServiceMock.Object);

            viewMock.Raise(v => v.LoadAllBands += null, EventArgs.Empty);

            CollectionAssert.AllItemsAreInstancesOfType(viewMock.Object.Model.Bands, typeof(Band));
        }
        public void ReturnAllBands_WhenEventIsRaised()
        {
            var viewMock = new Mock <IBandListView>();

            viewMock.Setup(v => v.Model).Returns(new BandListModel());

            var bands = GetBands();

            var bandServiceMock = new Mock <IBandService>();

            bandServiceMock.Setup(x => x.GetAllBands()).Returns(bands);

            BandListPresenter bandListPresenter = new BandListPresenter(viewMock.Object, bandServiceMock.Object);

            viewMock.Raise(v => v.LoadAllBands += null, EventArgs.Empty);

            CollectionAssert.AreEquivalent(bands, viewMock.Object.Model.Bands);
        }