/*
 * EmprestimoTest.java
 * JUnit based test
 *
 * Created on 11 de Outubro de 2004, 20:58
 */

package locadora.core;

import javax.jdo.*;
import java.io.*;
import junit.framework.TestCase;
import junit.framework.*;
import java.lang.*;
import java.util.*;
import java.util.Date;
import locadora.core.*;
import locadora.factory.Factory;

/**
 *
 * @author arilo
 */
public class EmprestimoTest extends TestCase {
    
    PersistenceManagerFactory pmf;
    PersistenceManager pm;
    Emprestimo emprestimo;
    Factory factory;
    Cliente cliente;
    Video video;
    Filme filme;
    Date dataDevolucao;
    Date dataLocacao;
    double aluguel;
    int status;
    
    public EmprestimoTest(String testName) {
        super(testName);
        
    }
    
    protected void setUp() throws java.lang.Exception {
        
        Properties p = new Properties();
        try {
            
            factory = new Factory(this.getClass());
            setEmprestimoTest();
             
            
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        
        
    }
    
    protected void setEmprestimoTest()
    {
        emprestimo = new Emprestimo();
        cliente = new Cliente();
        filme = new Filme();
        video = new Video();
        dataDevolucao= new Date();
        dataLocacao= new Date();
        aluguel = 550.5;                                
        status = Emprestimo.ATRASADO;            
        
        cliente.setCPF("455.456.789-10");
        cliente.setNome("Lindsen Dias");
        emprestimo.setCliente(cliente);
        
        filme.setTitulo("Titanic");
        filme.setNumeroCopias(5);
        
        video.setFilme(filme);
        video.setTipo(Video.DVD);
        video.setValorDiaria(5);
        video.setAlugado(false);
        
        //emprestimo.addVideos(video);
        emprestimo.setDataDevolucao(dataDevolucao);
        emprestimo.setDataLocacao(dataLocacao);
        emprestimo.setValorAlguel(aluguel);
        emprestimo.setStatus(status);                        
        
        factory.save(emprestimo);
    }
    
    protected void tearDown() throws java.lang.Exception {
        
        factory.delete(cliente);
        factory.delete(emprestimo);
     //   factory.delete(video);
    //    factory.delete(filme);
                
        factory.close();    
    }
    
    public static junit.framework.Test suite() {
        
        junit.framework.TestSuite suite = new junit.framework.TestSuite(EmprestimoTest.class);
        
        return suite;
    }
    
    /**
     * Test of getCliente method, of class locadora.core.Emprestimo.
     */
    public void testCliente() {
        
        System.out.println("testCliente");
        
        emprestimo = factory.getEmprestimo(dataLocacao,dataDevolucao,cliente,video);
         
        assertSame(cliente,emprestimo.getCliente());
       
        
   }
    
    /**
     * Test of getVideoss method, of class locadora.core.Emprestimo.
     */
    /*public void testVideos() {
        
        System.out.println("testGetVideoss");
        
        assertNull(emprestimo.getVideoss());
        
        //persistir objeto emprestimo
        // recuperar objeto emprestimo

    }*/
       
    /**
     * Test of ValorAlguel methods (get, set), of class locadora.core.Emprestimo.
     */
    public void testValorAlguel(){
        
        System.out.println("testGetValorAlguel");

        emprestimo = factory.getEmprestimo(dataLocacao,dataDevolucao,cliente,video);            
        assertEquals(aluguel,emprestimo.getValorAlguel());
        
    }
        
    /**
     * Test of Status methods (get, set), of class locadora.core.Emprestimo.
     */
    public void testStatus() {
        
        System.out.println("testGetStatus");

        emprestimo = factory.getEmprestimo(dataLocacao,dataDevolucao,cliente,video);                    
        assertEquals(status,emprestimo.getStatus());
    }
    
    /**
     * Test of DataLocacao methods (get, set), of class locadora.core.Emprestimo.
     */
    public void testDataLocacao() {
        
        System.out.println("testGetDataLocacao");
        
        emprestimo = factory.getEmprestimo(dataLocacao,dataDevolucao,cliente,video);                    
        assertEquals(dataLocacao.getTime(),emprestimo.getDataLocacao().getTime());
    }
    
    
    /**
     * Test of getDataDevolucao method, of class locadora.core.Emprestimo.
     */
    public void testDataDevolucao() {
        
        System.out.println("testGetDataDevolucao");

        emprestimo = factory.getEmprestimo(dataLocacao,dataDevolucao,cliente,video);                    
        assertEquals(dataDevolucao.getTime(),emprestimo.getDataDevolucao().getTime());
    }
    
    
    public static void main(java.lang.String[] argList) {
        
        junit.textui.TestRunner.run(suite());
    }
    
    // TODO add test methods here. The name must begin with 'test'. For example:
    // public void testHello() {}
    
}
