public void Constructor_ShouldCreatePresenterWhenServicesAreValid()
        {
            //Arange
            var bandServiceMock = new Mock <IBandService>();
            var viewMock        = new Mock <ISearchDisplayView>();

            //Act
            var presenter = new SearchDisplayPresenter(viewMock.Object, bandServiceMock.Object);

            // Assert
            Assert.That(presenter, Is.InstanceOf <Presenter <ISearchDisplayView> >());
        }
        public void OnSearchDisplayBands_ShouldCallSearchBandsByBandName()
        {
            string queryParam = "Killswith";

            //Arange
            var bandServiceMock = new Mock <IBandService>();
            var viewMock        = new Mock <ISearchDisplayView>();

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

            var eventArgs = new SearchDisplayEventArgs(queryParam);

            //Act
            var presenter = new SearchDisplayPresenter(viewMock.Object, bandServiceMock.Object);

            // Assert
            viewMock.Raise(v => v.OnSearchDisplayBands += null, eventArgs);

            bandServiceMock.Verify(s => s.SearchBandsByBandName(It.IsAny <string>()), Times.Once());
        }
        public void OnSearchDisplayBands_ShouldReturnBand()
        {
            string queryParam     = "Killswith";
            var    bands          = this.GetBands();
            var    expectedResult = bands.Where(b => b.BandName.Contains(queryParam));

            //Arange
            var bandServiceMock = new Mock <IBandService>();
            var viewMock        = new Mock <ISearchDisplayView>();

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

            var eventArgs = new SearchDisplayEventArgs(queryParam);

            bandServiceMock.Setup(s => s.SearchBandsByBandName(It.IsAny <string>())).Returns(bands.Where(b => b.BandName.Contains(queryParam)));

            //Act
            var presenter = new SearchDisplayPresenter(viewMock.Object, bandServiceMock.Object);

            // Assert
            viewMock.Raise(v => v.OnSearchDisplayBands += null, eventArgs);

            CollectionAssert.AreEqual(expectedResult, presenter.View.Model.Bands);
        }