public void DeveObterJogoPeloSeuId()
        {
            var repositorio = new Mock <IRepositorioDeJogos> ();

            var id   = Guid.NewGuid();
            var jogo = new Jogo {
                Id      = id,
                Nome    = "nome",
                Sistema = "Sistema",
                Ano     = 1990
            };

            repositorio.Setup(x => x.PorId(It.Is <Guid> (v => v == id)))
            .Returns(jogo);

            var servico = new ServicoDeJogos(repositorio.Object) as IServicoDeJogos;

            var resultado = servico.PorId(id);

            resultado.Should()
            .BeEquivalentTo(new DadosDoJogo {
                Nome    = "nome",
                Sistema = "Sistema",
                Ano     = 1990
            });
        }
        public void DeveLancarExcecaoSeNaoEncontrarPorId()
        {
            var repositorio = new Mock <IRepositorioDeJogos>();

            repositorio.Setup(x => x.PorId(It.IsAny <Guid>()))
            .Throws(new JogoNaoPodeSerEncontradoException("msg", new Exception()));

            var servico = new ServicoDeJogos(repositorio.Object) as IServicoDeJogos;

            Action act = () => servico.PorId(Guid.NewGuid());

            act.Should().Throw <JogoNaoPodeSerEncontradoException>();
        }
        public void DeveAdicionarJogo()
        {
            var repositorio = new Mock <IRepositorioDeJogos> ();

            repositorio.Setup(x => x.Adicionar(It.IsAny <Jogo> (), "*****@*****.**"));

            var servico = new ServicoDeJogos(repositorio.Object) as IServicoDeJogos;

            servico.Adicionar(new DadosDoJogo {
                Nome    = "Jogo",
                Sistema = "Super Nintendo",
                Ano     = 1990
            }, "*****@*****.**");
            repositorio.Verify(x => x.Adicionar(It.IsAny <Jogo> (), "*****@*****.**"), Times.Once());
        }
        public void DeveLancarExcecaoSeNaoCadastrar()
        {
            var repositorio = new Mock <IRepositorioDeJogos> ();

            repositorio.Setup(x => x.Adicionar(It.IsAny <Jogo> (), "*****@*****.**"))
            .Throws(new JogoNaoPodeSerAdicionadoException("msg", new Exception()));

            var    servico = new ServicoDeJogos(repositorio.Object) as IServicoDeJogos;
            Action act     = () => servico.Adicionar(new DadosDoJogo {
                Nome    = "Jogo",
                Sistema = "Super Nintendo",
                Ano     = 1990
            }, "*****@*****.**");

            act.Should().Throw <JogoNaoPodeSerAdicionadoException> ();
        }
        public void DeveEditarJogo()
        {
            var repositorio = new Mock <IRepositorioDeJogos> ();

            var id = Guid.NewGuid();

            repositorio.Setup(x => x.Editar(It.IsAny <Jogo> ()));

            var servico = new ServicoDeJogos(repositorio.Object) as IServicoDeJogos;

            servico.Editar(id, new DadosDoJogo {
                Nome    = "Jogo",
                Sistema = "Super Nintendo",
                Ano     = 1990
            });
            repositorio.Verify(x => x.Editar(It.IsAny <Jogo> ()), Times.Once());
        }
        public void DeveLancarExcecaoSeNaoEditar()
        {
            var repositorio = new Mock <IRepositorioDeJogos> ();

            var id = Guid.NewGuid();

            repositorio.Setup(x => x.Editar(It.IsAny <Jogo> ()))
            .Throws(new JogoNaoPodeSerEditadoException("msg", new Exception()));

            var    servico = new ServicoDeJogos(repositorio.Object) as IServicoDeJogos;
            Action act     = () => servico.Editar(id, new DadosDoJogo {
                Nome    = "Jogo",
                Sistema = "Super Nintendo",
                Ano     = 1990
            });

            act.Should().Throw <JogoNaoPodeSerEditadoException> ();
        }