public void ProcessarCampeonato_DeveExecutarComSucesso()
        {
            //Arrange
            var filmesMock = new List <Filme>()
            {
                FilmesMock.OsIncriveis2,
                FilmesMock.JurassicWorld,
                FilmesMock.OitoMulheresEUmSegredo,
                FilmesMock.Hereditario,
                FilmesMock.Vingadores,
                FilmesMock.Deadpool2,
                FilmesMock.HanSolo,
                FilmesMock.ThorRagnarok
            };

            //Act
            var campeonato = _filmeService.ProcessarCampeonato(filmesMock);

            //Assert
            _filmeServiceFixture.Mocker.GetMock <INotificationContext <Notification> >()
            .Verify(x => x.AddNotification(It.IsAny <string>()), Times.Never);

            var resultadoEsperado = CampeonatoFactory.Create
                                    (
                campeao: FilmesMock.Vingadores,
                viceCampeao: FilmesMock.OsIncriveis2
                                    );

            Assert.Equal(resultadoEsperado, campeonato);
        }
        public Campeonato ProcessarCampeonato(List <Filme> filmes)
        {
            ValidarCampeonato(filmes);
            if (_notification.HasNotifications())
            {
                return(new Campeonato());
            }

            var primeiraRodada = OrganizarPrimeiraRodada(filmes);
            var podio          = ProcessarPodio(primeiraRodada).ToList();

            var campeao     = DefinirVencedorDaPartida(podio[0], podio[1]);
            var viceCampeao = podio.Where(filme => !filme.Equals(campeao)).FirstOrDefault();

            return(CampeonatoFactory.Create(campeao, viceCampeao));
        }