public void Setor_Criar_DeveCriarComSucesso()
        {
            //Arrange & Act
            var setor = new SetorTestBuilder().Build();

            //Assert
            setor.IsSuccess.ShouldBeTrue();
        }
        public void Criar_SiglaAcimeLimiteCaracteres_DeveFalhar()
        {
            //Arrange
            var builder = new SetorTestBuilder()
                          .ComSigla("ST1".PadRight(SetoresConstantes.SetorTamanhoMaximoSigla + 2));

            //Act
            var result = builder.Build();

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(SetoresConstantes.SetorCampoSiglaDeveTerAteNCaracteres);
        }
        public void Criar_SemSigla_DeveFalhar()
        {
            //Arrange
            var builder = new SetorTestBuilder()
                          .ComSigla("");

            //Act
            var result = builder.Build();

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(SetoresConstantes.SetorCampoSiglaObrigatorio);
        }
        public void Setor_AlterarDescricaoSetor_DeveCriarComSucesso()
        {
            //Arrange
            var    setor     = new SetorTestBuilder().Build().Value;
            string novoNome  = "Área 51";
            string novaSigla = "A51";

            //Act
            Result result = setor.AlterarDescricaoSetor(novoNome, novaSigla);

            //Assert
            result.IsSuccess.ShouldBeTrue();
            setor.Nome.ShouldBe(novoNome);
            setor.Sigla.ShouldBe(novaSigla);
        }
        public void Setor_RemoverMesa_DeveRemoverComSucesso()
        {
            //Arrange
            Setor setor = new SetorTestBuilder().Build().Value;

            setor.AdicionarMesa(1);
            setor.AdicionarMesa(2);

            //Act
            ushort mesa   = setor.Mesas.Max(n => n.Numeracao);
            Result result = setor.RemoverMesa(mesa);

            //Assert
            result.IsSuccess.ShouldBeTrue();
        }
        public void AdicionarMesa_MesaNova_DeveAdicionarComSucesso()
        {
            //Arrange
            Setor setor = new SetorTestBuilder().Build().Value;

            setor.AdicionarMesa(1);
            setor.AdicionarMesa(2);

            //Act
            ushort mesas  = (ushort)(setor.Mesas.Max(n => n.Numeracao) + 1);
            Result result = setor.AdicionarMesa(mesas);

            //Assert
            result.IsSuccess.ShouldBeTrue();
        }
        public void RemoverMesa_MesaInexistente_DeveFalhar()
        {
            //Arrange
            Setor setor = new SetorTestBuilder().Build().Value;

            setor.AdicionarMesa(1);
            setor.AdicionarMesa(2);

            //Act
            ushort mesa   = (ushort)(setor.Mesas.Max(n => n.Numeracao) + 1);
            Result result = setor.RemoverMesa(mesa);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(string.Format(SetoresConstantes.MesaInformadaNaoFoiLocalizada, mesa));
        }
        public void AdicionarMesa_MesaExistente_DeveAdicionarComSucesso()
        {
            //Arrange
            Setor setor = new SetorTestBuilder().Build().Value;

            setor.AdicionarMesa(1);
            setor.AdicionarMesa(2);

            //Act
            ushort mesas  = setor.Mesas.Max(n => n.Numeracao);
            Result result = setor.AdicionarMesa(mesas);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(string.Format(SetoresConstantes.JaExisteUmaMesaComEstaNumeracaoParaSetor, setor.Id));
        }
        public void AlterarDescricaoSetor_DadosInvalidos_DeveFalhar()
        {
            //Arrange
            var    setor     = new SetorTestBuilder().Build().Value;
            string novoNome  = "Área 51";
            string novaSigla = "";

            //Act
            Result result = setor.AlterarDescricaoSetor(novoNome, novaSigla);

            //Assert
            result.IsFailure.ShouldBeTrue();
            result.Error.ShouldContain(SetoresConstantes.SetorCampoSiglaObrigatorio);
            setor.Nome.ShouldNotBe(novoNome);
            setor.Sigla.ShouldNotBe(novaSigla);
        }