Buscar

Atividade Avaliativa Especial - Prova 2

Prévia do material em texto

1/2
CENTRO UNIVERSITÁRIO DA GRANDE DOURADOS
Curso: Engenharia de Software
Semestre: 7º 
Disciplina: Projeto Integrador Web
ATIVIDADE AVALIATIVA ESPECIAL (AAE) 2 - referente as aulas 5 a 8
Professor: Felipe Pereira Perez
ORIENTAÇÕES
Cada Atividade respondida de forma correta terá até 5 pontos por anotação correta
Estudo de caso: Controle de Reserva de Hotel
Você foi contratado para desenvolver um sistema para uma rede hoteleira.
· O sistema deverá permitir ao funcionário do hotel:
· Criar uma reserva;
· Deletar uma reserva;
· Modificar uma reserva;
· Fazer o check-in;
· Fazer o check-out.
· O sistema deverá permitir ao cliente do hotel:
· Criar uma reserva;
· Deletar uma reserva;
· Modificar uma reserva;
· Verificar a disponibilidade de vagas.
· Uma reserva deverá ter as informações dos hóspedes que ficarão hospedados.
· O sistema deverá informar sobre a disponibilidade de vagas.
Levando em consideração essas informações e seguindo a especificação e projeto que você fez na P1 responda o que segue:
1º) 	Seguindo o modelo MVC construa o Model da classe do Cliente do seu sistema de reservas.
(Insira o código no quadro abaixo)
	<?php
namespace App\model;
require_once "Connection.php";
class Cliente
{
    private $nome;
    private $cpf;
    private $email;
    private $senha;
    private $telefone;
    private $connection;
    function __construct($nome = null, $cpf = null, $email = null, $senha = null, $telefone = null)
    {
        $this->setNome($nome);
        $this->setCpf($cpf);
        $this->setEmail($email);
        $this->setSenha($senha);
        $this->setTelefone($telefone);
        $this->connection = Connection::getInstance();
    }
    //implementar métodos, novos métods em relação a P1
    public function create(){}
    public function update($cpf){}
    public function read($cpf = null){return array();}
    public function delete($cpf){}
    public function getNome()
    {
        return $this->nome;
    }
    public function setNome($nome)
    {
        $this->nome = $nome;
        return $this;
    }
    public function getCpf()
    {
        return $this->cpf;
    }
    public function setCpf($cpf)
    {
        $this->cpf = $cpf;
        return $this;
    }
    public function getEmail()
    {
        return $this->email;
    }
    public function setEmail($email)
    {
        $this->email = $email;
        return $this;
    }
    public function getSenha()
    {
        return $this->senha;
    }
    public function setSenha($senha)
    {
        $this->senha = $senha;
        return $this;
    }
    public function getTelefone()
    {
        return $this->telefone;
    }
    public function setTelefone($telefone)
    {
        $this->telefone = $telefone;
        return $this;
    }
}
2º) Construa o arquivo de teste para a classe Cliente desenvolvida na questão anterior.	
(Insira o código no quadro abaixo)
	<?php
use PHPUnit\Framework\TestCase;
use App\model\Cliente;
class ClienteTest extends TestCase
{
    public static function setUpBeforeClass(): void
    {
        self::deleteTestCliente();
    }
    public static function tearDownAfterClass(): void
    {
        self::deleteTestCliente();
    }
    private static function deleteTestCliente()
    {
        $cpf = null;
        $cliente = new Cliente();
        $clientes = $cliente->read();
        foreach ($clientes as $key => $value) {
            if ($value["cpf"] == "cpf"){
                 $cliente->delete($cpf);
            }
        }       
    }
    public function testCRUDUser()
    {
        //Nesse teste é verificado se a inserção, atualização e remoção do usuário no banco está funcionando corretamente.
        //Para poder ser atualizado ou removido o usuário precisa estar devidamente criado no banco de dados, não somente instanciado.
        $cliente = new Cliente("Eric", "123.456.789-15", "eric@gmail.com", "123456", "(67) 99938-4499");
        $this->assertFalse($cliente->update($cliente->getCpf()));
        $this->assertFalse($cliente->delete($cliente->getCpf()));
        $this->assertTrue($cliente->create());
        $this->assertTrue($cliente->update($cliente->getCpf()));
        //Dois clientes não podem ter o mesmo cpf.
        $newcliente = new Cliente("Eric", "123.456.789-15", "eric@gmail.com", "123456", "(67) 99938-4499");
        $this->assertFalse($newcliente->create());
        //Testes para verificar o retorno da função de leitura, quando um cpf é passado só pode retornar um registro.
        $this->assertEquals(1, count($cliente->read($cliente->getCpf())));
        //Quando um cpf não é passado para a função de leitura ele deve ter pelo menos um registro
        $this->assertFalse(count($cliente->read()) < 1);
        $this->assertTrue($cliente->delete($cliente->getCpf()));
    }
}

Continue navegando