Commit 62a0e641ec2c514b56a0d91b309e7857a33c63c1

Authored by Eriksen Costa Paixão
1 parent 82e257a3
Exists in master

#25 by Eriksen: Corrigido bug em select de funções durante cadastro de novo serv…

…idor. Correção inclui:
 
 * Correção e documentação do código javascript do select de funções
 * Teste funcional com Selenium para verificar correção do bug



ieducar/intranet/educar_limpa_sessao_curso_disciplina_servidor.php
1 -<? 1 +<?php
2 2
3 - @session_start();  
4 - unset($_SESSION['cursos_disciplina']);  
5 - unset($_SESSION['cursos_servidor']);  
6 - unset($_SESSION['cod_servidor']);  
7 - @session_write_close();  
8 - echo ""; 3 +/*
  4 + * i-Educar - Sistema de gestão de escolas
  5 + *
  6 + * Copyright (c) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuÃí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + */
9 23
10 -?>  
11 \ No newline at end of file 24 \ No newline at end of file
  25 +/**
  26 + * Apaga variáveis de sessão contendo dados de função do servidor
  27 + *
  28 + * Arquivo acessado via XMLHttpRequest
  29 + *
  30 + * @author Prefeitura Municipal de Itajaí <ctima@itajai.sc.gov.br>
  31 + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL
  32 + * @package Core
  33 + * @since Arquivo disponível desde a versão 1.0.0
  34 + * @version $Id$
  35 + */
  36 +
  37 +session_start();
  38 +unset($_SESSION['cursos_disciplina']);
  39 +unset($_SESSION['cursos_servidor']);
  40 +unset($_SESSION['cod_servidor']);
  41 +session_write_close();
  42 +echo "";
12 \ No newline at end of file 43 \ No newline at end of file
ieducar/intranet/educar_servidor_cad.php
1 <?php 1 <?php
2 -/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  
3 - * *  
4 - * @author Prefeitura Municipal de Itajaí *  
5 - * @updated 29/03/2007 *  
6 - * Pacote: i-PLB Software Público Livre e Brasileiro *  
7 - * *  
8 - * Copyright (C) 2006 PMI - Prefeitura Municipal de Itajaí *  
9 - * ctima@itajai.sc.gov.br *  
10 - * *  
11 - * Este programa é software livre, você pode redistribuí-lo e/ou *  
12 - * modificá-lo sob os termos da Licença Pública Geral GNU, conforme *  
13 - * publicada pela Free Software Foundation, tanto a versão 2 da *  
14 - * Licença como (a seu critério) qualquer versão mais nova. *  
15 - * *  
16 - * Este programa é distribuído na expectativa de ser útil, mas SEM *  
17 - * QUALQUER GARANTIA. Sem mesmo a garantia implícita de COMERCIALI- *  
18 - * ZAÇÃO ou de ADEQUAÇÃO A QUALQUER PROPÓSITO EM PARTICULAR. Con- *  
19 - * sulte a Licença Pública Geral GNU para obter mais detalhes. *  
20 - * *  
21 - * Você deve ter recebido uma cópia da Licença Pública Geral GNU *  
22 - * junto com este programa. Se não, escreva para a Free Software *  
23 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA *  
24 - * 02111-1307, USA. *  
25 - * *  
26 - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
27 -  
28 -require_once ("include/clsBase.inc.php");  
29 -require_once ("include/clsCadastro.inc.php");  
30 -require_once ("include/clsBanco.inc.php");  
31 -require_once( "include/pmieducar/geral.inc.php" );  
32 -  
33 -class clsIndexBase extends clsBase  
34 -{  
35 - function Formular()  
36 - {  
37 - $this->SetTitulo( "{$this->_instituicao} i-Educar - Servidor" );  
38 - $this->processoAp = "635";  
39 - } 2 +
  3 +/*
  4 + * i-Educar - Sistema de gestão de escolas
  5 + *
  6 + * Copyright (c) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuÃí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + */
  23 +
  24 +/**
  25 + * Formulário de cadastro de servidor
  26 + *
  27 + * @author Prefeitura Municipal de Itajaí <ctima@itajai.sc.gov.br>
  28 + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL
  29 + * @package Core
  30 + * @since Arquivo disponível desde a versão 1.0.0
  31 + * @version $Id$
  32 + */
  33 +
  34 +require_once 'include/clsBase.inc.php';
  35 +require_once 'include/clsCadastro.inc.php';
  36 +require_once 'include/clsBanco.inc.php';
  37 +require_once 'include/pmieducar/geral.inc.php';
  38 +
  39 +
  40 +class clsIndexBase extends clsBase {
  41 + public function Formular() {
  42 + $this->SetTitulo($this->_instituicao . " i-Educar - Servidor");
  43 + $this->processoAp = "635";
  44 + }
40 } 45 }
41 46
42 class indice extends clsCadastro 47 class indice extends clsCadastro
@@ -214,10 +219,10 @@ class indice extends clsCadastro @@ -214,10 +219,10 @@ class indice extends clsCadastro
214 echo "<!--\nErro\nClasse clsCadastroEscolaridade nao encontrada\n-->"; 219 echo "<!--\nErro\nClasse clsCadastroEscolaridade nao encontrada\n-->";
215 $opcoes = array( "" => "Erro na geracao" ); 220 $opcoes = array( "" => "Erro na geracao" );
216 } 221 }
217 - 222 +
218 $script = "javascript:showExpansivelIframe(350, 100, 'educar_escolaridade_cad_pop.php');"; 223 $script = "javascript:showExpansivelIframe(350, 100, 'educar_escolaridade_cad_pop.php');";
219 $script = "<img id='img_deficiencia' style='display: \'\'' src='imagens/banco_imagens/escreve.gif' style='cursor:hand; cursor:pointer;' border='0' onclick=\"{$script}\">"; 224 $script = "<img id='img_deficiencia' style='display: \'\'' src='imagens/banco_imagens/escreve.gif' style='cursor:hand; cursor:pointer;' border='0' onclick=\"{$script}\">";
220 - 225 +
221 $this->campoLista( "ref_idesco", "Escolaridade", $opcoes, $this->ref_idesco,"",false,"",$script,false,false ); 226 $this->campoLista( "ref_idesco", "Escolaridade", $opcoes, $this->ref_idesco,"",false,"",$script,false,false );
222 227
223 /** 228 /**
@@ -542,180 +547,184 @@ $pagina-&gt;addForm( $miolo ); @@ -542,180 +547,184 @@ $pagina-&gt;addForm( $miolo );
542 // gera o html 547 // gera o html
543 $pagina->MakeAll(); 548 $pagina->MakeAll();
544 ?> 549 ?>
545 -<script>  
546 -  
547 - function getFuncao(id_campo)  
548 - {  
549 - var campoInstituicao = document.getElementById('ref_cod_instituicao').value;  
550 - var campoFuncao = document.getElementById(id_campo);  
551 - campoFuncao.length = 1;  
552 -  
553 - if( campoFuncao )  
554 - {  
555 - campoFuncao.disabled = true;  
556 - campoFuncao.options[0].text = 'Carregando funções';  
557 -  
558 - var xml = new ajax(atualizaLstFuncao,id_campo);  
559 - xml.envia("educar_funcao_xml.php?ins="+campoInstituicao+"&professor=true");  
560 - }  
561 - else  
562 - {  
563 - campoFuncao.options[0].text = 'Selecione';  
564 - }  
565 - }  
566 -  
567 - function atualizaLstFuncao(xml)  
568 - {  
569 -  
570 - var campoFuncao = document.getElementById(arguments[1]);  
571 -  
572 - campoFuncao.length = 1;  
573 - campoFuncao.options[0].text = 'Selecione uma função';  
574 - campoFuncao.disabled = false;  
575 550
576 - funcaoChange(campoFuncao);  
577 -  
578 - var funcoes = xml.getElementsByTagName('funcao');  
579 - if(funcoes.length)  
580 - {  
581 - for( var i = 0; i < funcoes.length; i++ )  
582 - {  
583 - campoFuncao.options[campoFuncao.options.length] = new Option( funcoes[i].firstChild.data, funcoes[i].getAttribute('cod_funcao'),false,false);  
584 - }  
585 - }  
586 - else  
587 - {  
588 - campoFuncao.options[0].text = 'A instituição não possui nenhuma função';  
589 - }  
590 -  
591 -  
592 - }  
593 -  
594 - function funcaoChange(campo)  
595 - {  
596 - var valor = campo.value.split("-");  
597 - var id = /[0-9]+/.exec(campo.id)[0];  
598 - var professor = valor[1] == true;  
599 -  
600 - var campo_img = document.getElementById('td_disciplina[0]').lastChild.lastChild;  
601 - var campo_img2 = document.getElementById('td_curso[0]').lastChild.lastChild;  
602 -  
603 - //this.previousSibling.previousSibling.id 551 +<script type="text/javascript">
  552 +/**
  553 + * Carrega as opções de um campo select de funções via Ajax
  554 + */
  555 +function getFuncao(id_campo) {
  556 + var campoInstituicao = document.getElementById('ref_cod_instituicao').value;
  557 + var campoFuncao = document.getElementById(id_campo);
  558 + campoFuncao.length = 1;
  559 +
  560 + if (campoFuncao) {
  561 + campoFuncao.disabled = true;
  562 + campoFuncao.options[0].text = 'Carregando funções';
  563 +
  564 + var xml = new ajax(atualizaLstFuncao,id_campo);
  565 + xml.envia("educar_funcao_xml.php?ins="+campoInstituicao+"&professor=true");
  566 + }
  567 + else {
  568 + campoFuncao.options[0].text = 'Selecione';
  569 + }
  570 +}
604 571
605 - //professor  
606 - if(professor)  
607 - {  
608 - //campo_img = campo_img.lastChild; 572 +/**
  573 + * Parse de resultado da chamada Ajax de getFuncao(). Adiciona cada item
  574 + * retornado como option do select
  575 + */
  576 +function atualizaLstFuncao(xml) {
  577 + var campoFuncao = document.getElementById(arguments[1]);
  578 +
  579 + campoFuncao.length = 1;
  580 + campoFuncao.options[0].text = 'Selecione uma função';
  581 + campoFuncao.disabled = false;
  582 +
  583 + funcaoChange(campoFuncao);
  584 +
  585 + var funcoes = xml.getElementsByTagName('funcao');
  586 + if (funcoes.length) {
  587 + for (var i = 0; i < funcoes.length; i++) {
  588 + campoFuncao.options[campoFuncao.options.length] =
  589 + new Option(funcoes[i].firstChild.data, funcoes[i].getAttribute('cod_funcao'), false, false);
  590 + }
  591 + }
  592 + else {
  593 + campoFuncao.options[0].text = 'A instituição não possui funções de servidores';
  594 + }
  595 +}
609 596
610 - //document.getElementById('novo_func_tab['+(/[0-9]+/.exec(campo.id))+']').value = document.getElementById('novo_func_tab['+(/[0-9]+/.exec(campo.id))+']').value == '' ? 's' : document.getElementById('novo_func_tab['+(/[0-9]+/.exec(campo.id))+']').value == 'n' ? 's' : 'n';  
611 597
612 - /*while(campo_img.tagName != 'IMG')  
613 - {  
614 - campo_img = campo_img.nextSibling;  
615 - }*/  
616 - setVisibility(campo_img, true);  
617 - setVisibility(campo_img2, true);  
618 - }  
619 - else  
620 - {  
621 - //campo_img = campo_img.childNodes[0]; 598 +/**
  599 + * Altera a visibilidade de opções extras
  600 + *
  601 + * Quando a função escolhida para o servidor for do tipo professor, torna as
  602 + * opções de escolha de disciplina e cursos visíveis
  603 + *
  604 + * É um toggle on/off
  605 + */
  606 +function funcaoChange(campo) {
  607 + var valor = campo.value.split("-");
  608 + var id = /[0-9]+/.exec(campo.id)[0];
  609 + var professor = (valor[1] == true);
  610 +
  611 + var campo_img = document.getElementById('td_disciplina['+ id +']').lastChild.lastChild;
  612 + var campo_img2 = document.getElementById('td_curso['+ id +']').lastChild.lastChild;
  613 +
  614 + // Se for professor
  615 + if (professor == true) {
  616 + setVisibility(campo_img, true);
  617 + setVisibility(campo_img2, true);
  618 + }
  619 + else {
  620 + setVisibility(campo_img, false);
  621 + setVisibility(campo_img2, false);
  622 + }
  623 +}
622 624
623 - //document.getElementById('novo_func_tab['+(/[0-9]+/.exec(campo.id))+']').value = document.getElementById('novo_func_tab['+(/[0-9]+/.exec(campo.id))+']').value == '' ? 's' : document.getElementById('novo_func_tab['+(/[0-9]+/.exec(campo.id))+']').value == 'n' ? 's' : 'n';  
624 625
625 - /*while(campo_img.tagName != 'IMG')  
626 - {  
627 - campo_img = campo_img.nextSibling;  
628 - }*/ 626 +/**
  627 + * Chama as funções getFuncao e funcaoChange para todas as linhas da tabela
  628 + * de função de servidor
  629 + */
  630 +function trocaTodasfuncoes() {
  631 + for (var ct = 0; ct < tab_add_1.id; ct++) {
  632 + // Não executa durante onload senão, funções atuais são substituídas
  633 + if (onloadCallOnce == false) {
  634 + getFuncao('ref_cod_funcao[' + ct + ']');
  635 + }
  636 + funcaoChange(document.getElementById('ref_cod_funcao[' + ct + ']'));
  637 + }
  638 +}
629 639
630 - setVisibility(campo_img, false);  
631 - setVisibility(campo_img2, false);  
632 - //!getVisibility(campo)  
633 640
634 - } 641 +/**
  642 + * Verifica se ref_cod_instituicao existe via DOM e dá um bind no evento
  643 + * onchange do elemento para executar a função trocaTodasfuncoes()
  644 + */
  645 +if (document.getElementById('ref_cod_instituicao')) {
  646 + var ref_cod_instituicao = document.getElementById('ref_cod_instituicao');
635 647
636 - }  
637 - function popless()  
638 - {  
639 - var campoInstituicao = document.getElementById('ref_cod_instituicao').value;  
640 - var campoServidor = document.getElementById('cod_servidor').value;  
641 - pesquisa_valores_popless1('educar_servidor_disciplina_lst.php?ref_cod_servidor='+campoServidor+'&ref_cod_instituicao='+campoInstituicao, '');  
642 - } 648 + // Função anônima para evento onchance do select de instituição
  649 + ref_cod_instituicao.onchange = function() {
  650 + trocaTodasfuncoes();
  651 + var xml = new ajax(function(){});
  652 + xml.envia("educar_limpa_sessao_curso_disciplina_servidor.php");
  653 + }
  654 +}
643 655
644 - function popCurso()  
645 - {  
646 - var campoInstituicao = document.getElementById('ref_cod_instituicao').value;  
647 - var campoServidor = document.getElementById('cod_servidor').value;  
648 - pesquisa_valores_popless('educar_servidor_curso_lst.php?ref_cod_servidor='+campoServidor+'&ref_cod_instituicao='+campoInstituicao, '');  
649 - }  
650 656
651 - function pesquisa_valores_popless1(caminho, campo)  
652 - {  
653 - new_id = DOM_divs.length;  
654 - div = 'div_dinamico_' + new_id;  
655 - if ( caminho.indexOf( '?' ) == -1 )  
656 - showExpansivel( 850, 500, '<iframe src="' + caminho + '?campo=' + campo + '&div=' + div + '&popless=1" frameborder="0" height="100%" width="100%" marginheight="0" marginwidth="0" name="temp_win_popless"></iframe>', 'Pesquisa de valores' );  
657 - else  
658 - showExpansivel( 850, 500, '<iframe src="' + caminho + '&campo=' + campo + '&div=' + div + '&popless=1" frameborder="0" height="100%" width="100%" marginheight="0" marginwidth="0" name="temp_win_popless"></iframe>', 'Pesquisa de valores' );  
659 - }  
660 -  
661 - tab_add_1.afterAddRow = function () { funcaoChange(document.getElementById('ref_cod_funcao['+(tab_add_1.id-1)+']')); getFuncao('ref_cod_funcao['+(tab_add_1.id-1)+']');} 657 +/**
  658 + * Chama as funções funcaoChange e getFuncao após a execução da função addRow
  659 + */
  660 +tab_add_1.afterAddRow = function () {
  661 + funcaoChange(document.getElementById('ref_cod_funcao['+(tab_add_1.id - 1)+']'));
  662 + getFuncao('ref_cod_funcao['+(tab_add_1.id-1)+']');
  663 +}
662 664
663 - window.onload = function()  
664 - {  
665 - trocaTodasfuncoes();  
666 - }  
667 665
668 - function trocaTodasfuncoes()  
669 - {  
670 - for(var ct=0;ct<tab_add_1.id;ct++)  
671 - {  
672 - //funcaoChange(document.getElementById('ref_cod_funcao['+ct+']'));  
673 - funcaoChange(document.getElementById('ref_cod_funcao['+ct+']'));  
674 - //getFuncao('ref_cod_funcao['+ct+']');  
675 - }  
676 - } 666 +/**
  667 + * Variável de estado, deve ser checada por funções que queiram executar ou
  668 + * não um trecho de código apenas durante o onload
  669 + */
  670 +var onloadCallOnce = true;
  671 +window.onload = function() {
  672 + trocaTodasfuncoes();
  673 + onloadCallOnce = false;
  674 +}
677 675
678 - if ( document.getElementById( 'ref_cod_instituicao' ) ) {  
679 - var ref_cod_instituicao = document.getElementById( 'ref_cod_instituicao' );  
680 - ref_cod_instituicao.onchange = function() {  
681 - trocaTodasfuncoes();  
682 - var xml = new ajax(function(){});  
683 - xml.envia("educar_limpa_sessao_curso_disciplina_servidor.php");}  
684 - }  
685 676
686 - function getArrayHora(hora){  
687 - var array_h;  
688 - if(hora)  
689 - array_h = hora.split(":");  
690 - else  
691 - array_h = new Array(0,0); 677 +function getArrayHora(hora) {
  678 + var array_h;
  679 + if (hora) {
  680 + array_h = hora.split(":");
  681 + }
  682 + else {
  683 + array_h = new Array(0,0);
  684 + }
692 685
693 - return array_h; 686 + return array_h;
  687 +}
694 688
695 - } 689 +function acao2() {
  690 + var total_horas_alocadas = getArrayHora(document.getElementById('total_horas_alocadas').value);
  691 + var carga_horaria = (document.getElementById('carga_horaria').value).replace(',', '.');
696 692
697 - function acao2()  
698 - {  
699 - var total_horas_alocadas = getArrayHora( document.getElementById( 'total_horas_alocadas' ).value ); 693 + if (parseFloat(total_horas_alocadas) > parseFloat(carga_horaria)) {
  694 + alert('Atenção, carga horária deve ser maior que horas alocadas!');
700 695
701 - var carga_horaria = ( document.getElementById( 'carga_horaria' ).value ).replace( ',', '.' ); 696 + return false;
  697 + }
  698 + else {
  699 + acao();
  700 + }
  701 +}
702 702
703 - //var horas_trabalhadas = Date.UTC( 1970, 01, 01, parseInt( total_horas_alocadas[0], 10 ), parseInt( total_horas_alocadas[1], 10 ), 0 ); 703 +if (document.getElementById('total_horas_alocadas')) {
  704 + document.getElementById('total_horas_alocadas').style.textAlign='right';
  705 +}
704 706
705 - //var total_horas = Date.UTC( 1970, 01, 01, parseInt( carga_horaria, 10 ), ( carga_horaria - parseInt( carga_horaria, 10 ) ) * 60, 0 );  
706 707
707 - if( parseFloat( total_horas_alocadas ) > parseFloat( carga_horaria ) )  
708 - {  
709 - alert( 'Atenção, carga horária deve ser maior que horas alocadas!' );  
710 - return false; 708 +function popless() {
  709 + var campoInstituicao = document.getElementById('ref_cod_instituicao').value;
  710 + var campoServidor = document.getElementById('cod_servidor').value;
  711 + pesquisa_valores_popless1('educar_servidor_disciplina_lst.php?ref_cod_servidor='+campoServidor+'&ref_cod_instituicao='+campoInstituicao, '');
  712 +}
711 713
712 - }  
713 - else  
714 - {  
715 - acao();  
716 - }  
717 - } 714 +function popCurso() {
  715 + var campoInstituicao = document.getElementById('ref_cod_instituicao').value;
  716 + var campoServidor = document.getElementById('cod_servidor').value;
  717 + pesquisa_valores_popless('educar_servidor_curso_lst.php?ref_cod_servidor='+campoServidor+'&ref_cod_instituicao='+campoInstituicao, '');
  718 +}
718 719
719 - if ( document.getElementById('total_horas_alocadas') )  
720 - document.getElementById('total_horas_alocadas').style.textAlign='right'; 720 +function pesquisa_valores_popless1(caminho, campo) {
  721 + new_id = DOM_divs.length;
  722 + div = 'div_dinamico_' + new_id;
  723 + if (caminho.indexOf('?') == -1) {
  724 + showExpansivel(850, 500, '<iframe src="' + caminho + '?campo=' + campo + '&div=' + div + '&popless=1" frameborder="0" height="100%" width="100%" marginheight="0" marginwidth="0" name="temp_win_popless"></iframe>', 'Pesquisa de valores' );
  725 + }
  726 + else {
  727 + showExpansivel(850, 500, '<iframe src="' + caminho + '&campo=' + campo + '&div=' + div + '&popless=1" frameborder="0" height="100%" width="100%" marginheight="0" marginwidth="0" name="temp_win_popless"></iframe>', 'Pesquisa de valores' );
  728 + }
  729 +}
721 </script> 730 </script>
722 \ No newline at end of file 731 \ No newline at end of file
ieducar/tests/functional/ServidorCriarNovoSelectFuncoes.class.php 0 → 100644
@@ -0,0 +1,78 @@ @@ -0,0 +1,78 @@
  1 +<?php
  2 +
  3 +/*
  4 + * i-Educar - Sistema de gestão de escolas
  5 + *
  6 + * Copyright (c) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuÃí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + */
  23 +
  24 +
  25 +require_once realpath(dirname(__FILE__) . '/../') . '/FunctionalBaseTest.class.php';
  26 +
  27 +/**
  28 + * ServidorCriarNovoSelectFuncoes class
  29 + *
  30 + * Testa se a condição de carregamento de funções via XMLHttpRequest do select
  31 + * de funções está funcionando corretamente. Esse comportamento é testado para
  32 + * assegurar a correção do bug do {@link http://svn.softwarepublico.gov.br/trac/ieducar/ticket/25 ticket 25}
  33 + *
  34 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  35 + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL
  36 + * @package Test
  37 + * @since Classe disponível desde a versão 1.0.2
  38 + * @version $Id$
  39 + */
  40 +class ServidorCriarNovoSelectFuncoes extends FunctionalBaseTest {
  41 +
  42 + /**
  43 + * Testa se o select de funções do cadastro de servidor contém mais de uma
  44 + * opção
  45 + *
  46 + * Esse teste espera que a primeira instituição lista no select
  47 + * ref_cod_instituicao tenha funções cadastradas
  48 + *
  49 + * @see educar_servidor_cad.php
  50 + */
  51 + public function testSelectFuncoesWithOptions() {
  52 + $this->doLogin();
  53 + $this->open('/intranet/educar_servidor_cad.php');
  54 +
  55 + $items = 0;
  56 + $timeout = 60;
  57 + $this->select("//*[@id=\"ref_cod_instituicao\"]", "index=1");
  58 +
  59 + for ($second = 0; ; $second++) {
  60 + if ($second >= $timeout) {
  61 + $this->fail("Requisição XMLHTTPRequest demorou mais que " . $timeout .
  62 + " segundos.");
  63 + }
  64 +
  65 + try {
  66 + $items = count($this->getSelectOptions("//*[@id=\"ref_cod_funcao[0]\"]"));
  67 + if ($items > 1) {
  68 + $this->assertTrue($items > 1);
  69 + break;
  70 + }
  71 + } catch (Exception $e) {
  72 + $this->fail("Exception: " . $e);
  73 + }
  74 + sleep(1);
  75 + }
  76 + }
  77 +
  78 +}
0 \ No newline at end of file 79 \ No newline at end of file