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 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 43 \ No newline at end of file
... ...
ieducar/intranet/educar_servidor_cad.php
1 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 47 class indice extends clsCadastro
... ... @@ -214,10 +219,10 @@ class indice extends clsCadastro
214 219 echo "<!--\nErro\nClasse clsCadastroEscolaridade nao encontrada\n-->";
215 220 $opcoes = array( "" => "Erro na geracao" );
216 221 }
217   -
  222 +
218 223 $script = "javascript:showExpansivelIframe(350, 100, 'educar_escolaridade_cad_pop.php');";
219 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 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 547 // gera o html
543 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 730 </script>
722 731 \ No newline at end of file
... ...
ieducar/tests/functional/ServidorCriarNovoSelectFuncoes.class.php 0 → 100644
... ... @@ -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 79 \ No newline at end of file
... ...