Commit c5eab2c1c42f7477f306c3c630706f3bcf0443af
1 parent
5823bc31
Exists in
master
Atualizado service {{{Avaliacao_Service_Boletim}}} para suportar pareceres descr…
…itivos. Refactoring nos casos de testes para torná-los mais simples e configuráveis para diferentes cenários
Showing
34 changed files
with
6639 additions
and
2074 deletions
Show diff stats
ieducar/lib/App/Model/Matricula.php
| ... | ... | @@ -59,7 +59,9 @@ class App_Model_Matricula |
| 59 | 59 | $instance->cod_matricula = $matricula; |
| 60 | 60 | $instance->ref_usuario_cad = $usuario; |
| 61 | 61 | $instance->ref_usuario_exc = $usuario; |
| 62 | - $instance->aprovado = ($aprovado == TRUE) ? 1 : 2; | |
| 62 | + $instance->aprovado = ($aprovado == TRUE) ? | |
| 63 | + App_Model_MatriculaSituacao::APROVADO : | |
| 64 | + App_Model_MatriculaSituacao::REPROVADO; | |
| 63 | 65 | |
| 64 | 66 | return $instance->edita(); |
| 65 | 67 | } | ... | ... |
ieducar/modules/Avaliacao/Model/ParecerDescritivoAbstract.php
| ... | ... | @@ -72,4 +72,14 @@ abstract class Avaliacao_Model_ParecerDescritivoAbstract extends Avaliacao_Model |
| 72 | 72 | 'parecer' => new CoreExt_Validate_String() |
| 73 | 73 | ); |
| 74 | 74 | } |
| 75 | + | |
| 76 | + /** | |
| 77 | + * Implementa método mágico __toString(). | |
| 78 | + * @link http://br.php.net/__toString | |
| 79 | + * @return string | |
| 80 | + */ | |
| 81 | + public function __toString() | |
| 82 | + { | |
| 83 | + return $this->parecer; | |
| 84 | + } | |
| 75 | 85 | } |
| 76 | 86 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/Service/Boletim.php
| ... | ... | @@ -47,6 +47,8 @@ require_once 'App/Model/MatriculaSituacao.php'; |
| 47 | 47 | * @package Avaliacao |
| 48 | 48 | * @subpackage Modules |
| 49 | 49 | * @since Classe disponível desde a versão 1.1.0 |
| 50 | + * @todo Substituir todos os usos literais de 'Rc' e 'An' por constantes | |
| 51 | + * ou por um novo CoreExt_Enum | |
| 50 | 52 | * @version @@package_version@@ |
| 51 | 53 | */ |
| 52 | 54 | class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| ... | ... | @@ -89,6 +91,11 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 89 | 91 | protected $_faltaAlunoDataMapper = NULL; |
| 90 | 92 | |
| 91 | 93 | /** |
| 94 | + * @var Avaliacao_Model_ParecerDescritivoAlunoDataMapper | |
| 95 | + */ | |
| 96 | + protected $_parecerDescritivoAlunoDataMapper = NULL; | |
| 97 | + | |
| 98 | + /** | |
| 92 | 99 | * @var Avaliacao_Model_NotaComponenteDataMapper |
| 93 | 100 | */ |
| 94 | 101 | protected $_notaComponenteDataMapper = NULL; |
| ... | ... | @@ -104,6 +111,11 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 104 | 111 | protected $_notaComponenteMediaDataMapper = NULL; |
| 105 | 112 | |
| 106 | 113 | /** |
| 114 | + * @var Avaliacao_Model_ParecerDescritivoAbstractDataMapper | |
| 115 | + */ | |
| 116 | + protected $_parecerDescritivoAbstractDataMapper = NULL; | |
| 117 | + | |
| 118 | + /** | |
| 107 | 119 | * Uma instância de Avaliacao_Model_NotaAluno, que é a entrada que contém |
| 108 | 120 | * o cruzamento de matrícula com as notas do aluno nos diversos componentes |
| 109 | 121 | * cursados. |
| ... | ... | @@ -122,6 +134,15 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 122 | 134 | protected $_faltaAluno = NULL; |
| 123 | 135 | |
| 124 | 136 | /** |
| 137 | + * Uma instância de Avaliacao_Model_ParecerDescritivoAluno, que é a entrada | |
| 138 | + * que contém o cruzamento de matrícula com os pareceres do aluno nos diversos | |
| 139 | + * componentes cursados ou no geral. | |
| 140 | + * | |
| 141 | + * @var Avaliacao_Model_ParecerDescritivoAluno | |
| 142 | + */ | |
| 143 | + protected $_parecerDescritivoAluno = NULL; | |
| 144 | + | |
| 145 | + /** | |
| 125 | 146 | * Componentes que o aluno cursa, indexado pelo id de |
| 126 | 147 | * ComponenteCurricular_Model_Componente. |
| 127 | 148 | * @var array |
| ... | ... | @@ -165,13 +186,49 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 165 | 186 | protected $_faltas = array(); |
| 166 | 187 | |
| 167 | 188 | /** |
| 189 | + * Pareceres descritivos adicionados no boletim para inclusão ou edição. | |
| 190 | + * @var array | |
| 191 | + */ | |
| 192 | + protected $_pareceres = array(); | |
| 193 | + | |
| 194 | + /** | |
| 195 | + * Pareceres descritivos do aluno nos componentes cursados. | |
| 196 | + * @var array | |
| 197 | + */ | |
| 198 | + protected $_pareceresComponentes = array(); | |
| 199 | + | |
| 200 | + /** | |
| 201 | + * Pareceres descritivos do aluno no geral. | |
| 202 | + * @var array | |
| 203 | + */ | |
| 204 | + protected $_pareceresGerais = array(); | |
| 205 | + | |
| 206 | + /** | |
| 207 | + * Validadores para instâncias de Avaliacao_Model_FaltaAbstract e | |
| 208 | + * Avaliacao_Model_NotaComponente. | |
| 209 | + * | |
| 210 | + * @see Avaliacao_Service_Boletim#_addValidators() | |
| 211 | + * @var array | |
| 212 | + */ | |
| 213 | + protected $_validators = NULL; | |
| 214 | + | |
| 215 | + /** | |
| 216 | + * Validadores para uma instância de Avaliacao_Model_ParecerDescritivoAbstract | |
| 217 | + * adicionada no boletim. | |
| 218 | + * | |
| 219 | + * @see Avaliacao_Service_Boletim#_addParecerValidators() | |
| 220 | + * @var array | |
| 221 | + */ | |
| 222 | + protected $_parecerValidators = NULL; | |
| 223 | + | |
| 224 | + /** | |
| 168 | 225 | * Prioridade da situação da matrícula, usado para definir a situação |
| 169 | 226 | * das notas e faltas. |
| 170 | 227 | * @var array |
| 171 | 228 | */ |
| 172 | 229 | protected $_situacaoPrioridade = array( |
| 173 | - App_Model_MatriculaSituacao::EM_EXAME => 1, | |
| 174 | - App_Model_MatriculaSituacao::EM_ANDAMENTO => 2, | |
| 230 | + App_Model_MatriculaSituacao::EM_ANDAMENTO => 1, | |
| 231 | + App_Model_MatriculaSituacao::EM_EXAME => 2, | |
| 175 | 232 | App_Model_MatriculaSituacao::REPROVADO => 3, |
| 176 | 233 | App_Model_MatriculaSituacao::APROVADO_APOS_EXAME => 4, |
| 177 | 234 | App_Model_MatriculaSituacao::APROVADO => 5 |
| ... | ... | @@ -193,7 +250,8 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 193 | 250 | $this->setOptions($options) |
| 194 | 251 | ->_setMatriculaInfo() |
| 195 | 252 | ->_loadNotaComponenteCurricular() |
| 196 | - ->_loadFalta(); | |
| 253 | + ->_loadFalta() | |
| 254 | + ->_loadParecerDescritivo(); | |
| 197 | 255 | } |
| 198 | 256 | |
| 199 | 257 | /** |
| ... | ... | @@ -242,6 +300,16 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 242 | 300 | unset($options['FaltaAbstractDataMapper']); |
| 243 | 301 | } |
| 244 | 302 | |
| 303 | + if (isset($options['ParecerDescritivoAlunoDataMapper'])) { | |
| 304 | + $this->setParecerDescritivoAlunoDataMapper($options['ParecerDescritivoAlunoDataMapper']); | |
| 305 | + unset($options['ParecerDescritivoAlunoDataMapper']); | |
| 306 | + } | |
| 307 | + | |
| 308 | + if (isset($options['ParecerDescritivoAbstractDataMapper'])) { | |
| 309 | + $this->setParecerDescritivoAbstractDataMapper($options['ParecerDescritivoAbstractDataMapper']); | |
| 310 | + unset($options['ParecerDescritivoAbstractDataMapper']); | |
| 311 | + } | |
| 312 | + | |
| 245 | 313 | $defaultOptions = array_keys($this->getOptions()); |
| 246 | 314 | $passedOptions = array_keys($options); |
| 247 | 315 | |
| ... | ... | @@ -465,6 +533,70 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 465 | 533 | } |
| 466 | 534 | |
| 467 | 535 | /** |
| 536 | + * Setter. | |
| 537 | + * @param Avaliacao_Model_ParecerDescritivoAlunoDataMapper $mapper | |
| 538 | + * @return App_Service_Boletim Provê interface fluída | |
| 539 | + */ | |
| 540 | + public function setParecerDescritivoAlunoDataMapper(Avaliacao_Model_ParecerDescritivoAlunoDataMapper $mapper) | |
| 541 | + { | |
| 542 | + $this->_parecerDescritivoAlunoDataMapper = $mapper; | |
| 543 | + return $this; | |
| 544 | + } | |
| 545 | + | |
| 546 | + /** | |
| 547 | + * Getter. | |
| 548 | + * @return Avaliacao_Model_ParecerDescritivoAlunoDataMapper | |
| 549 | + */ | |
| 550 | + public function getParecerDescritivoAlunoDataMapper() | |
| 551 | + { | |
| 552 | + if (is_null($this->_parecerDescritivoAlunoDataMapper)) { | |
| 553 | + require_once 'Avaliacao/Model/ParecerDescritivoAlunoDataMapper.php'; | |
| 554 | + $this->setParecerDescritivoAlunoDataMapper(new Avaliacao_Model_ParecerDescritivoAlunoDataMapper()); | |
| 555 | + } | |
| 556 | + return $this->_parecerDescritivoAlunoDataMapper; | |
| 557 | + } | |
| 558 | + | |
| 559 | + /** | |
| 560 | + * Setter. | |
| 561 | + * @param Avaliacao_Model_ParecerDescritivoAbstractDataMapper $mapper | |
| 562 | + * @return App_Service_Boletim Provê interface fluída | |
| 563 | + */ | |
| 564 | + public function setParecerDescritivoAbstractDataMapper(Avaliacao_Model_ParecerDescritivoAbstractDataMapper $mapper) | |
| 565 | + { | |
| 566 | + $this->_parecerDescritivoAbstractDataMapper = $mapper; | |
| 567 | + return $this; | |
| 568 | + } | |
| 569 | + | |
| 570 | + /** | |
| 571 | + * Getter. | |
| 572 | + * @return Avaliacao_Model_ParecerDescritivoAbstractDataMapper | |
| 573 | + */ | |
| 574 | + public function getParecerDescritivoAbstractDataMapper() | |
| 575 | + { | |
| 576 | + if (is_null($this->_parecerDescritivoAbstractDataMapper)) { | |
| 577 | + $parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 578 | + | |
| 579 | + switch($parecerDescritivo) { | |
| 580 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL: | |
| 581 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL: | |
| 582 | + $filename = 'Avaliacao/Model/ParecerDescritivoGeralDataMapper.php'; | |
| 583 | + $class = 'Avaliacao_Model_ParecerDescritivoGeralDataMapper'; | |
| 584 | + break; | |
| 585 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE: | |
| 586 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE: | |
| 587 | + $filename = 'Avaliacao/Model/ParecerDescritivoComponenteDataMapper.php'; | |
| 588 | + $class = 'Avaliacao_Model_ParecerDescritivoComponenteDataMapper'; | |
| 589 | + break; | |
| 590 | + } | |
| 591 | + | |
| 592 | + require_once $filename; | |
| 593 | + $this->setParecerDescritivoAbstractDataMapper(new $class()); | |
| 594 | + } | |
| 595 | + | |
| 596 | + return $this->_parecerDescritivoAbstractDataMapper; | |
| 597 | + } | |
| 598 | + | |
| 599 | + /** | |
| 468 | 600 | * Retorna as instâncias de Avaliacao_Model_NotaComponente do aluno. |
| 469 | 601 | * @return array |
| 470 | 602 | */ |
| ... | ... | @@ -501,6 +633,25 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 501 | 633 | } |
| 502 | 634 | |
| 503 | 635 | /** |
| 636 | + * Retorna as instâncias de Avaliacao_Model_ParecerDescritivoComponente do | |
| 637 | + * aluno. | |
| 638 | + * @return array | |
| 639 | + */ | |
| 640 | + public function getPareceresComponentes() | |
| 641 | + { | |
| 642 | + return $this->_pareceresComponentes; | |
| 643 | + } | |
| 644 | + | |
| 645 | + /** | |
| 646 | + * Retorna as instâncias de Avaliacao_Model_ParecerDescritivoGeral do aluno. | |
| 647 | + * @return array | |
| 648 | + */ | |
| 649 | + public function getPareceresGerais() | |
| 650 | + { | |
| 651 | + return $this->_pareceresGerais; | |
| 652 | + } | |
| 653 | + | |
| 654 | + /** | |
| 504 | 655 | * Retorna uma instância de Avaliacao_Model_NotaComponente. |
| 505 | 656 | * |
| 506 | 657 | * @param int $id O identificador de ComponenteCurricular_Model_Componente |
| ... | ... | @@ -557,6 +708,49 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 557 | 708 | return NULL; |
| 558 | 709 | } |
| 559 | 710 | |
| 711 | + /** | |
| 712 | + * Retorna uma instância de Avaliacao_Model_ParecerDescritivoAbstract. | |
| 713 | + * | |
| 714 | + * @param int $etapa A etapa para o qual o parecer foi lançado | |
| 715 | + * @param int $id O identificador de ComponenteCurricular_Model_Componente | |
| 716 | + * @return Avaliacao_Model_ParecerAbstract|NULL | |
| 717 | + */ | |
| 718 | + public function getParecerDescritivo($etapa = 1, $id = NULL) | |
| 719 | + { | |
| 720 | + $parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 721 | + | |
| 722 | + $gerais = array( | |
| 723 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL, | |
| 724 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL | |
| 725 | + ); | |
| 726 | + | |
| 727 | + $componentes = array( | |
| 728 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE, | |
| 729 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE | |
| 730 | + ); | |
| 731 | + | |
| 732 | + if (in_array($parecerDescritivo, $gerais)) { | |
| 733 | + $pareceres = $this->getPareceresGerais(); | |
| 734 | + } | |
| 735 | + elseif (in_array($parecerDescritivo, $componentes)) { | |
| 736 | + $pareceres = $this->getPareceresComponentes(); | |
| 737 | + | |
| 738 | + if (!isset($pareceres[$id])) { | |
| 739 | + return NULL; | |
| 740 | + } | |
| 741 | + | |
| 742 | + $pareceres = $pareceres[$id]; | |
| 743 | + } | |
| 744 | + | |
| 745 | + foreach ($pareceres as $parecer) { | |
| 746 | + if ($parecer->etapa == $etapa) { | |
| 747 | + return $parecer; | |
| 748 | + } | |
| 749 | + } | |
| 750 | + | |
| 751 | + return NULL; | |
| 752 | + } | |
| 753 | + | |
| 560 | 754 | |
| 561 | 755 | /** |
| 562 | 756 | * Setter. |
| ... | ... | @@ -576,6 +770,7 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 576 | 770 | |
| 577 | 771 | // Valores scalar de referência |
| 578 | 772 | $matricula = App_Model_IedFinder::getMatricula($codMatricula); |
| 773 | + | |
| 579 | 774 | $etapas = App_Model_IedFinder::getQuantidadeDeEtapasMatricula($codMatricula); |
| 580 | 775 | $this->setOption('matriculaData', $matricula); |
| 581 | 776 | $this->setOption('aprovado', $matricula['aprovado']); |
| ... | ... | @@ -688,6 +883,55 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 688 | 883 | } |
| 689 | 884 | |
| 690 | 885 | /** |
| 886 | + * Carrega os pareceres do aluno, sejam gerais ou por componentes. | |
| 887 | + * @return App_Service_Boletim Provê interface fluída | |
| 888 | + */ | |
| 889 | + protected function _loadParecerDescritivo() | |
| 890 | + { | |
| 891 | + if (!$this->hasParecerDescritivoAluno()) { | |
| 892 | + $this->_createParecerDescritivoAluno(); | |
| 893 | + } | |
| 894 | + | |
| 895 | + $parecerDescritivoAluno = $this->_getParecerDescritivoAluno(); | |
| 896 | + | |
| 897 | + $pareceres = $this->getParecerDescritivoAbstractDataMapper()->findAll( | |
| 898 | + array(), array('parecerDescritivoAluno' => $parecerDescritivoAluno->id), array('etapa' => 'ASC') | |
| 899 | + ); | |
| 900 | + | |
| 901 | + $gerais = array( | |
| 902 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL, | |
| 903 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL | |
| 904 | + ); | |
| 905 | + | |
| 906 | + $componentes = array( | |
| 907 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE, | |
| 908 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE | |
| 909 | + ); | |
| 910 | + | |
| 911 | + $parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 912 | + if (in_array($parecerDescritivo, $gerais)) { | |
| 913 | + $pareceresGerais = array(); | |
| 914 | + | |
| 915 | + foreach ($pareceres as $parecer) { | |
| 916 | + $pareceresGerais[$parecer->etapa] = $parecer; | |
| 917 | + } | |
| 918 | + | |
| 919 | + $this->_pareceresGerais = $pareceresGerais; | |
| 920 | + } | |
| 921 | + elseif (in_array($parecerDescritivo, $componentes)) { | |
| 922 | + $pareceresComponentes = array(); | |
| 923 | + | |
| 924 | + foreach ($pareceres as $parecer) { | |
| 925 | + $pareceresComponentes[$parecer->get('componenteCurricular')][] = $parecer; | |
| 926 | + } | |
| 927 | + | |
| 928 | + $this->_pareceresComponentes = $pareceresComponentes; | |
| 929 | + } | |
| 930 | + | |
| 931 | + return $this; | |
| 932 | + } | |
| 933 | + | |
| 934 | + /** | |
| 691 | 935 | * Setter. |
| 692 | 936 | * @param RegraAvaliacao_Model_Regra $regra |
| 693 | 937 | * @return App_Service_Boletim Provê interface fluída |
| ... | ... | @@ -811,7 +1055,6 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 811 | 1055 | $situacao->recuperacao = TRUE; |
| 812 | 1056 | break; |
| 813 | 1057 | case App_Model_MatriculaSituacao::REPROVADO: |
| 814 | - $situacao->recuperacao = TRUE; | |
| 815 | 1058 | $situacao->aprovado = FALSE; |
| 816 | 1059 | break; |
| 817 | 1060 | } |
| ... | ... | @@ -909,7 +1152,8 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 909 | 1152 | $this->hasRecuperacao()) { |
| 910 | 1153 | $situacao->componentesCurriculares[$id]->situacao = App_Model_MatriculaSituacao::EM_EXAME; |
| 911 | 1154 | } |
| 912 | - elseif ($etapa == 'Rc' && $media < $this->getRegra()->media) { | |
| 1155 | + elseif (($etapa == $this->getOption('etapas') || $etapa == 'Rc') && | |
| 1156 | + $media < $this->getRegra()->media) { | |
| 913 | 1157 | $situacao->componentesCurriculares[$id]->situacao = App_Model_MatriculaSituacao::REPROVADO; |
| 914 | 1158 | } |
| 915 | 1159 | elseif ($etapa == 'Rc' && $media >= $this->getRegra()->media && $this->hasRecuperacao()) { |
| ... | ... | @@ -1007,6 +1251,9 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1007 | 1251 | // Faltas |
| 1008 | 1252 | $faltasComponentes = array(); |
| 1009 | 1253 | |
| 1254 | + // Etapa padrão | |
| 1255 | + $etapa = 0; | |
| 1256 | + | |
| 1010 | 1257 | // Faltas lançadas (persistidas) |
| 1011 | 1258 | $this->_loadFalta(); |
| 1012 | 1259 | |
| ... | ... | @@ -1026,6 +1273,7 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1026 | 1273 | elseif ($presenca->tipoFalta == RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE) { |
| 1027 | 1274 | $faltas = $this->_faltasComponentes; |
| 1028 | 1275 | $total = 0; |
| 1276 | + $etapasComponentes = array(); | |
| 1029 | 1277 | $faltasComponentes = array(); |
| 1030 | 1278 | |
| 1031 | 1279 | foreach ($faltas as $key => $falta) { |
| ... | ... | @@ -1033,11 +1281,14 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1033 | 1281 | $componenteTotal = array_sum(CoreExt_Entity::entityFilterAttr($falta, |
| 1034 | 1282 | 'id', 'quantidade')); |
| 1035 | 1283 | |
| 1036 | - // Pega o id de ComponenteCurricular_Model_Componente da primeira etapa do array | |
| 1284 | + // Pega o id de ComponenteCurricular_Model_Componente da última etapa do array | |
| 1037 | 1285 | $componenteEtapa = array_pop($falta); |
| 1038 | 1286 | $id = $componenteEtapa->get('componenteCurricular'); |
| 1039 | 1287 | $etapa = $componenteEtapa->etapa; |
| 1040 | 1288 | |
| 1289 | + // Etapas lançadas | |
| 1290 | + $etapasComponentes[$etapa] = $etapa; | |
| 1291 | + | |
| 1041 | 1292 | // Usa stdClass como interface de acesso |
| 1042 | 1293 | $faltasComponentes[$id] = new stdClass(); |
| 1043 | 1294 | $faltasComponentes[$id]->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; |
| ... | ... | @@ -1064,13 +1315,17 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1064 | 1315 | App_Model_MatriculaSituacao::APROVADO : App_Model_MatriculaSituacao::REPROVADO; |
| 1065 | 1316 | } |
| 1066 | 1317 | |
| 1067 | - if ($this->_situacaoPrioritaria($faltasComponentes[$id]->situacao, $situacaoGeral)) { | |
| 1068 | - $situacaoGeral = $faltasComponentes[$id]->situacao; | |
| 1069 | - } | |
| 1070 | - | |
| 1071 | 1318 | // Adiciona a quantidade de falta do componente ao total geral de faltas |
| 1072 | 1319 | $total += $componenteTotal; |
| 1073 | 1320 | } |
| 1321 | + | |
| 1322 | + if (0 == count($faltasComponentes) || | |
| 1323 | + count($faltasComponentes) != count($this->getComponentes())) { | |
| 1324 | + $etapa = 1; | |
| 1325 | + } | |
| 1326 | + else { | |
| 1327 | + $etapa = min($etapasComponentes); | |
| 1328 | + } | |
| 1074 | 1329 | } |
| 1075 | 1330 | |
| 1076 | 1331 | // Total de faltas |
| ... | ... | @@ -1091,7 +1346,7 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1091 | 1346 | |
| 1092 | 1347 | // Situação geral. Última verificação pois somente ao fim é possível saber |
| 1093 | 1348 | // se está em andamento ou se pode estabelecer como aprovado ou reprovado |
| 1094 | - if ($etapa == $this->getOption('etapas') || $etapa == 'Rc') { | |
| 1349 | + if ($etapa == $this->getOption('etapas') || $etapa === 'Rc') { | |
| 1095 | 1350 | $aprovado = ($presenca->porcentagemPresenca >= $this->getRegra()->porcentagemPresenca); |
| 1096 | 1351 | $presenca->situacao = $aprovado ? |
| 1097 | 1352 | App_Model_MatriculaSituacao::APROVADO : |
| ... | ... | @@ -1270,7 +1525,7 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1270 | 1525 | protected function _hasFaltaGeral() |
| 1271 | 1526 | { |
| 1272 | 1527 | $faltasGerais = $this->getFaltasGerais(); |
| 1273 | - if (!isset($faltasGerais)) { | |
| 1528 | + if (0 == count($faltasGerais)) { | |
| 1274 | 1529 | return FALSE; |
| 1275 | 1530 | } |
| 1276 | 1531 | return TRUE; |
| ... | ... | @@ -1334,6 +1589,63 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1334 | 1589 | } |
| 1335 | 1590 | |
| 1336 | 1591 | /** |
| 1592 | + * Verifica se o aluno tem pareceres lançados. | |
| 1593 | + * @return bool | |
| 1594 | + */ | |
| 1595 | + public function hasParecerDescritivoAluno() | |
| 1596 | + { | |
| 1597 | + if (!is_null($this->_getParecerDescritivoAluno())) { | |
| 1598 | + return TRUE; | |
| 1599 | + } | |
| 1600 | + return FALSE; | |
| 1601 | + } | |
| 1602 | + | |
| 1603 | + /** | |
| 1604 | + * Setter. | |
| 1605 | + * @param Avaliacao_Model_ParecerDescritivoAluno $parecerDescritivoAluno | |
| 1606 | + * @return Avaliacao_Service_Boletim Provê interface fluída | |
| 1607 | + */ | |
| 1608 | + protected function _setParecerDescritivoAluno(Avaliacao_Model_ParecerDescritivoAluno $parecerDescritivoAluno) | |
| 1609 | + { | |
| 1610 | + $this->_parecerDescritivoAluno = $parecerDescritivoAluno; | |
| 1611 | + return $this; | |
| 1612 | + } | |
| 1613 | + | |
| 1614 | + /** | |
| 1615 | + * Getter. | |
| 1616 | + * @return Avaliacao_Model_ParecerDescritivoAluno|NULL | |
| 1617 | + */ | |
| 1618 | + protected function _getParecerDescritivoAluno() | |
| 1619 | + { | |
| 1620 | + if (!is_null($this->_parecerDescritivoAluno)) { | |
| 1621 | + return $this->_parecerDescritivoAluno; | |
| 1622 | + } | |
| 1623 | + | |
| 1624 | + $parecerDescritivoAluno = $this->getParecerDescritivoAlunoDataMapper()->findAll( | |
| 1625 | + array(), array('matricula' => $this->getOption('matricula')) | |
| 1626 | + ); | |
| 1627 | + | |
| 1628 | + if (0 == count($parecerDescritivoAluno)) { | |
| 1629 | + return NULL; | |
| 1630 | + } | |
| 1631 | + | |
| 1632 | + $this->_setParecerDescritivoAluno($parecerDescritivoAluno[0]); | |
| 1633 | + return $this->_parecerDescritivoAluno; | |
| 1634 | + } | |
| 1635 | + | |
| 1636 | + /** | |
| 1637 | + * Cria e persiste uma instância de Avaliacao_Model_ParecerDescritivoAluno. | |
| 1638 | + * @return bool | |
| 1639 | + */ | |
| 1640 | + protected function _createParecerDescritivoAluno() | |
| 1641 | + { | |
| 1642 | + $parecerDescritivoAluno = new Avaliacao_Model_ParecerDescritivoAluno(); | |
| 1643 | + $parecerDescritivoAluno->matricula = $this->getOption('matricula'); | |
| 1644 | + $parecerDescritivoAluno->parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 1645 | + return $this->getParecerDescritivoAlunoDataMapper()->save($parecerDescritivoAluno); | |
| 1646 | + } | |
| 1647 | + | |
| 1648 | + /** | |
| 1337 | 1649 | * Adiciona um array de instâncias Avaliacao_Model_NotaComponente. |
| 1338 | 1650 | * |
| 1339 | 1651 | * @param array $notas |
| ... | ... | @@ -1348,6 +1660,79 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1348 | 1660 | } |
| 1349 | 1661 | |
| 1350 | 1662 | /** |
| 1663 | + * Verifica se existe alguma instância de Avaliacao_Model_ParecerDescritivoComponente | |
| 1664 | + * persistida para o aluno. | |
| 1665 | + * | |
| 1666 | + * @param int $id Field identity de ComponenteCurricular_Model_Componente | |
| 1667 | + * @return bool | |
| 1668 | + */ | |
| 1669 | + protected function _hasParecerComponente($id) | |
| 1670 | + { | |
| 1671 | + $pareceresComponentes = $this->getPareceresComponentes(); | |
| 1672 | + if (!isset($pareceresComponentes[$id])) { | |
| 1673 | + return FALSE; | |
| 1674 | + } | |
| 1675 | + return TRUE; | |
| 1676 | + } | |
| 1677 | + | |
| 1678 | + /** | |
| 1679 | + * Verifica se existe alguma instância de Avaliacao_Model_ParecerDescritivoGeral | |
| 1680 | + * persistida para o aluno. | |
| 1681 | + * @return bool | |
| 1682 | + */ | |
| 1683 | + protected function _hasParecerGeral() | |
| 1684 | + { | |
| 1685 | + if (0 == count($this->getPareceresGerais())) { | |
| 1686 | + return FALSE; | |
| 1687 | + } | |
| 1688 | + return TRUE; | |
| 1689 | + } | |
| 1690 | + | |
| 1691 | + /** | |
| 1692 | + * Verifica se existe alguma instância de Avaliacao_Model_ParecerDescritivoAbstract | |
| 1693 | + * persistida em uma determinada etapa e retorna o field identity. | |
| 1694 | + * | |
| 1695 | + * @param Avaliacao_Model_ParecerDescritivoAbstract $instance | |
| 1696 | + * @return int|NULL | |
| 1697 | + */ | |
| 1698 | + protected function _getParecerIdEtapa(Avaliacao_Model_ParecerDescritivoAbstract $instance) | |
| 1699 | + { | |
| 1700 | + $gerais = array( | |
| 1701 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL, | |
| 1702 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL | |
| 1703 | + ); | |
| 1704 | + | |
| 1705 | + $componentes = array( | |
| 1706 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE, | |
| 1707 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE | |
| 1708 | + ); | |
| 1709 | + | |
| 1710 | + $parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 1711 | + | |
| 1712 | + if (in_array($parecerDescritivo, $gerais)) { | |
| 1713 | + if (!$this->_hasParecerGeral()) { | |
| 1714 | + return NULL; | |
| 1715 | + } | |
| 1716 | + | |
| 1717 | + $pareceres = $this->getPareceresGerais(); | |
| 1718 | + } | |
| 1719 | + elseif (in_array($parecerDescritivo, $componentes)) { | |
| 1720 | + if (!$this->_hasParecerComponente($instance->get('componenteCurricular'))) { | |
| 1721 | + return NULL; | |
| 1722 | + } | |
| 1723 | + | |
| 1724 | + $pareceres = $this->getPareceresComponentes(); | |
| 1725 | + $pareceres = $pareceres[$instance->get('componenteCurricular')]; | |
| 1726 | + } | |
| 1727 | + | |
| 1728 | + foreach ($pareceres as $parecer) { | |
| 1729 | + if ($instance->etapa == $parecer->etapa) { | |
| 1730 | + return $parecer->id; | |
| 1731 | + } | |
| 1732 | + } | |
| 1733 | + } | |
| 1734 | + | |
| 1735 | + /** | |
| 1351 | 1736 | * Adiciona notas no boletim. |
| 1352 | 1737 | * @param Avaliacao_Model_NotaComponente $nota |
| 1353 | 1738 | * @return Avaliacao_Service_Boletim Provê interface fluída |
| ... | ... | @@ -1414,19 +1799,65 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1414 | 1799 | } |
| 1415 | 1800 | |
| 1416 | 1801 | /** |
| 1802 | + * Adiciona uma array de instâncias de Avaliacao_Model_ParecerDescritivoAbstract | |
| 1803 | + * no boletim. | |
| 1804 | + * | |
| 1805 | + * @param array $pareceres | |
| 1806 | + * @return Avaliacao_Service_Boletim Provê interface fluída | |
| 1807 | + */ | |
| 1808 | + public function addPareceres(array $pareceres) | |
| 1809 | + { | |
| 1810 | + foreach ($pareceres as $parecer) { | |
| 1811 | + $this->addParecer($parecer); | |
| 1812 | + } | |
| 1813 | + return $this; | |
| 1814 | + } | |
| 1815 | + | |
| 1816 | + /** | |
| 1817 | + * Adiciona uma instância de Avaliacao_Model_ParecerDescritivoAbstract no | |
| 1818 | + * boletim. | |
| 1819 | + * | |
| 1820 | + * @param Avaliacao_Model_ParecerDescritivoAbstract $parecer | |
| 1821 | + * @return Avaliacao_Service_Boletim Provê interface fluída | |
| 1822 | + */ | |
| 1823 | + public function addParecer(Avaliacao_Model_ParecerDescritivoAbstract $parecer) | |
| 1824 | + { | |
| 1825 | + $key = 'p_' . spl_object_hash($parecer); | |
| 1826 | + | |
| 1827 | + $this->_pareceres[$key] = $parecer; | |
| 1828 | + $this->_updateParecerEtapa($parecer); | |
| 1829 | + $this->_addParecerValidators($parecer); | |
| 1830 | + | |
| 1831 | + return $this; | |
| 1832 | + } | |
| 1833 | + | |
| 1834 | + /** | |
| 1835 | + * Getter para as instâncias de Avaliacao_Model_ParecerDescritivoAbstract | |
| 1836 | + * adicionadas no boletim (não persistidas). | |
| 1837 | + * | |
| 1838 | + * @return array | |
| 1839 | + */ | |
| 1840 | + public function getPareceres() | |
| 1841 | + { | |
| 1842 | + return $this->_pareceres; | |
| 1843 | + } | |
| 1844 | + | |
| 1845 | + /** | |
| 1417 | 1846 | * Atualiza as opções de validação de uma instância de |
| 1418 | 1847 | * CoreExt_Validate_Validatable, com os valores permitidos para os atributos |
| 1419 | 1848 | * 'componenteCurricular' e 'etapa'. |
| 1420 | 1849 | * |
| 1421 | 1850 | * @param CoreExt_Validate_Validatable $nota |
| 1422 | 1851 | * @return CoreExt_Validate_Validatable |
| 1852 | + * @todo Substituir variável estática por uma de instância {@see _updateParecerEtapa()} | |
| 1423 | 1853 | */ |
| 1424 | 1854 | protected function _addValidators(CoreExt_Validate_Validatable $validatable) |
| 1425 | 1855 | { |
| 1426 | - static $validators = NULL; | |
| 1856 | + $validators = array(); | |
| 1427 | 1857 | |
| 1428 | 1858 | // Como os componentes serão os mesmos, fazemos cache do validador |
| 1429 | - if (is_null($validators)) { | |
| 1859 | + if (is_null($this->_validators)) { | |
| 1860 | + | |
| 1430 | 1861 | $componentes = $this->getComponentes(); |
| 1431 | 1862 | $componentes = CoreExt_Entity::entityFilterAttr($componentes, 'id', 'id'); |
| 1432 | 1863 | |
| ... | ... | @@ -1442,9 +1873,13 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1442 | 1873 | $validators['etapa'] = new CoreExt_Validate_Choice( |
| 1443 | 1874 | array('choices' => $etapas |
| 1444 | 1875 | )); |
| 1876 | + | |
| 1877 | + $this->_validators = $validators; | |
| 1445 | 1878 | } |
| 1446 | 1879 | |
| 1447 | - if (!($validatable instanceof Avaliacao_Model_FaltaGeral)) { | |
| 1880 | + $validators = $this->_validators; | |
| 1881 | + | |
| 1882 | + if ($this->getRegra()->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE) { | |
| 1448 | 1883 | $validatable->setValidator('componenteCurricular', $validators['componenteCurricular']); |
| 1449 | 1884 | } |
| 1450 | 1885 | $validatable->setValidator('etapa', $validators['etapa']); |
| ... | ... | @@ -1453,6 +1888,71 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1453 | 1888 | } |
| 1454 | 1889 | |
| 1455 | 1890 | /** |
| 1891 | + * Atualiza as opções de validação de uma instância de | |
| 1892 | + * Avaliacao_Model_ParecerDescritivoAbstract, com os valores permitidos | |
| 1893 | + * para os atributos 'componenteCurricular' e 'etapa'. | |
| 1894 | + * | |
| 1895 | + * @param Avaliacao_Model_ParecerDescritivoAbstract $instance | |
| 1896 | + * @return Avaliacao_Model_ParecerDescritivoAbstract | |
| 1897 | + */ | |
| 1898 | + protected function _addParecerValidators(Avaliacao_Model_ParecerDescritivoAbstract $instance) | |
| 1899 | + { | |
| 1900 | + if (is_null($this->_parecerValidators)) { | |
| 1901 | + $validators = array(); | |
| 1902 | + | |
| 1903 | + $anuais = array( | |
| 1904 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL, | |
| 1905 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE | |
| 1906 | + ); | |
| 1907 | + | |
| 1908 | + $etapas = array( | |
| 1909 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL, | |
| 1910 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE | |
| 1911 | + ); | |
| 1912 | + | |
| 1913 | + $parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 1914 | + | |
| 1915 | + if (in_array($parecerDescritivo, $anuais)) { | |
| 1916 | + $validators['etapa'] = new CoreExt_Validate_Choice(array( | |
| 1917 | + 'choices' => array('An') | |
| 1918 | + )); | |
| 1919 | + } | |
| 1920 | + elseif (in_array($parecerDescritivo, $etapas)) { | |
| 1921 | + $etapas = $this->getOption('etapas'); | |
| 1922 | + $etapas = array_merge(range(1, $etapas, 1), array('Rc')); | |
| 1923 | + | |
| 1924 | + $validators['etapa'] = new CoreExt_Validate_Choice(array( | |
| 1925 | + 'choices' => $etapas | |
| 1926 | + )); | |
| 1927 | + } | |
| 1928 | + | |
| 1929 | + if ($instance instanceof Avaliacao_Model_ParecerDescritivoComponente) { | |
| 1930 | + $componentes = $this->getComponentes(); | |
| 1931 | + $componentes = CoreExt_Entity::entityFilterAttr($componentes, 'id', 'id'); | |
| 1932 | + | |
| 1933 | + $validators['componenteCurricular'] = new CoreExt_Validate_Choice(array( | |
| 1934 | + 'choices' => $componentes | |
| 1935 | + )); | |
| 1936 | + } | |
| 1937 | + | |
| 1938 | + // Armazena os validadores na instância | |
| 1939 | + $this->_parecerValidators = $validators; | |
| 1940 | + } | |
| 1941 | + | |
| 1942 | + $validators = $this->_parecerValidators; | |
| 1943 | + | |
| 1944 | + // Etapas | |
| 1945 | + $instance->setValidator('etapa', $validators['etapa']); | |
| 1946 | + | |
| 1947 | + // Componentes curriculares | |
| 1948 | + if ($instance instanceof Avaliacao_Model_ParecerDescritivoComponente) { | |
| 1949 | + $instance->setValidator('componenteCurricular', $validators['componenteCurricular']); | |
| 1950 | + } | |
| 1951 | + | |
| 1952 | + return $instance; | |
| 1953 | + } | |
| 1954 | + | |
| 1955 | + /** | |
| 1456 | 1956 | * Atualiza a etapa de uma instância de Avaliacao_Model_Etapa. |
| 1457 | 1957 | * |
| 1458 | 1958 | * @param Avaliacao_Model_Etapa $nota |
| ... | ... | @@ -1505,17 +2005,91 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1505 | 2005 | } |
| 1506 | 2006 | |
| 1507 | 2007 | /** |
| 2008 | + * Atualiza a etapa de uma instância de Avaliacao_Model_ParecerDescritivoAbstract | |
| 2009 | + * para a última etapa possível. | |
| 2010 | + * | |
| 2011 | + * @param Avaliacao_Model_ParecerDescritivoAbstract $instance | |
| 2012 | + * @return Avaliacao_Model_ParecerDescritivoAbstract | |
| 2013 | + */ | |
| 2014 | + protected function _updateParecerEtapa(Avaliacao_Model_ParecerDescritivoAbstract $instance) | |
| 2015 | + { | |
| 2016 | + if (!is_null($instance->etapa)) { | |
| 2017 | + return $instance; | |
| 2018 | + } | |
| 2019 | + | |
| 2020 | + $proximaEtapa = 1; | |
| 2021 | + | |
| 2022 | + $anuais = array( | |
| 2023 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL, | |
| 2024 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE | |
| 2025 | + ); | |
| 2026 | + | |
| 2027 | + $etapas = array( | |
| 2028 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL, | |
| 2029 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE | |
| 2030 | + ); | |
| 2031 | + | |
| 2032 | + $componentes = array( | |
| 2033 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE, | |
| 2034 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE | |
| 2035 | + ); | |
| 2036 | + | |
| 2037 | + $gerais = array( | |
| 2038 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL, | |
| 2039 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL | |
| 2040 | + ); | |
| 2041 | + | |
| 2042 | + $parecerDescritivo = $this->getRegra()->get('parecerDescritivo'); | |
| 2043 | + if (in_array($parecerDescritivo, $anuais)) { | |
| 2044 | + $instance->etapa = 'An'; | |
| 2045 | + return $instance; | |
| 2046 | + } | |
| 2047 | + elseif (in_array($parecerDescritivo, $etapas)) { | |
| 2048 | + $attrValues = array(); | |
| 2049 | + | |
| 2050 | + if (in_array($parecerDescritivo, $gerais)) { | |
| 2051 | + $attrValues = $this->getPareceresGerais(); | |
| 2052 | + } | |
| 2053 | + elseif (in_array($parecerDescritivo, $componentes)) { | |
| 2054 | + $pareceresComponentes = $this->getPareceresComponentes(); | |
| 2055 | + if (isset($pareceresComponentes[$instance->get('componenteCurricular')])) { | |
| 2056 | + $attrValues = $pareceresComponentes[$instance->get('componenteCurricular')]; | |
| 2057 | + } | |
| 2058 | + } | |
| 2059 | + | |
| 2060 | + if (0 < count($attrValues)) { | |
| 2061 | + $etapas = CoreExt_Entity::entityFilterAttr($attrValues, 'id', 'etapa'); | |
| 2062 | + $proximaEtapa = max($etapas) + 1; | |
| 2063 | + } | |
| 2064 | + } | |
| 2065 | + | |
| 2066 | + if ($proximaEtapa <= $this->getOption('etapas')) { | |
| 2067 | + $instance->etapa = $proximaEtapa; | |
| 2068 | + } | |
| 2069 | + elseif ($this->hasRecuperacao()) { | |
| 2070 | + $instance->etapa = 'Rc'; | |
| 2071 | + } | |
| 2072 | + | |
| 2073 | + return $instance; | |
| 2074 | + } | |
| 2075 | + | |
| 2076 | + /** | |
| 1508 | 2077 | * Arredonda uma nota através da tabela de arredondamento da regra de avaliação. |
| 1509 | 2078 | * @param Avaliacao_Model_NotaComponente|int $nota |
| 1510 | 2079 | * @return mixed |
| 2080 | + * @throws CoreExt_Exception_InvalidArgumentException | |
| 1511 | 2081 | */ |
| 1512 | 2082 | public function arredondaNota($nota) |
| 1513 | 2083 | { |
| 1514 | 2084 | if ($nota instanceof Avaliacao_Model_NotaComponente) { |
| 1515 | 2085 | $nota = $nota->nota; |
| 1516 | 2086 | } |
| 1517 | - elseif (!is_numeric($nota)) { | |
| 1518 | - // @todo Exception? | |
| 2087 | + | |
| 2088 | + if (!is_numeric($nota)) { | |
| 2089 | + require_once 'CoreExt/Exception/InvalidArgumentException.php'; | |
| 2090 | + throw new CoreExt_Exception_InvalidArgumentException(sprintf( | |
| 2091 | + 'O parâmetro $nota ("%s") não é um valor numérico.', $nota | |
| 2092 | + )); | |
| 1519 | 2093 | } |
| 1520 | 2094 | |
| 1521 | 2095 | return $this->getRegra()->tabelaArredondamento->round($nota); |
| ... | ... | @@ -1532,6 +2106,11 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1532 | 2106 | { |
| 1533 | 2107 | $num1 = floatval($num1); |
| 1534 | 2108 | $num2 = floatval($num2); |
| 2109 | + | |
| 2110 | + if ($num1 == 0) { | |
| 2111 | + return 0; | |
| 2112 | + } | |
| 2113 | + | |
| 1535 | 2114 | $perc = $num2 / $num1; |
| 1536 | 2115 | return ($decimal == TRUE ? $perc : ($perc * 100)); |
| 1537 | 2116 | } |
| ... | ... | @@ -1569,6 +2148,7 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1569 | 2148 | try { |
| 1570 | 2149 | $this->saveNotas() |
| 1571 | 2150 | ->saveFaltas() |
| 2151 | + ->savePareceres() | |
| 1572 | 2152 | ->promover(); |
| 1573 | 2153 | } |
| 1574 | 2154 | catch (CoreExt_Service_Exception $e) { |
| ... | ... | @@ -1582,7 +2162,6 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1582 | 2162 | /** |
| 1583 | 2163 | * Insere ou atualiza as notas no boletim do aluno. |
| 1584 | 2164 | * @return Avaliacao_Service_Boletim Provê interface fluída |
| 1585 | - * @todo Criar teste para verificar se _getNotaIdEtapa retorna o esperado | |
| 1586 | 2165 | */ |
| 1587 | 2166 | public function saveNotas() |
| 1588 | 2167 | { |
| ... | ... | @@ -1602,62 +2181,8 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1602 | 2181 | } |
| 1603 | 2182 | |
| 1604 | 2183 | /** |
| 1605 | - * Atualiza a média dos componentes curriculares. | |
| 1606 | - */ | |
| 1607 | - protected function _updateNotaComponenteMedia() | |
| 1608 | - { | |
| 1609 | - require_once 'Avaliacao/Model/NotaComponenteMedia.php'; | |
| 1610 | - $this->_loadNotaComponenteCurricular(FALSE); | |
| 1611 | - | |
| 1612 | - foreach ($this->_notasComponentes as $id => $notasComponentes) { | |
| 1613 | - // Cria um array onde o índice é a etapa | |
| 1614 | - $etapasNotas = CoreExt_Entity::entityFilterAttr($notasComponentes, 'etapa', 'nota'); | |
| 1615 | - $notas = array('Se' => 0, 'Et' => $this->getOption('etapas')); | |
| 1616 | - | |
| 1617 | - // Cria o array formatado para o cálculo da fórmula da média | |
| 1618 | - foreach ($etapasNotas as $etapa => $nota) { | |
| 1619 | - if (is_numeric($etapa)) { | |
| 1620 | - $notas['E' . $etapa] = $nota; | |
| 1621 | - $notas['Se'] += $nota; | |
| 1622 | - continue; | |
| 1623 | - } | |
| 1624 | - $notas[$etapa] = $nota; | |
| 1625 | - } | |
| 1626 | - | |
| 1627 | - // Calcula a média | |
| 1628 | - $media = $this->_calculaMedia($notas); | |
| 1629 | - | |
| 1630 | - // Cria uma nova instância de média, já com a nota arredondada e a etapa | |
| 1631 | - $notaComponenteCurricularMedia = new Avaliacao_Model_NotaComponenteMedia(array( | |
| 1632 | - 'notaAluno' => $this->_getNotaAluno()->id, | |
| 1633 | - 'componenteCurricular' => $id, | |
| 1634 | - 'media' => $media, | |
| 1635 | - 'mediaArredondada' => $this->arredondaNota($media), | |
| 1636 | - 'etapa' => $etapa | |
| 1637 | - )); | |
| 1638 | - | |
| 1639 | - try { | |
| 1640 | - // Se existir, marca como "old" para possibilitar a atualização | |
| 1641 | - $this->getNotaComponenteMediaDataMapper()->find(array( | |
| 1642 | - $notaComponenteCurricularMedia->get('notaAluno'), | |
| 1643 | - $notaComponenteCurricularMedia->get('componenteCurricular'), | |
| 1644 | - )); | |
| 1645 | - | |
| 1646 | - $notaComponenteCurricularMedia->markOld(); | |
| 1647 | - } | |
| 1648 | - catch (Exception $e) { | |
| 1649 | - // Prossegue, sem problemas. | |
| 1650 | - } | |
| 1651 | - | |
| 1652 | - // Salva a média | |
| 1653 | - $this->getNotaComponenteMediaDataMapper()->save($notaComponenteCurricularMedia); | |
| 1654 | - } | |
| 1655 | - } | |
| 1656 | - | |
| 1657 | - /** | |
| 1658 | 2184 | * Insere ou atualiza as faltas no boletim. |
| 1659 | 2185 | * @return Avaliacao_Service_Boletim Provê interface fluída |
| 1660 | - * @todo Criar teste para verificar se _getFaltaIdEtapa retorna o esperado | |
| 1661 | 2186 | */ |
| 1662 | 2187 | public function saveFaltas() |
| 1663 | 2188 | { |
| ... | ... | @@ -1674,6 +2199,24 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1674 | 2199 | } |
| 1675 | 2200 | |
| 1676 | 2201 | /** |
| 2202 | + * Insere ou atualiza os pareceres no boletim. | |
| 2203 | + * @return Avaliacao_Service_Boletim Provê interface fluída | |
| 2204 | + */ | |
| 2205 | + public function savePareceres() | |
| 2206 | + { | |
| 2207 | + $parecerAluno = $this->_getParecerDescritivoAluno(); | |
| 2208 | + $pareceres = $this->getPareceres(); | |
| 2209 | + | |
| 2210 | + foreach ($pareceres as $parecer) { | |
| 2211 | + $parecer->parecerDescritivoAluno = $parecerAluno->id; | |
| 2212 | + $parecer->id = $this->_getParecerIdEtapa($parecer); | |
| 2213 | + $this->getParecerDescritivoAbstractDataMapper()->save($parecer); | |
| 2214 | + } | |
| 2215 | + | |
| 2216 | + return $this; | |
| 2217 | + } | |
| 2218 | + | |
| 2219 | + /** | |
| 1677 | 2220 | * Promove o aluno de etapa escolar caso esteja aprovado de acordo com o |
| 1678 | 2221 | * necessário estabelecido por tipoProgressao de |
| 1679 | 2222 | * RegraAvaliacao_Model_Regra. |
| ... | ... | @@ -1729,6 +2272,59 @@ class Avaliacao_Service_Boletim implements CoreExt_Configurable |
| 1729 | 2272 | } |
| 1730 | 2273 | |
| 1731 | 2274 | /** |
| 2275 | + * Atualiza a média dos componentes curriculares. | |
| 2276 | + */ | |
| 2277 | + protected function _updateNotaComponenteMedia() | |
| 2278 | + { | |
| 2279 | + require_once 'Avaliacao/Model/NotaComponenteMedia.php'; | |
| 2280 | + $this->_loadNotaComponenteCurricular(FALSE); | |
| 2281 | + | |
| 2282 | + foreach ($this->_notasComponentes as $id => $notasComponentes) { | |
| 2283 | + // Cria um array onde o índice é a etapa | |
| 2284 | + $etapasNotas = CoreExt_Entity::entityFilterAttr($notasComponentes, 'etapa', 'nota'); | |
| 2285 | + $notas = array('Se' => 0, 'Et' => $this->getOption('etapas')); | |
| 2286 | + | |
| 2287 | + // Cria o array formatado para o cálculo da fórmula da média | |
| 2288 | + foreach ($etapasNotas as $etapa => $nota) { | |
| 2289 | + if (is_numeric($etapa)) { | |
| 2290 | + $notas['E' . $etapa] = $nota; | |
| 2291 | + $notas['Se'] += $nota; | |
| 2292 | + continue; | |
| 2293 | + } | |
| 2294 | + $notas[$etapa] = $nota; | |
| 2295 | + } | |
| 2296 | + | |
| 2297 | + // Calcula a média | |
| 2298 | + $media = $this->_calculaMedia($notas); | |
| 2299 | + | |
| 2300 | + // Cria uma nova instância de média, já com a nota arredondada e a etapa | |
| 2301 | + $notaComponenteCurricularMedia = new Avaliacao_Model_NotaComponenteMedia(array( | |
| 2302 | + 'notaAluno' => $this->_getNotaAluno()->id, | |
| 2303 | + 'componenteCurricular' => $id, | |
| 2304 | + 'media' => $media, | |
| 2305 | + 'mediaArredondada' => $this->arredondaNota($media), | |
| 2306 | + 'etapa' => $etapa | |
| 2307 | + )); | |
| 2308 | + | |
| 2309 | + try { | |
| 2310 | + // Se existir, marca como "old" para possibilitar a atualização | |
| 2311 | + $this->getNotaComponenteMediaDataMapper()->find(array( | |
| 2312 | + $notaComponenteCurricularMedia->get('notaAluno'), | |
| 2313 | + $notaComponenteCurricularMedia->get('componenteCurricular'), | |
| 2314 | + )); | |
| 2315 | + | |
| 2316 | + $notaComponenteCurricularMedia->markOld(); | |
| 2317 | + } | |
| 2318 | + catch (Exception $e) { | |
| 2319 | + // Prossegue, sem problemas. | |
| 2320 | + } | |
| 2321 | + | |
| 2322 | + // Salva a média | |
| 2323 | + $this->getNotaComponenteMediaDataMapper()->save($notaComponenteCurricularMedia); | |
| 2324 | + } | |
| 2325 | + } | |
| 2326 | + | |
| 2327 | + /** | |
| 1732 | 2328 | * Atualiza os dados da matrícula do aluno. |
| 1733 | 2329 | * |
| 1734 | 2330 | * @param int $matricula | ... | ... |
ieducar/modules/Avaliacao/Views/BoletimController.php
| ... | ... | @@ -81,7 +81,7 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 81 | 81 | |
| 82 | 82 | $this->_service = new Avaliacao_Service_Boletim(array( |
| 83 | 83 | 'matricula' => $this->getRequest()->matricula, |
| 84 | - 'usuario' => $usuario | |
| 84 | + 'usuario' => $usuario | |
| 85 | 85 | )); |
| 86 | 86 | |
| 87 | 87 | $this->_situacao = $this->_service->getSituacaoAluno(); |
| ... | ... | @@ -106,6 +106,30 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | /** |
| 109 | + * Verifica um array de situações de componentes curriculares e retorna TRUE | |
| 110 | + * quando ao menos um dos componentes estiver encerrado (aprovado ou reprovado). | |
| 111 | + * | |
| 112 | + * @param array $componentes | |
| 113 | + * @return bool | |
| 114 | + */ | |
| 115 | + protected function _componenteEncerrado(array $componentes) | |
| 116 | + { | |
| 117 | + foreach ($componentes as $situacao) { | |
| 118 | + switch ($situacao->situacao) { | |
| 119 | + case App_Model_MatriculaSituacao::APROVADO: | |
| 120 | + case App_Model_MatriculaSituacao::APROVADO_APOS_EXAME: | |
| 121 | + case App_Model_MatriculaSituacao::REPROVADO: | |
| 122 | + return TRUE; | |
| 123 | + break; | |
| 124 | + default: | |
| 125 | + break; | |
| 126 | + } | |
| 127 | + } | |
| 128 | + | |
| 129 | + return FALSE; | |
| 130 | + } | |
| 131 | + | |
| 132 | + /** | |
| 109 | 133 | * @see clsCadastro#Gerar() |
| 110 | 134 | */ |
| 111 | 135 | public function Gerar() |
| ... | ... | @@ -148,13 +172,13 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 148 | 172 | $this->addDetalhe(array('Aluno', $nome)); |
| 149 | 173 | $this->addDetalhe(array('Escola', $escola)); |
| 150 | 174 | $this->addDetalhe(array('Curso', $curso)); |
| 151 | - $this->addDetalhe(array('Série', $serie)); | |
| 152 | - $this->addDetalhe(array('Turma', $turma)); | |
| 175 | + $this->addDetalhe(array('Série/Turma', $serie . ' / ' . $turma)); | |
| 153 | 176 | $this->addDetalhe(array('Situação', $situacao)); |
| 154 | 177 | |
| 155 | 178 | // Dados da regra de avaliação |
| 156 | 179 | $this->addDetalhe(array('Regra avaliação', $this->_service->getRegra())); |
| 157 | 180 | $this->addDetalhe(array('Apuração de falta', $this->_service->getRegra()->tipoPresenca)); |
| 181 | + $this->addDetalhe(array('Parecer descritivo', $this->_service->getRegra()->parecerDescritivo)); | |
| 158 | 182 | $this->addDetalhe(array('Progressão', $this->_service->getRegra()->tipoProgressao)); |
| 159 | 183 | $this->addDetalhe(array('Média', $this->_service->getRegra()->media)); |
| 160 | 184 | |
| ... | ... | @@ -199,11 +223,32 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 199 | 223 | $labels[] = $data; |
| 200 | 224 | } |
| 201 | 225 | |
| 202 | - $colspan = $porComponente && $sit->recuperacao ? 4 : 3; | |
| 226 | + // Flag para auxiliar na composição da tabela em casos onde o parecer | |
| 227 | + // descritivo é lançado anualmente e por componente | |
| 228 | + $parecerComponenteAnual = FALSE; | |
| 229 | + $colspan = 0; | |
| 230 | + | |
| 231 | + if ($this->_service->getRegra()->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE) { | |
| 232 | + if (TRUE == $this->_componenteEncerrado($sit->nota->componentesCurriculares)) { | |
| 233 | + $parecerComponenteAnual = TRUE; | |
| 234 | + $colspan++; | |
| 235 | + } | |
| 236 | + } | |
| 237 | + | |
| 238 | + // Colspan para tabela com labels e sublabels | |
| 239 | + $colspan += $porComponente && $sit->recuperacao ? 4 : 3; | |
| 203 | 240 | $labels[] = array('data' => $porComponente ? '' : 'Média final', 'attributes' => $attributes, 'colspan' => $porComponente ? $colspan : 1); |
| 204 | 241 | |
| 205 | 242 | // Inclui coluna para % de presença geral |
| 206 | 243 | if (!$porComponente) { |
| 244 | + if ($sit->recuperacao) { | |
| 245 | + $labels[] = array('data' => 'Exame', 'attributes' => $attributes); | |
| 246 | + } | |
| 247 | + | |
| 248 | + if ($parecerComponenteAnual) { | |
| 249 | + $labels[] = array('data' => 'Parecer', 'attributes' => $attributes); | |
| 250 | + } | |
| 251 | + | |
| 207 | 252 | $labels[] = array('data' => 'Presença', 'attributes' => $attributes); |
| 208 | 253 | $labels[] = array('data' => 'Situação', 'attributes' => $attributes); |
| 209 | 254 | } |
| ... | ... | @@ -226,6 +271,10 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 226 | 271 | } |
| 227 | 272 | |
| 228 | 273 | if ($porComponente) { |
| 274 | + if ($parecerComponenteAnual) { | |
| 275 | + $subLabels[] = array('data' => 'Parecer', 'attributes' => $attributes); | |
| 276 | + } | |
| 277 | + | |
| 229 | 278 | $subLabels[] = array('data' => 'Presença', 'attributes' => $attributes); |
| 230 | 279 | $subLabels[] = array('data' => 'Situação', 'attributes' => $attributes); |
| 231 | 280 | } |
| ... | ... | @@ -268,6 +317,13 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 268 | 317 | $medias = $mediasComponentes[$id]; |
| 269 | 318 | $faltas = $faltasComponentes[$id]; |
| 270 | 319 | $faltaStats = $faltasStats->componentesCurriculares[$id]; |
| 320 | + $parecer = NULL; | |
| 321 | + | |
| 322 | + // Caso os pareceres sejam por componente e anuais, recupera a instância | |
| 323 | + if ($parecerComponenteAnual) { | |
| 324 | + $parecer = $this->_service->getPareceresComponentes(); | |
| 325 | + $parecer = $parecer[$id]; | |
| 326 | + } | |
| 271 | 327 | |
| 272 | 328 | if ($porComponente == TRUE) { |
| 273 | 329 | $new = $url->l('Lançar nota', 'nota', |
| ... | ... | @@ -324,6 +380,7 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 324 | 380 | } |
| 325 | 381 | } |
| 326 | 382 | |
| 383 | + // Média no componente curricular | |
| 327 | 384 | $media = $medias[0]->mediaArredondada . ($medias[0]->etapa == 'Rc' ? ' (Rc)' : ''); |
| 328 | 385 | $data[] = array('data' => $media, 'attributes' => $attributes); |
| 329 | 386 | |
| ... | ... | @@ -349,6 +406,36 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 349 | 406 | } |
| 350 | 407 | } |
| 351 | 408 | |
| 409 | + // Adiciona uma coluna extra caso o parecer seja por componente ao final do ano | |
| 410 | + if ($parecerComponenteAnual) { | |
| 411 | + $link = array( | |
| 412 | + 'text' => '', | |
| 413 | + 'path' => 'parecer', | |
| 414 | + 'query' => array('matricula' => $this->getRequest()->matricula) | |
| 415 | + ); | |
| 416 | + | |
| 417 | + if (0 == count($parecer)) { | |
| 418 | + $text = 'Lançar'; | |
| 419 | + } | |
| 420 | + else { | |
| 421 | + $text = 'Editar'; | |
| 422 | + } | |
| 423 | + | |
| 424 | + $link['query']['componenteCurricular'] = $id; | |
| 425 | + | |
| 426 | + // @todo Constante ou CoreExt_Enum | |
| 427 | + $link['query']['etapa'] = 'An'; | |
| 428 | + | |
| 429 | + $link = $url->l($text, $link['path'], array('query' => $link['query'])); | |
| 430 | + | |
| 431 | + if (isset($mediaSituacao->situacao) && $mediaSituacao->situacao != App_Model_MatriculaSituacao::EM_ANDAMENTO) { | |
| 432 | + $data[] = array('data' => $link, 'attributes' => $attributes); | |
| 433 | + } | |
| 434 | + else { | |
| 435 | + $data[] = array('data' => '', 'attributes' => $attributes); | |
| 436 | + } | |
| 437 | + } | |
| 438 | + | |
| 352 | 439 | // Informações extras como porcentagem de presença e situação do aluno |
| 353 | 440 | if ($porComponente) { |
| 354 | 441 | $data[] = array('data' => sprintf('%.2f%%', $faltaStats->porcentagemPresenca), 'attributes' => $attributes); |
| ... | ... | @@ -406,21 +493,85 @@ class BoletimController extends Core_Controller_Page_ViewController |
| 406 | 493 | $data[] = array('data' => '', 'attributes' => $attributes); |
| 407 | 494 | } |
| 408 | 495 | |
| 496 | + if ($parecerComponenteAnual) { | |
| 497 | + $data[] = array('data' => '', 'attributes' => $attributes); | |
| 498 | + } | |
| 499 | + | |
| 409 | 500 | $data[] = array('data' => sprintf('%.2f%%', $faltasStats->porcentagemPresenca), 'attributes' => $attributes); |
| 410 | 501 | $data[] = array('data' => $situacao->getValue($sit->falta->situacao), 'attributes' => $attributes); |
| 411 | 502 | |
| 412 | 503 | $table->addFooterRow($data, $zebra[$class ^ 1]); |
| 413 | 504 | |
| 505 | + // Adiciona linha com links para lançamento de parecer descritivo geral por etapa | |
| 506 | + if ($this->_service->getRegra()->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL) { | |
| 507 | + $newLink = array( | |
| 508 | + 'text' => 'Lançar parecer', | |
| 509 | + 'path' => 'parecer', | |
| 510 | + 'query' => array('matricula' => $matricula['cod_matricula']) | |
| 511 | + ); | |
| 512 | + | |
| 513 | + $data = array(0 => array('data' => 'Pareceres', 'attributes' => array('style' => 'padding: 5px; text-align: left'))); | |
| 514 | + $pareceres = $this->_service->getPareceresGerais(); | |
| 515 | + | |
| 516 | + for ($i = 1, $loop = count($etapas); $i <= $loop; $i++) { | |
| 517 | + if (isset($pareceres[$i])) { | |
| 518 | + $link = $newLink; | |
| 519 | + $link['text'] = 'Editar parecer'; | |
| 520 | + $link['query']['etapa'] = $i; | |
| 521 | + $data[] = array('data' => $url->l($link['text'], $link['path'], array('query' => $link['query'])), 'attributes' => $attributes); | |
| 522 | + } | |
| 523 | + else { | |
| 524 | + if ('' == $newLink) { | |
| 525 | + $link = ''; | |
| 526 | + } | |
| 527 | + else { | |
| 528 | + $link = $url->l($newLink['text'], $newLink['path'], array('query' => $newLink['query'])); | |
| 529 | + } | |
| 530 | + $data[] = array('data' => $link, 'attributes' => $attributes); | |
| 531 | + $newLink = ''; | |
| 532 | + } | |
| 533 | + } | |
| 534 | + | |
| 535 | + if ($sit->recuperacao) { | |
| 536 | + $data[] = array('data' => '', 'attributes' => $attributes); | |
| 537 | + } | |
| 538 | + | |
| 539 | + $data[] = array('data' => '', 'attributes' => $attributes); | |
| 540 | + $data[] = array('data' => '', 'attributes' => $attributes); | |
| 541 | + | |
| 542 | + $table->addFooterRow($data); | |
| 543 | + } | |
| 544 | + | |
| 414 | 545 | // Adiciona tabela na página |
| 415 | 546 | $this->addDetalhe(array('Disciplinas', '<div id="disciplinas">' . $table . '</div>')); |
| 416 | 547 | |
| 548 | + // Adiciona link para lançamento de parecer descritivo anual geral | |
| 549 | + if ( | |
| 550 | + FALSE == $sit->andamento && | |
| 551 | + $this->_service->getRegra()->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL | |
| 552 | + ) { | |
| 553 | + if (0 == count($this->_service->getPareceresGerais())) { | |
| 554 | + $label = 'Lançar'; | |
| 555 | + } | |
| 556 | + else { | |
| 557 | + $label = 'Editar'; | |
| 558 | + } | |
| 559 | + | |
| 560 | + $link = array( | |
| 561 | + 'text' => $label . ' parecer descritivo do aluno', | |
| 562 | + 'path' => 'parecer', | |
| 563 | + 'query' => array('matricula' => $this->getRequest()->matricula) | |
| 564 | + ); | |
| 565 | + $this->addDetalhe(array('Parecer descritivo anual', $url->l($link['text'], $link['path'], array('query' => $link['query'])))); | |
| 566 | + } | |
| 567 | + | |
| 417 | 568 | // Caso o tipo de progressão seja manual, a situação das notas/faltas não |
| 418 | 569 | // esteja mais em "andamento" e a matrícula esteja em andamento, exibe |
| 419 | 570 | // botões de ação |
| 420 | 571 | if ( |
| 421 | 572 | $this->_service->getRegra()->get('tipoProgressao') == |
| 422 | 573 | RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_MANUAL && |
| 423 | - FALSE == $sit->andamento && $matricula['aprovado'] == 3 | |
| 574 | + FALSE == $sit->andamento && $matricula['aprovado'] == App_Model_MatriculaSituacao::EM_ANDAMENTO | |
| 424 | 575 | ) { |
| 425 | 576 | $link = array( |
| 426 | 577 | 'text' => 'sim', | ... | ... |
ieducar/modules/Avaliacao/Views/NotaController.php
| ... | ... | @@ -91,6 +91,11 @@ class NotaController extends Core_Controller_Page_EditController |
| 91 | 91 | protected $_falta = NULL; |
| 92 | 92 | |
| 93 | 93 | /** |
| 94 | + * @var Avaliacao_Model_ParecerDescritivoAbstract | |
| 95 | + */ | |
| 96 | + protected $_parecer = NULL; | |
| 97 | + | |
| 98 | + /** | |
| 94 | 99 | * @see Core_Controller_Page_EditController#_preConstruct() |
| 95 | 100 | */ |
| 96 | 101 | protected function _preConstruct() |
| ... | ... | @@ -107,7 +112,7 @@ class NotaController extends Core_Controller_Page_EditController |
| 107 | 112 | |
| 108 | 113 | $this->_service = new Avaliacao_Service_Boletim(array( |
| 109 | 114 | 'matricula' => $this->getRequest()->matricula, |
| 110 | - 'usuario' => $usuario | |
| 115 | + 'usuario' => $usuario | |
| 111 | 116 | )); |
| 112 | 117 | |
| 113 | 118 | $this->_regra = $this->_service->getRegra(); |
| ... | ... | @@ -134,8 +139,9 @@ class NotaController extends Core_Controller_Page_EditController |
| 134 | 139 | */ |
| 135 | 140 | protected function _initEditar() |
| 136 | 141 | { |
| 137 | - $this->_nota = $this->_service->getNotaComponente($this->_componenteCurricular, $this->_etapa); | |
| 138 | - $this->_falta = $this->_service->getFalta($this->_componenteCurricular, $this->_etapa); | |
| 142 | + $this->_nota = $this->_service->getNotaComponente($this->_componenteCurricular, $this->_etapa); | |
| 143 | + $this->_falta = $this->_service->getFalta($this->_etapa, $this->_componenteCurricular); | |
| 144 | + $this->_parecer = $this->_service->getParecerDescritivo($this->_etapa, $this->_componenteCurricular); | |
| 139 | 145 | return TRUE; |
| 140 | 146 | } |
| 141 | 147 | |
| ... | ... | @@ -177,6 +183,11 @@ class NotaController extends Core_Controller_Page_EditController |
| 177 | 183 | if ($this->_regra->get('tipoPresenca') == RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE) { |
| 178 | 184 | $this->campoLista('falta', 'Falta', range(0, 100, 1), $this->_falta->quantidade); |
| 179 | 185 | } |
| 186 | + | |
| 187 | + // Caso o parecer seja por etapa e por componente | |
| 188 | + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE) { | |
| 189 | + $this->campoMemo('parecer', 'Parecer', $this->_parecer, 40, 10, TRUE); | |
| 190 | + } | |
| 180 | 191 | } |
| 181 | 192 | |
| 182 | 193 | /** |
| ... | ... | @@ -202,6 +213,15 @@ class NotaController extends Core_Controller_Page_EditController |
| 202 | 213 | $this->_service->addFalta($falta); |
| 203 | 214 | } |
| 204 | 215 | |
| 216 | + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE) { | |
| 217 | + $parecer = new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 218 | + 'componenteCurricular' => $this->getRequest()->componenteCurricular, | |
| 219 | + 'parecer' => $this->getRequest()->parecer, | |
| 220 | + 'etapa' => $this->getRequest()->etapa | |
| 221 | + )); | |
| 222 | + $this->_service->addParecer($parecer); | |
| 223 | + } | |
| 224 | + | |
| 205 | 225 | try { |
| 206 | 226 | $this->_service->save(); |
| 207 | 227 | } | ... | ... |
| ... | ... | @@ -0,0 +1,205 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage Modules | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Core/Controller/Page/EditController.php'; | |
| 33 | +require_once 'Avaliacao/Model/ParecerDescritivoComponenteDataMapper.php'; | |
| 34 | +require_once 'Avaliacao/Model/ParecerDescritivoGeralDataMapper.php'; | |
| 35 | +require_once 'Avaliacao/Service/Boletim.php'; | |
| 36 | + | |
| 37 | +/** | |
| 38 | + * ParecerController class. | |
| 39 | + * | |
| 40 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 41 | + * @category i-Educar | |
| 42 | + * @license @@license@@ | |
| 43 | + * @package Avaliacao | |
| 44 | + * @subpackage Modules | |
| 45 | + * @since Classe disponível desde a versão 1.1.0 | |
| 46 | + * @version @@package_version@@ | |
| 47 | + */ | |
| 48 | +class ParecerController extends Core_Controller_Page_EditController | |
| 49 | +{ | |
| 50 | + protected $_dataMapper = 'Avaliacao_Model_ParecerDescritivoGeralDataMapper'; | |
| 51 | + protected $_titulo = 'Avaliação do aluno | Parecer Descritivo'; | |
| 52 | + protected $_processoAp = 642; | |
| 53 | + protected $_nivelAcessoOption = App_Model_NivelAcesso::SOMENTE_ESCOLA; | |
| 54 | + protected $_saveOption = TRUE; | |
| 55 | + protected $_deleteOption = FALSE; | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * @var Avaliacao_Service_Boletim | |
| 59 | + */ | |
| 60 | + protected $_service = NULL; | |
| 61 | + | |
| 62 | + /** | |
| 63 | + * @var RegraAvaliacao_Model_Regra | |
| 64 | + */ | |
| 65 | + protected $_regra = NULL; | |
| 66 | + | |
| 67 | + /** | |
| 68 | + * @var int | |
| 69 | + */ | |
| 70 | + protected $_matricula = NULL; | |
| 71 | + | |
| 72 | + /** | |
| 73 | + * @var int | |
| 74 | + */ | |
| 75 | + protected $_componenteCurricular = NULL; | |
| 76 | + | |
| 77 | + /** | |
| 78 | + * @var string | |
| 79 | + */ | |
| 80 | + protected $_etapa = NULL; | |
| 81 | + | |
| 82 | + /** | |
| 83 | + * @var Avaliacao_Model_ParecerDescritivoAbstract | |
| 84 | + */ | |
| 85 | + protected $_parecer = NULL; | |
| 86 | + | |
| 87 | + /** | |
| 88 | + * @see Core_Controller_Page_EditController#_preConstruct() | |
| 89 | + */ | |
| 90 | + protected function _preConstruct() | |
| 91 | + { | |
| 92 | + // Id do usuário na session | |
| 93 | + $usuario = $this->getSession()->id_pessoa; | |
| 94 | + | |
| 95 | + $this->_options = array( | |
| 96 | + 'new_success' => 'boletim', | |
| 97 | + 'new_success_params' => array('matricula' => $this->getRequest()->matricula), | |
| 98 | + 'edit_success' => 'boletim', | |
| 99 | + 'edit_success_params' => array('matricula' => $this->getRequest()->matricula), | |
| 100 | + ); | |
| 101 | + | |
| 102 | + $this->_service = new Avaliacao_Service_Boletim(array( | |
| 103 | + 'matricula' => $this->getRequest()->matricula, | |
| 104 | + 'usuario' => $usuario | |
| 105 | + )); | |
| 106 | + | |
| 107 | + $this->_regra = $this->_service->getRegra(); | |
| 108 | + } | |
| 109 | + | |
| 110 | + /** | |
| 111 | + * @see Core_Controller_Page_EditController#_initNovo() | |
| 112 | + */ | |
| 113 | + protected function _initNovo() | |
| 114 | + { | |
| 115 | + $this->_etapa = $this->getRequest()->etapa; | |
| 116 | + $this->_matricula = $this->getRequest()->matricula; | |
| 117 | + $this->_componenteCurricular = $this->getRequest()->componenteCurricular; | |
| 118 | + | |
| 119 | + if (isset($this->_etapa) && isset($this->_matricula)) { | |
| 120 | + return FALSE; | |
| 121 | + } | |
| 122 | + | |
| 123 | + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE && | |
| 124 | + !isset($this->_componenteCurricular)) { | |
| 125 | + return FALSE; | |
| 126 | + } | |
| 127 | + | |
| 128 | + return TRUE; | |
| 129 | + } | |
| 130 | + | |
| 131 | + /** | |
| 132 | + * @see Core_Controller_Page_EditController#_initEditar() | |
| 133 | + */ | |
| 134 | + protected function _initEditar() | |
| 135 | + { | |
| 136 | + $this->_parecer = $this->_service->getParecerDescritivo($this->_etapa, $this->_componenteCurricular); | |
| 137 | + return TRUE; | |
| 138 | + } | |
| 139 | + | |
| 140 | + /** | |
| 141 | + * @see clsCadastro#Gerar() | |
| 142 | + */ | |
| 143 | + public function Gerar() | |
| 144 | + { | |
| 145 | + $this->campoOculto('matricula', $this->_matricula); | |
| 146 | + $this->campoOculto('etapa', $this->_etapa); | |
| 147 | + $this->campoOculto('componenteCurricular', $this->_componenteCurricular); | |
| 148 | + | |
| 149 | + $matricula = $this->_service->getOption('matriculaData'); | |
| 150 | + | |
| 151 | + $this->campoRotulo('1nome', 'Nome', $matricula['nome']); | |
| 152 | + $this->campoRotulo('2curso', 'Curso', $matricula['curso_nome']); | |
| 153 | + $this->campoRotulo('3serie', 'Série', $matricula['serie_nome']); | |
| 154 | + | |
| 155 | + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL) { | |
| 156 | + $this->campoRotulo('4etapa', 'Etapa', $this->_etapa == 'Rc' ? 'Recuperação' : $this->_etapa); | |
| 157 | + } | |
| 158 | + else { | |
| 159 | + $this->campoRotulo('4etapa', 'Etapa', 'Anual'); | |
| 160 | + } | |
| 161 | + | |
| 162 | + if ($this->_componenteCurricular) { | |
| 163 | + $componentes = $this->_service->getComponentes(); | |
| 164 | + $this->campoRotulo('5componente_curricular', 'Componente curricular', $componentes[$this->_componenteCurricular]); | |
| 165 | + } | |
| 166 | + | |
| 167 | + $this->campoMemo('parecer', 'Parecer', $this->_parecer, 40, 10, TRUE); | |
| 168 | + } | |
| 169 | + | |
| 170 | + /** | |
| 171 | + * @see Core_Controller_Page_EditController#_save() | |
| 172 | + */ | |
| 173 | + protected function _save() | |
| 174 | + { | |
| 175 | + // Instancia o objeto correto e passa para o service | |
| 176 | + if ($this->_regra->get('parecerDescritivo') == RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE) { | |
| 177 | + $parecer = new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 178 | + 'componenteCurricular' => $this->getRequest()->componenteCurricular, | |
| 179 | + 'parecer' => $this->getRequest()->parecer, | |
| 180 | + 'etapa' => $this->getRequest()->etapa | |
| 181 | + )); | |
| 182 | + } | |
| 183 | + else { | |
| 184 | + $parecer = new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 185 | + 'parecer' => $this->getRequest()->parecer, | |
| 186 | + 'etapa' => $this->getRequest()->etapa | |
| 187 | + )); | |
| 188 | + } | |
| 189 | + | |
| 190 | + $this->_service->addParecer($parecer); | |
| 191 | + | |
| 192 | + try { | |
| 193 | + $this->_service->save(); | |
| 194 | + } | |
| 195 | + catch (CoreExt_Service_Exception $e) { | |
| 196 | + // Ok. Não pode promover por se tratar de progressão manual ou por estar em andamento | |
| 197 | + } | |
| 198 | + catch (Exception $e) { | |
| 199 | + $this->mensagem = 'Erro no preenchimento do formulário. '; | |
| 200 | + return FALSE; | |
| 201 | + } | |
| 202 | + | |
| 203 | + return TRUE; | |
| 204 | + } | |
| 205 | +} | |
| 0 | 206 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Boletim/Common.php
| ... | ... | @@ -1,387 +0,0 @@ |
| 1 | -<?php | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * i-Educar - Sistema de gestão escolar | |
| 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 | - * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | - * @category i-Educar | |
| 25 | - * @license @@license@@ | |
| 26 | - * @package Avaliacao | |
| 27 | - * @subpackage UnitTests | |
| 28 | - * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | - * @version $Id$ | |
| 30 | - */ | |
| 31 | - | |
| 32 | -// Dependências do próprio módulo | |
| 33 | -require_once 'Avaliacao/Service/Boletim.php'; | |
| 34 | -require_once 'Avaliacao/Model/NotaAlunoDataMapper.php'; | |
| 35 | -require_once 'Avaliacao/Model/NotaComponenteDataMapper.php'; | |
| 36 | -require_once 'Avaliacao/Model/NotaComponenteMediaDataMapper.php'; | |
| 37 | -require_once 'Avaliacao/Model/FaltaAlunoDataMapper.php'; | |
| 38 | -require_once 'Avaliacao/Model/FaltaComponenteDataMapper.php'; | |
| 39 | - | |
| 40 | -// Dependência de outros módulos | |
| 41 | -require_once 'AreaConhecimento/Model/AreaDataMapper.php'; | |
| 42 | -require_once 'ComponenteCurricular/Model/ComponenteDataMapper.php'; | |
| 43 | -require_once 'ComponenteCurricular/Model/AnoEscolarDataMapper.php'; | |
| 44 | -require_once 'FormulaMedia/Model/FormulaDataMapper.php'; | |
| 45 | -require_once 'TabelaArredondamento/Model/TabelaDataMapper.php'; | |
| 46 | -require_once 'TabelaArredondamento/Model/TabelaValorDataMapper.php'; | |
| 47 | -require_once 'RegraAvaliacao/Model/RegraDataMapper.php'; | |
| 48 | - | |
| 49 | -// Dependência de classes do namespace Ied_Pmieducar | |
| 50 | -require_once 'include/pmieducar/clsPmieducarSerie.inc.php'; | |
| 51 | -require_once 'include/pmieducar/clsPmieducarMatricula.inc.php'; | |
| 52 | - | |
| 53 | -/** | |
| 54 | - * BoletimTest class. | |
| 55 | - * | |
| 56 | - * Testa a API do service Avaliacao_Service_Boletim. Cria uma interface para | |
| 57 | - * a configuração de uma instância de RegraAvaliacao_Model_Regra, com o qual | |
| 58 | - * o service é bastante dependente. | |
| 59 | - * | |
| 60 | - * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 61 | - * @category i-Educar | |
| 62 | - * @license @@license@@ | |
| 63 | - * @package Avaliacao | |
| 64 | - * @subpackage UnitTests | |
| 65 | - * @since Classe disponível desde a versão 1.1.0 | |
| 66 | - * @todo Todos os getters de DataMapper precisam de um teste para | |
| 67 | - * verificar se de fato retornam uma instância padrão | |
| 68 | - * @version @@package_version@@ | |
| 69 | - */ | |
| 70 | -abstract class Boletim_Common extends UnitBaseTest | |
| 71 | -{ | |
| 72 | - /** | |
| 73 | - * @var Avaliacao_Service_Boletim | |
| 74 | - */ | |
| 75 | - protected $_service = NULL; | |
| 76 | - | |
| 77 | - /** | |
| 78 | - * @var Avaliacao_Model_NotaAluno | |
| 79 | - */ | |
| 80 | - protected $_notaAlunoExpected = NULL; | |
| 81 | - | |
| 82 | - /** | |
| 83 | - * @var Avaliacao_Model_FaltaAluno | |
| 84 | - */ | |
| 85 | - protected $_faltaAlunoExpected = NULL; | |
| 86 | - | |
| 87 | - /** | |
| 88 | - * @var ComponenteCurricular_Model_ComponenteDataMapper | |
| 89 | - */ | |
| 90 | - protected $_componenteDataMapperMock = NULL; | |
| 91 | - | |
| 92 | - /** | |
| 93 | - * Configura todos os mocks de depenência de Avaliacao_Service_Boletim | |
| 94 | - */ | |
| 95 | - protected function setUp() | |
| 96 | - { | |
| 97 | - $this->_setUpLegacyMock(); | |
| 98 | - | |
| 99 | - // Instancia a classe Service | |
| 100 | - $this->_service = new Avaliacao_Service_Boletim(array( | |
| 101 | - 'matricula' => 1, | |
| 102 | - 'usuario' => 1, | |
| 103 | - 'RegraDataMapper' => $this->_setUpRegraAvaliacao(), | |
| 104 | - 'ComponenteDataMapper' => $this->_componenteDataMapperMock, | |
| 105 | - 'NotaAlunoDataMapper' => $this->_setUpNotaAlunoDataMapper(), | |
| 106 | - 'NotaComponenteDataMapper' => $this->_setUpNotaComponenteDataMapper(), | |
| 107 | - 'NotaComponenteMediaDataMapper' => $this->_setUpNotaComponenteMediaDataMapper(), | |
| 108 | - 'FaltaAlunoDataMapper' => $this->_setUpFaltaAlunoDataMapperMock(), | |
| 109 | - 'FaltaAbstractDataMapper' => $this->_setUpFaltaAbstractDataMapperMock(), | |
| 110 | - )); | |
| 111 | - } | |
| 112 | - | |
| 113 | - /** | |
| 114 | - * Configura um mock de RegraAvaliacao_Model_Regra. | |
| 115 | - * @return RegraAvaliacao_Model_Regra | |
| 116 | - */ | |
| 117 | - protected abstract function _setUpRegraAvaliacao(); | |
| 118 | - | |
| 119 | - /** | |
| 120 | - * Configura um mock de Avaliacao_Model_NotaAlunoDataMapper. | |
| 121 | - * | |
| 122 | - * @return Avaliacao_Model_NotaAlunoDataMapper | |
| 123 | - */ | |
| 124 | - protected abstract function _setUpNotaAlunoDataMapper(); | |
| 125 | - | |
| 126 | - /** | |
| 127 | - * Configura uma instância de Avaliacao_Model_NotaAluno e guarda no atributo | |
| 128 | - * $_notaAlunoExpected. | |
| 129 | - */ | |
| 130 | - protected abstract function _setUpNotaAluno(); | |
| 131 | - | |
| 132 | - /** | |
| 133 | - * Configura um mock de Avaliacao_Model_NotaComponenteDataMapper. | |
| 134 | - * @return Avaliacao_Model_NotaComponenteDataMapper | |
| 135 | - */ | |
| 136 | - protected abstract function _setUpNotaComponenteDataMapper(); | |
| 137 | - | |
| 138 | - /** | |
| 139 | - * Configura um mock de Avaliacao_Model_NotaMediaComponenteDataMapper. | |
| 140 | - * @return Avaliacao_Model_NotaComponenteMediaDataMapper | |
| 141 | - */ | |
| 142 | - protected abstract function _setUpNotaComponenteMediaDataMapper(); | |
| 143 | - | |
| 144 | - /** | |
| 145 | - * Configura um mock de Avaliacao_Model_FaltaAlunoDataMapper e guarda uma | |
| 146 | - * instância (a que for salva pelo mock) no atributo $_faltaAlunoExpected. | |
| 147 | - * | |
| 148 | - * @return Avaliacao_Model_FaltaAlunoDataMapper | |
| 149 | - */ | |
| 150 | - protected abstract function _setUpFaltaAlunoDataMapperMock(); | |
| 151 | - | |
| 152 | - protected abstract function _setUpFaltaAluno(); | |
| 153 | - | |
| 154 | - /** | |
| 155 | - * Configura um mock de Avaliacao_Model_FataAbstractDataMapper (Componente | |
| 156 | - * ou Geral). | |
| 157 | - * | |
| 158 | - * @return unknown_type | |
| 159 | - */ | |
| 160 | - protected abstract function _setUpFaltaAbstractDataMapperMock(); | |
| 161 | - | |
| 162 | - /** | |
| 163 | - * Configura mocks para as classes legadas (Ied_*). | |
| 164 | - */ | |
| 165 | - protected function _setUpLegacyMock() | |
| 166 | - { | |
| 167 | - $this->_configuraDadosMatricula() | |
| 168 | - ->_configuraDadosDisciplina() | |
| 169 | - ->_configuraDadosEtapasCursadas(); | |
| 170 | - } | |
| 171 | - | |
| 172 | - protected function _configuraDadosMatricula() | |
| 173 | - { | |
| 174 | - // Retorna para matrícula | |
| 175 | - $returnMatricula = array( | |
| 176 | - 'cod_matricula' => 1, | |
| 177 | - 'ref_ref_cod_escola' => 1, | |
| 178 | - 'ref_ref_cod_serie' => 1, | |
| 179 | - 'ref_cod_curso' => 1, | |
| 180 | - 'aprovado' => 1, | |
| 181 | - 'curso_carga_horaria' => (800 * 9), | |
| 182 | - 'curso_hora_falta' => (50 /60), | |
| 183 | - 'serie_carga_horaria' => 800 | |
| 184 | - ); | |
| 185 | - | |
| 186 | - // Mock para clsPmieducarMatricula | |
| 187 | - $matriculaMock = $this->getCleanMock('clsPmieducarMatricula'); | |
| 188 | - $matriculaMock->expects($this->any()) | |
| 189 | - ->method('detalhe') | |
| 190 | - ->will($this->returnValue($returnMatricula)); | |
| 191 | - | |
| 192 | - // Registra a instância no repositório de classes de CoreExt_Entity | |
| 193 | - CoreExt_Entity::addClassToStorage('clsPmieducarMatricula', | |
| 194 | - $matriculaMock, NULL, TRUE | |
| 195 | - ); | |
| 196 | - | |
| 197 | - // Retorno para clsPmieducarSerie | |
| 198 | - $returnSerie = array( | |
| 199 | - 'cod_serie' => 1, | |
| 200 | - 'regra_avaliacao_id' => 1, | |
| 201 | - 'carga_horaria' => 800 | |
| 202 | - ); | |
| 203 | - | |
| 204 | - // Mock para clsPmieducarMatricula | |
| 205 | - $serieMock = $this->getCleanMock('clsPmieducarSerie'); | |
| 206 | - $serieMock->expects($this->any()) | |
| 207 | - ->method('detalhe') | |
| 208 | - ->will($this->returnValue($returnSerie)); | |
| 209 | - | |
| 210 | - // Registra a instância no repositório de classes de CoreExt_Entity | |
| 211 | - CoreExt_Entity::addClassToStorage('clsPmieducarSerie', | |
| 212 | - $serieMock, NULL, TRUE | |
| 213 | - ); | |
| 214 | - | |
| 215 | - | |
| 216 | - // Retorno para clsPmieducarCurso | |
| 217 | - $returnCurso = array( | |
| 218 | - 'cod_curso' => 1, | |
| 219 | - 'carga_horaria' => (800 * 9), | |
| 220 | - 'hora_falta' => (50 / 60), | |
| 221 | - 'padrao_ano_escolar' => 1 | |
| 222 | - ); | |
| 223 | - | |
| 224 | - // Mock para clsPmieducarCurso | |
| 225 | - $cursoMock = $this->getCleanMock('clsPmieducarCurso'); | |
| 226 | - $cursoMock->expects($this->any()) | |
| 227 | - ->method('detalhe') | |
| 228 | - ->will($this->returnValue($returnCurso)); | |
| 229 | - | |
| 230 | - // Registra a instância no repositório de classes de CoreExt_Entity | |
| 231 | - CoreExt_Entity::addClassToStorage('clsPmieducarCurso', | |
| 232 | - $cursoMock, NULL, TRUE | |
| 233 | - ); | |
| 234 | - | |
| 235 | - return $this; | |
| 236 | - } | |
| 237 | - | |
| 238 | - protected function _configuraDadosDisciplina() | |
| 239 | - { | |
| 240 | - $componentes = array( | |
| 241 | - new ComponenteCurricular_Model_Componente( | |
| 242 | - array('id' => 1, 'nome' => 'Matemática', 'cargaHoraria' => 100) | |
| 243 | - ), | |
| 244 | - new ComponenteCurricular_Model_Componente( | |
| 245 | - array('id' => 2, 'nome' => 'Português', 'cargaHoraria' => 100) | |
| 246 | - ), | |
| 247 | - new ComponenteCurricular_Model_Componente( | |
| 248 | - array('id' => 3, 'nome' => 'Ciências', 'cargaHoraria' => 60) | |
| 249 | - ), | |
| 250 | - new ComponenteCurricular_Model_Componente( | |
| 251 | - array('id' => 4, 'nome' => 'Física', 'cargaHoraria' => 60) | |
| 252 | - ) | |
| 253 | - ); | |
| 254 | - | |
| 255 | - $expected = array( | |
| 256 | - $componentes[0], | |
| 257 | - $componentes[2] | |
| 258 | - ); | |
| 259 | - | |
| 260 | - // Retorna para clsPmieducarEscolaSerieDisciplina | |
| 261 | - $returnEscolaSerieDisciplina = array( | |
| 262 | - array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 1, 'carga_horaria' => 100), | |
| 263 | - array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 2, 'carga_horaria' => 100), | |
| 264 | - array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 3, 'carga_horaria' => 70), | |
| 265 | - array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 4, 'carga_horaria' => 100), | |
| 266 | - ); | |
| 267 | - | |
| 268 | - // Mock para clsPmieducarEscolaSerieDisciplina | |
| 269 | - $escolaMock = $this->getCleanMock('clsPmieducarEscolaSerieDisciplina'); | |
| 270 | - $escolaMock->expects($this->any()) | |
| 271 | - ->method('lista') | |
| 272 | - ->will($this->returnValue($returnEscolaSerieDisciplina)); | |
| 273 | - | |
| 274 | - // Retorna para clsPmieducarDispensaDisciplina | |
| 275 | - $returnDispensa = array( | |
| 276 | - array('ref_cod_matricula' => 1, 'ref_cod_disciplina' => 2), | |
| 277 | - array('ref_cod_matricula' => 1, 'ref_cod_disciplina' => 4), | |
| 278 | - ); | |
| 279 | - | |
| 280 | - // Mock para clsPmieducarDispensaDisciplina | |
| 281 | - $dispensaMock = $this->getCleanMock('clsPmieducarDispensaDisciplina'); | |
| 282 | - $dispensaMock->expects($this->any()) | |
| 283 | - ->method('lista') | |
| 284 | - ->with(1, 1, 1) | |
| 285 | - ->will($this->returnValue($returnDispensa)); | |
| 286 | - | |
| 287 | - // Mock para ComponenteCurricular_Model_ComponenteDataMapper | |
| 288 | - $mapperMock = $this->getCleanMock('ComponenteCurricular_Model_ComponenteDataMapper'); | |
| 289 | - $mapperMock->expects($this->any()) | |
| 290 | - ->method('findComponenteCurricularAnoEscolar') | |
| 291 | - ->will($this->onConsecutiveCalls($expected[0], $expected[1])); | |
| 292 | - | |
| 293 | - // Guarda na instância, usado em setUp() | |
| 294 | - $this->_componenteDataMapperMock = $mapperMock; | |
| 295 | - | |
| 296 | - // Registra mocks | |
| 297 | - CoreExt_Entity::addClassToStorage('clsPmieducarEscolaSerieDisciplina', | |
| 298 | - $escolaMock, NULL, TRUE); | |
| 299 | - CoreExt_Entity::addClassToStorage('clsPmieducarDispensaDisciplina', | |
| 300 | - $dispensaMock, NULL, TRUE); | |
| 301 | - | |
| 302 | - return $this; | |
| 303 | - } | |
| 304 | - | |
| 305 | - /** | |
| 306 | - * É dependente do mock de clsPmieducarCurso de _configuraDadosMatricula | |
| 307 | - * (padrao_ano_escolar). | |
| 308 | - */ | |
| 309 | - protected function _configuraDadosEtapasCursadas() | |
| 310 | - { | |
| 311 | - $returnEscolaAno = array( | |
| 312 | - array('ref_cod_escola' => 1, 'ano' => 2009, 'andamento' => 1, 'ativo' => 1) | |
| 313 | - ); | |
| 314 | - | |
| 315 | - $returnAnoLetivo = array( | |
| 316 | - array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 1), | |
| 317 | - array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 2), | |
| 318 | - array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 3), | |
| 319 | - array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 4) | |
| 320 | - ); | |
| 321 | - | |
| 322 | - // Mock para escola ano letivo (ano letivo em andamento) | |
| 323 | - $escolaAnoMock = $this->getCleanMock('clsPmieducarEscolaAnoLetivo'); | |
| 324 | - $escolaAnoMock->expects($this->any()) | |
| 325 | - ->method('lista') | |
| 326 | - ->with(1, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, 1) | |
| 327 | - ->will($this->returnValue($returnEscolaAno)); | |
| 328 | - | |
| 329 | - // Mock para o ano letivo (módulos do ano) | |
| 330 | - $anoLetivoMock = $this->getCleanMock('clsPmieducarAnoLetivoModulo'); | |
| 331 | - $anoLetivoMock->expects($this->any()) | |
| 332 | - ->method('lista') | |
| 333 | - ->with(2009, 1) | |
| 334 | - ->will($this->returnValue($returnAnoLetivo)); | |
| 335 | - | |
| 336 | - // Adiciona mocks ao repositório estático | |
| 337 | - CoreExt_Entity::addClassToStorage('clsPmieducarEscolaAnoLetivo', | |
| 338 | - $escolaAnoMock, NULL, TRUE); | |
| 339 | - CoreExt_Entity::addClassToStorage('clsPmieducarAnoLetivoModulo', | |
| 340 | - $anoLetivoMock, NULL, TRUE); | |
| 341 | - | |
| 342 | - return $this; | |
| 343 | - } | |
| 344 | - | |
| 345 | - /** | |
| 346 | - * @todo Refatorar método para uma classe stub, no diretório do módulo | |
| 347 | - * TabelaArredondamento | |
| 348 | - * @todo Está copiado em tests/Unit/App/Model/IedFinderTest.php | |
| 349 | - */ | |
| 350 | - protected function _getTabelaArredondamentoNumerica() | |
| 351 | - { | |
| 352 | - $data = array( | |
| 353 | - 'tabelaArredondamento' => 1, | |
| 354 | - 'nome' => NULL, | |
| 355 | - 'descricao' => NULL, | |
| 356 | - 'valorMinimo' => -1, | |
| 357 | - 'valorMaximo' => 0 | |
| 358 | - ); | |
| 359 | - | |
| 360 | - $tabelaValores = array(); | |
| 361 | - | |
| 362 | - for ($i = 0; $i <= 10; $i++) { | |
| 363 | - $data['nome'] = $i; | |
| 364 | - $data['valorMinimo'] += 1; | |
| 365 | - $data['valorMaximo'] += 1; | |
| 366 | - | |
| 367 | - if ($i == 10) { | |
| 368 | - $data['valorMinimo'] = 9; | |
| 369 | - $data['valorMaximo'] = 10; | |
| 370 | - } | |
| 371 | - | |
| 372 | - $tabelaValores[$i] = new TabelaArredondamento_Model_TabelaValor($data); | |
| 373 | - } | |
| 374 | - | |
| 375 | - $mapperMock = $this->getCleanMock('TabelaArredondamento_Model_TabelaValorDataMapper'); | |
| 376 | - $mapperMock->expects($this->any()) | |
| 377 | - ->method('findAll') | |
| 378 | - ->will($this->returnValue($tabelaValores)); | |
| 379 | - | |
| 380 | - $tabelaDataMapper = new TabelaArredondamento_Model_TabelaDataMapper(); | |
| 381 | - $tabelaDataMapper->setTabelaValorDataMapper($mapperMock); | |
| 382 | - | |
| 383 | - $tabela = new TabelaArredondamento_Model_Tabela(array('nome' => 'Numéricas')); | |
| 384 | - $tabela->setDataMapper($tabelaDataMapper); | |
| 385 | - return $tabela; | |
| 386 | - } | |
| 387 | -} | |
| 388 | 0 | \ No newline at end of file |
ieducar/modules/Avaliacao/_tests/Boletim/NotaNumerica_FaltaComponenteTest.php
| ... | ... | @@ -1,1192 +0,0 @@ |
| 1 | -<?php | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * i-Educar - Sistema de gestão escolar | |
| 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 | - * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | - * @category i-Educar | |
| 25 | - * @license @@license@@ | |
| 26 | - * @package Avaliacao | |
| 27 | - * @subpackage UnitTests | |
| 28 | - * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | - * @version $Id$ | |
| 30 | - */ | |
| 31 | - | |
| 32 | -require_once 'Avaliacao/_tests/Boletim/Common.php'; | |
| 33 | - | |
| 34 | -/** | |
| 35 | - * NotaNumerica_FaltaComponente class. | |
| 36 | - * | |
| 37 | - * Configura mocks para todas as dependências de Avaliacao_Service_Boletim. | |
| 38 | - * | |
| 39 | - * A configuração é baseada nos mocks criados para para App_Model_IedFinder, | |
| 40 | - * onde é retornado os componentes curriculares 1 (matemática) e 3 (ciências), | |
| 41 | - * já que o aluno estaria dispensado dos outros dois componentes. | |
| 42 | - * | |
| 43 | - * - RegraAvaliacao_Model_Regra: nota numérica, progressiva, falta | |
| 44 | - * contabilizada por componente curricular, média 6, tabela de arredondamento, | |
| 45 | - * fórmula de média (aritmética simples) | |
| 46 | - * | |
| 47 | - * - FormulaMedia_Model_Formula: aritmética simples (Se / Et) | |
| 48 | - * | |
| 49 | - * - ComponenteCurricular_Model_ComponenteDataMapper: retorna componentes | |
| 50 | - * em que o aluno estaria cursando, conforme retornado por | |
| 51 | - * App_Model_IedFinder::getComponentesPorMatricula | |
| 52 | - * | |
| 53 | - * - Avaliacao_Model_NotaAlunoDataMapper: retorna uma instância de | |
| 54 | - * Avaliacao_Model_NotaAluno, para testar inicialização do service | |
| 55 | - * | |
| 56 | - * - Avaliacao_Model_NotaComponenteDataMapper: retorna uma instância de | |
| 57 | - * Avaliacao_Model_NotaComponente, para testar inicialização do service | |
| 58 | - * | |
| 59 | - * - Avaliacao_Model_FaltaAlunoDataMapper: retorna uma instância de | |
| 60 | - * Avaliacao_Model_FaltaAluno, para testar inicialização do service | |
| 61 | - * | |
| 62 | - * - Avaliacao_Model_FaltaAbstractDataMapper: retorna uma instância de | |
| 63 | - * Avaliacao_Model_FaltaComponente, para testa inicialização do service | |
| 64 | - * e casos para o qual a regra de avaliação registre faltas por componentes | |
| 65 | - * curriculares | |
| 66 | - * | |
| 67 | - * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 68 | - * @category i-Educar | |
| 69 | - * @license @@license@@ | |
| 70 | - * @package Avaliacao | |
| 71 | - * @subpackage UnitTests | |
| 72 | - * @since Classe disponível desde a versão 1.1.0 | |
| 73 | - * @version @@package_version@@ | |
| 74 | - */ | |
| 75 | -class Boletim_NotaNumerica_FaltaComponenteTest extends Boletim_Common | |
| 76 | -{ | |
| 77 | - /** | |
| 78 | - * @see Boletim_Common#_setUpRegraAvaliacao() | |
| 79 | - */ | |
| 80 | - protected function _setUpRegraAvaliacao() | |
| 81 | - { | |
| 82 | - $formulaMedia = new FormulaMedia_Model_Formula(array( | |
| 83 | - 'id' => 1, | |
| 84 | - 'nome' => 'Média aritmética', | |
| 85 | - 'formulaMedia' => 'Se / Et' | |
| 86 | - )); | |
| 87 | - | |
| 88 | - $formulaRecuperacao = new FormulaMedia_Model_Formula(array( | |
| 89 | - 'id' => 2, | |
| 90 | - 'nome' => 'Média Ponderada', | |
| 91 | - 'formulaMedia' => 'Rc * 0.4 + Se / Et * 0.6' | |
| 92 | - )); | |
| 93 | - | |
| 94 | - // Retorno para mock RegraAvaliacao | |
| 95 | - $expected = new RegraAvaliacao_Model_Regra(array( | |
| 96 | - 'id' => 1, | |
| 97 | - 'nome' => 'Regra geral', | |
| 98 | - 'tipoNota' => RegraAvaliacao_Model_Nota_TipoValor::NUMERICA, | |
| 99 | - 'tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::CONTINUADA, | |
| 100 | - 'tipoPresenca' => RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE, | |
| 101 | - 'media' => 6, | |
| 102 | - 'tabelaArredondamento' => $this->_getTabelaArredondamentoNumerica(), | |
| 103 | - 'formulaMedia' => $formulaMedia, | |
| 104 | - 'formulaRecuperacao' => $formulaRecuperacao, | |
| 105 | - 'porcentagemPresenca' => 75 | |
| 106 | - )); | |
| 107 | - | |
| 108 | - $regraMock = $this->getCleanMock('RegraAvaliacao_Model_RegraDataMapper'); | |
| 109 | - $regraMock->expects($this->once()) | |
| 110 | - ->method('find') | |
| 111 | - ->with(1) | |
| 112 | - ->will($this->returnValue($expected)); | |
| 113 | - | |
| 114 | - return $regraMock; | |
| 115 | - } | |
| 116 | - | |
| 117 | - /** | |
| 118 | - * @see Boletim_Common#_setUpNotaAlunoDataMapper() | |
| 119 | - */ | |
| 120 | - protected function _setUpNotaAlunoDataMapper() | |
| 121 | - { | |
| 122 | - $notaAluno = $this->_setUpNotaAluno(); | |
| 123 | - | |
| 124 | - // Configura expectativas do mock de NotaAluno, que irá retornar vazio | |
| 125 | - // (aluno ainda não possui notas lançadas) | |
| 126 | - $notaAlunoMock = $this->getCleanMock('Avaliacao_Model_NotaAlunoDataMapper'); | |
| 127 | - $notaAlunoMock->expects($this->any()) | |
| 128 | - ->method('findAll') | |
| 129 | - ->with(array(), array('matricula' => 1)) | |
| 130 | - ->will($this->onConsecutiveCalls(array(), array($notaAluno))); | |
| 131 | - | |
| 132 | - $notaAlunoMock->expects($this->any()) | |
| 133 | - ->method('save') | |
| 134 | - ->will($this->returnValue(TRUE)); | |
| 135 | - | |
| 136 | - return $notaAlunoMock; | |
| 137 | - } | |
| 138 | - | |
| 139 | - protected function _setUpNotaAluno() | |
| 140 | - { | |
| 141 | - $notaAluno = new Avaliacao_Model_NotaAluno(array('id' => 1, 'matricula' => 1)); | |
| 142 | - | |
| 143 | - // Guarda na instância | |
| 144 | - $this->_notaAlunoExpected = $notaAluno; | |
| 145 | - | |
| 146 | - return $notaAluno; | |
| 147 | - } | |
| 148 | - | |
| 149 | - /** | |
| 150 | - * @see Boletim_Common#_setUpNotaComponenteDataMapper() | |
| 151 | - */ | |
| 152 | - protected function _setUpNotaComponenteDataMapper() | |
| 153 | - { | |
| 154 | - $notaComponente = array(new Avaliacao_Model_NotaComponente(array( | |
| 155 | - 'id' => 1, | |
| 156 | - 'notaAluno' => 1, | |
| 157 | - 'componenteCurricular' => 1, | |
| 158 | - 'nota' => 7.5, | |
| 159 | - 'notaArredondada' => 7, | |
| 160 | - 'etapa' => 2 | |
| 161 | - ))); | |
| 162 | - | |
| 163 | - $notaComponenteMock = $this->getCleanMock('Avaliacao_Model_NotaComponenteDataMapper'); | |
| 164 | - $notaComponenteMock->expects($this->at(0)) | |
| 165 | - ->method('findAll') | |
| 166 | - ->with(array(), array('notaAluno' => 1)) | |
| 167 | - ->will($this->returnValue($notaComponente)); | |
| 168 | - | |
| 169 | - return $notaComponenteMock; | |
| 170 | - } | |
| 171 | - | |
| 172 | - /** | |
| 173 | - * @see Boletim_Common#_setUpNotaComponenteMediaDataMapper() | |
| 174 | - */ | |
| 175 | - protected function _setUpNotaComponenteMediaDataMapper() | |
| 176 | - { | |
| 177 | - $notaComponenteMedia = array(new Avaliacao_Model_NotaComponenteMedia(array( | |
| 178 | - 'id' => 1, | |
| 179 | - 'notaAluno' => 1, | |
| 180 | - 'componenteCurricular' => 1, | |
| 181 | - 'media' => (7.5 + 6.5) / 4, | |
| 182 | - 'mediaArredondada' => 3.5, | |
| 183 | - 'etapa' => 2 | |
| 184 | - ))); | |
| 185 | - | |
| 186 | - $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 187 | - $mock->expects($this->once()) | |
| 188 | - ->method('findAll') | |
| 189 | - ->with(array(), array('notaAluno' => 1)) | |
| 190 | - ->will($this->returnValue($notaComponenteMedia)); | |
| 191 | - | |
| 192 | - return $mock; | |
| 193 | - } | |
| 194 | - | |
| 195 | - /** | |
| 196 | - * @see Boletim_Common#_setUpFaltaAlunoDataMapperMock() | |
| 197 | - */ | |
| 198 | - protected function _setUpFaltaAlunoDataMapperMock() | |
| 199 | - { | |
| 200 | - $faltaAluno = $this->_setUpFaltaAluno(); | |
| 201 | - | |
| 202 | - $faltaAlunoMock = $this->getCleanMock('Avaliacao_Model_FaltaAlunoDataMapper'); | |
| 203 | - $faltaAlunoMock->expects($this->any()) | |
| 204 | - ->method('findAll') | |
| 205 | - ->with(array(), array('matricula' => 1)) | |
| 206 | - ->will($this->onConsecutiveCalls(array(), array($faltaAluno))); | |
| 207 | - | |
| 208 | - $faltaAlunoMock->expects($this->any()) | |
| 209 | - ->method('save') | |
| 210 | - ->will($this->returnValue(TRUE)); | |
| 211 | - | |
| 212 | - return $faltaAlunoMock; | |
| 213 | - } | |
| 214 | - | |
| 215 | - /** | |
| 216 | - * @see Boletim_Common#_setUpFaltaAluno() | |
| 217 | - */ | |
| 218 | - protected function _setUpFaltaAluno() | |
| 219 | - { | |
| 220 | - $faltaAluno = new Avaliacao_Model_FaltaAluno(array( | |
| 221 | - 'id' => 1, | |
| 222 | - 'matricula' => 1, | |
| 223 | - 'tipoFalta' => RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE | |
| 224 | - )); | |
| 225 | - | |
| 226 | - // Guarda na instância | |
| 227 | - $this->_faltaAlunoExpected = $faltaAluno; | |
| 228 | - | |
| 229 | - return $faltaAluno; | |
| 230 | - } | |
| 231 | - | |
| 232 | - /** | |
| 233 | - * @see Boletim_Common#_setUpFaltaAbstractDataMapperMock() | |
| 234 | - */ | |
| 235 | - protected function _setUpFaltaAbstractDataMapperMock() | |
| 236 | - { | |
| 237 | - // Retorno para mock de falta componentes | |
| 238 | - $faltaComponente = array(new Avaliacao_Model_FaltaComponente(array( | |
| 239 | - 'id' => 1, | |
| 240 | - 'faltaAluno' => 1, | |
| 241 | - 'componenteCurricular' => 1, | |
| 242 | - 'quantidade' => 4, | |
| 243 | - 'etapa' => 2 | |
| 244 | - ))); | |
| 245 | - | |
| 246 | - // Configura expectativas do mock | |
| 247 | - $faltaComponenteMock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 248 | - $faltaComponenteMock->expects($this->at(0)) | |
| 249 | - ->method('findAll') | |
| 250 | - ->with(array(), array('faltaAluno' => 1)) | |
| 251 | - ->will($this->returnValue($faltaComponente)); | |
| 252 | - | |
| 253 | - return $faltaComponenteMock; | |
| 254 | - } | |
| 255 | - | |
| 256 | - /** | |
| 257 | - * @expectedException CoreExt_Service_Exception | |
| 258 | - */ | |
| 259 | - public function testInstanciaLancaExcecaoCasoNumeroDeMatriculaNaoSejaInformado() | |
| 260 | - { | |
| 261 | - $service = new Avaliacao_Service_Boletim(); | |
| 262 | - } | |
| 263 | - | |
| 264 | - public function testInstanciaRegraDeAvaliacaoAtravesDeUmNumeroDeMatricula() | |
| 265 | - { | |
| 266 | - $this->assertType('RegraAvaliacao_Model_Regra', $this->_service->getRegra()); | |
| 267 | - } | |
| 268 | - | |
| 269 | - public function testInstanciaComponenteCurriculaAtravesDeUmNumeroDeMatricula() | |
| 270 | - { | |
| 271 | - $this->assertType('TabelaArredondamento_Model_Tabela', $this->_service->getTabelaArredondamento()); | |
| 272 | - } | |
| 273 | - | |
| 274 | - public function testInstanciaDeNotaEAdicionadaApenasUmaVez() | |
| 275 | - { | |
| 276 | - $data = array( | |
| 277 | - new Avaliacao_Model_NotaComponente( | |
| 278 | - array('componenteCurricular' => 1, 'nota' => 5) | |
| 279 | - ), | |
| 280 | - new Avaliacao_Model_NotaComponente( | |
| 281 | - array('componenteCurricular' => 3, 'nota' => 7.25) | |
| 282 | - ) | |
| 283 | - ); | |
| 284 | - | |
| 285 | - $this->_service->addNota($data[0]) | |
| 286 | - ->addNota($data[1]) | |
| 287 | - ->addNota($data[0]); | |
| 288 | - | |
| 289 | - $notas = $this->_service->getNotas(); | |
| 290 | - $notas = array( | |
| 291 | - array_shift($notas), | |
| 292 | - array_shift($notas) | |
| 293 | - ); | |
| 294 | - | |
| 295 | - $this->assertEquals(2, count($notas)); | |
| 296 | - $this->assertEquals($data[0], $notas[0]); | |
| 297 | - $this->assertEquals($data[1], $notas[1]); | |
| 298 | - | |
| 299 | - $data[0]->nota = 6; | |
| 300 | - $this->_service->addNota($data[0]); | |
| 301 | - | |
| 302 | - $this->assertEquals(2, count($this->_service->getNotas())); | |
| 303 | - } | |
| 304 | - | |
| 305 | - public function testValidacaoDeNotaNoBoletim() | |
| 306 | - { | |
| 307 | - // O aluno de matrícula "1" terá uma nota em matemática e nenhuma em ciências | |
| 308 | - $expected = array( | |
| 309 | - new Avaliacao_Model_NotaComponente(array('nota' => 6, 'componenteCurricular' => 1, 'etapa' => 1)) | |
| 310 | - ); | |
| 311 | - | |
| 312 | - // Não existe etapa 7, a máxima é 4 e Rc (recuperação). | |
| 313 | - $nota = new Avaliacao_Model_NotaComponente(array('componenteCurricular' => 1, 'nota' => 5.75, 'etapa' => 7)); | |
| 314 | - $this->_service->addNota($nota); | |
| 315 | - | |
| 316 | - // O aluno não cursa o componente 9 | |
| 317 | - $nota = new Avaliacao_Model_NotaComponente(array('componenteCurricular' => 9, 'nota' => 5.75, 'etapa' => 7)); | |
| 318 | - $this->_service->addNota($nota); | |
| 319 | - | |
| 320 | - // Notas validáveis | |
| 321 | - $validatable = $this->_service->getNotas(); | |
| 322 | - | |
| 323 | - // Inválido, irá atribuir a maior etapa possível | |
| 324 | - $nota = array_shift($validatable); | |
| 325 | - $this->assertEquals(3, $nota->etapa); | |
| 326 | - | |
| 327 | - | |
| 328 | - // Inválido, irá atribuir a maior etapa possível | |
| 329 | - $nota = array_shift($validatable); | |
| 330 | - $this->assertEquals(1, $nota->etapa); | |
| 331 | - } | |
| 332 | - | |
| 333 | - public function testValidacaoDeFaltaPorComponenteNoBoletim() | |
| 334 | - { | |
| 335 | - // Não existe etapa 7, a máxima é 4 e Rc (recuperação). | |
| 336 | - $falta = new Avaliacao_Model_FaltaComponente(array('componenteCurricular' => 1, 'quantidade' => 5, 'etapa' => 7)); | |
| 337 | - $this->_service->addFalta($falta); | |
| 338 | - | |
| 339 | - // O aluno não cursa o componente 9 | |
| 340 | - $falta = new Avaliacao_Model_FaltaComponente(array('componenteCurricular' => 9, 'quantidade' => 5, 'etapa' => 7)); | |
| 341 | - $this->_service->addFalta($falta); | |
| 342 | - | |
| 343 | - // Faltas validáveis | |
| 344 | - $validatable = $this->_service->getFaltas(); | |
| 345 | - | |
| 346 | - // Inválido, irá atribuir a maior etapa possível | |
| 347 | - $falta = array_shift($validatable); | |
| 348 | - $this->assertEquals(3, $falta->etapa); | |
| 349 | - | |
| 350 | - // Inválido, irá atribuir a maior etapa possível | |
| 351 | - $falta = array_shift($validatable); | |
| 352 | - $this->assertEquals(1, $falta->etapa); | |
| 353 | - } | |
| 354 | - | |
| 355 | - public function testArredondamentoDeNota() | |
| 356 | - { | |
| 357 | - $nota = new Avaliacao_Model_NotaComponente(array('nota' => 7.5)); | |
| 358 | - $this->assertEquals(7, $this->_service->arredondaNota($nota)); | |
| 359 | - | |
| 360 | - $nota = new Avaliacao_Model_NotaComponente(array('nota' => 8)); | |
| 361 | - $this->assertEquals(7, $this->_service->arredondaNota($nota)); | |
| 362 | - } | |
| 363 | - | |
| 364 | - public function testSalvaAsNotasNoBoletim() | |
| 365 | - { | |
| 366 | - $data = array( | |
| 367 | - new Avaliacao_Model_NotaComponente( | |
| 368 | - array('componenteCurricular' => 1, 'nota' => 5) | |
| 369 | - ), | |
| 370 | - new Avaliacao_Model_NotaComponente( | |
| 371 | - array('componenteCurricular' => 3, 'nota' => 7.25, 'etapa' => 1) | |
| 372 | - ) | |
| 373 | - ); | |
| 374 | - | |
| 375 | - // Adiciona mocks na instância | |
| 376 | - $this->_service->addNotas($data); | |
| 377 | - | |
| 378 | - // Configura o mock de NotaComponente, que irá persistir objetos | |
| 379 | - // Avaliacao_Model_NotaComponente | |
| 380 | - $notas = $this->_service->getNotas(); | |
| 381 | - $toSave[0] = array_shift($notas); | |
| 382 | - $toSave[1] = array_shift($notas); | |
| 383 | - $toSave[0]->notaAluno = $this->_notaAlunoExpected; | |
| 384 | - $toSave[1]->notaAluno = $this->_notaAlunoExpected; | |
| 385 | - | |
| 386 | - // Usa o mesmo mock que foi criado em setUp() | |
| 387 | - $notaComponenteMock = $this->_service->getNotaComponenteDataMapper(); | |
| 388 | - | |
| 389 | - // Depois de salvar as notas, retornaremos um conjunto completo, inclusive | |
| 390 | - // com a nota da primeira etapa que não tem em setUp(). | |
| 391 | - $notasComponentes = array( | |
| 392 | - new Avaliacao_Model_NotaComponente(array( | |
| 393 | - 'id' => 1, | |
| 394 | - 'notaAluno' => 1, | |
| 395 | - 'componenteCurricular' => 1, | |
| 396 | - 'nota' => 6.5, | |
| 397 | - 'notaArredondada' => 6, | |
| 398 | - 'etapa' => 1 | |
| 399 | - )), | |
| 400 | - new Avaliacao_Model_NotaComponente(array( | |
| 401 | - 'id' => 2, | |
| 402 | - 'notaAluno' => 1, | |
| 403 | - 'componenteCurricular' => 1, | |
| 404 | - 'nota' => 7.5, | |
| 405 | - 'notaArredondada' => 7, | |
| 406 | - 'etapa' => 2 | |
| 407 | - )), | |
| 408 | - new Avaliacao_Model_NotaComponente(array( | |
| 409 | - 'id' => 3, | |
| 410 | - 'notaAluno' => 1, | |
| 411 | - 'componenteCurricular' => 1, | |
| 412 | - 'nota' => 5, | |
| 413 | - 'notaArredondada' => 4, | |
| 414 | - 'etapa' => 3 | |
| 415 | - )), | |
| 416 | - new Avaliacao_Model_NotaComponente(array( | |
| 417 | - 'id' => 4, | |
| 418 | - 'notaAluno' => 1, | |
| 419 | - 'componenteCurricular' => 3, | |
| 420 | - 'nota' => 7.25, | |
| 421 | - 'notaArredondada' => 7, | |
| 422 | - 'etapa' => 1 | |
| 423 | - )) | |
| 424 | - ); | |
| 425 | - | |
| 426 | - $notaComponenteMock->expects($this->at(0)) | |
| 427 | - ->method('save') | |
| 428 | - ->with($toSave[0]); | |
| 429 | - | |
| 430 | - $notaComponenteMock->expects($this->at(1)) | |
| 431 | - ->method('save') | |
| 432 | - ->with($toSave[1]); | |
| 433 | - | |
| 434 | - $notaComponenteMock->expects($this->at(2)) | |
| 435 | - ->method('findAll') | |
| 436 | - ->with(array(), array('notaAluno' => 1)) | |
| 437 | - ->will($this->returnValue($notasComponentes)); | |
| 438 | - | |
| 439 | - // Valores de retorno para NotaComponenteMedia | |
| 440 | - $notasComponentesMedia = array( | |
| 441 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 442 | - 'notaAluno' => 1, | |
| 443 | - 'componenteCurricular' => 1, | |
| 444 | - 'media' => 3.5, | |
| 445 | - 'mediaArredondada' => 3 | |
| 446 | - )) | |
| 447 | - ); | |
| 448 | - | |
| 449 | - $notaComponenteMediaMock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 450 | - $notaComponenteMediaMock->expects($this->at(0)) | |
| 451 | - ->method('find') | |
| 452 | - ->with(array(1, 1)) | |
| 453 | - ->will($this->returnValue($notasComponentesMedia[0])); | |
| 454 | - | |
| 455 | - $notaComponenteMediaMock->expects($this->at(2)) | |
| 456 | - ->method('find') | |
| 457 | - ->with(array(1, 3)) | |
| 458 | - ->will($this->returnValue(NULL)); | |
| 459 | - | |
| 460 | - $notaComponenteMediaMock->expects($this->at(1)) | |
| 461 | - ->method('save'); | |
| 462 | - | |
| 463 | - $notaComponenteMediaMock->expects($this->at(3)) | |
| 464 | - ->method('save'); | |
| 465 | - | |
| 466 | - // Atribui mock a instância | |
| 467 | - $this->_service->setNotaComponenteDataMapper($notaComponenteMock); | |
| 468 | - $this->_service->setNotaComponenteMediaDataMapper($notaComponenteMediaMock); | |
| 469 | - | |
| 470 | - // Salva as notas | |
| 471 | - $this->_service->saveNotas(); | |
| 472 | - | |
| 473 | - // Verifica a etapa das notas | |
| 474 | - $notas = $this->_service->getNotas(); | |
| 475 | - | |
| 476 | - $nota1 = array_shift($notas); | |
| 477 | - $nota2 = array_shift($notas); | |
| 478 | - | |
| 479 | - // Quantidade de etapas | |
| 480 | - $this->assertEquals(3, $nota1->etapa); | |
| 481 | - $this->assertEquals(1, $nota2->etapa); | |
| 482 | - } | |
| 483 | - | |
| 484 | - public function testSalvaAsFaltasNoBoletim() | |
| 485 | - { | |
| 486 | - $data = array( | |
| 487 | - new Avaliacao_Model_FaltaComponente(array( | |
| 488 | - 'componenteCurricular' => 1, 'quantidade' => 1 | |
| 489 | - )), | |
| 490 | - new Avaliacao_Model_FaltaComponente(array( | |
| 491 | - 'componenteCurricular' => 3, 'quantidade' => 4 | |
| 492 | - )) | |
| 493 | - ); | |
| 494 | - | |
| 495 | - // Adiciona faltas | |
| 496 | - $this->_service->addFaltas($data); | |
| 497 | - | |
| 498 | - // Adiciona a instância de falta aluno | |
| 499 | - $faltas = $this->_service->getFaltas(); | |
| 500 | - $toSave = array(); | |
| 501 | - $toSave[0] = array_shift($faltas); | |
| 502 | - $toSave[1] = array_shift($faltas); | |
| 503 | - | |
| 504 | - $toSave[0]->faltaAluno = $this->_faltaAlunoExpected; | |
| 505 | - $toSave[1]->faltaAluno = $this->_faltaAlunoExpected; | |
| 506 | - | |
| 507 | - // Usa o mesmo mock que foi criado em setUp() | |
| 508 | - $faltaComponenteMock = $this->_service->getFaltaAbstractDataMapper(); | |
| 509 | - | |
| 510 | - $faltaComponenteMock->expects($this->at(0)) | |
| 511 | - ->method('save') | |
| 512 | - ->with($toSave[0]); | |
| 513 | - | |
| 514 | - $faltaComponenteMock->expects($this->at(1)) | |
| 515 | - ->method('save') | |
| 516 | - ->with($toSave[1]); | |
| 517 | - | |
| 518 | - // Salva as faltas | |
| 519 | - $this->_service->saveFaltas(); | |
| 520 | - } | |
| 521 | - | |
| 522 | - public function testSituacaoAlunoComponentesCurricularesEmExame() | |
| 523 | - { | |
| 524 | - $expected = new stdClass(); | |
| 525 | - $expected->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 526 | - $expected->componentesCurriculares = array(); | |
| 527 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 528 | - $expected->componentesCurriculares[3] = new stdClass(); | |
| 529 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 530 | - $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO_APOS_EXAME; | |
| 531 | - | |
| 532 | - $returnValue = array( | |
| 533 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 534 | - 'notaAluno' => 1, 'componenteCurricular' => 1, 'media' => 5.65, 'mediaArredondada' => 5.5, 'etapa' => 4 | |
| 535 | - )), | |
| 536 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 537 | - 'notaAluno' => 1, 'componenteCurricular' => 3, 'media' => 6, 'mediaArredondada' => 6, 'etapa' => 'Rc' | |
| 538 | - )) | |
| 539 | - ); | |
| 540 | - | |
| 541 | - $mediaMock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 542 | - $mediaMock->expects($this->once()) | |
| 543 | - ->method('findAll') | |
| 544 | - ->with(array(), array('notaAluno' => 1)) | |
| 545 | - ->will($this->returnValue($returnValue)); | |
| 546 | - | |
| 547 | - $this->_service->setNotaComponenteMediaDataMapper($mediaMock); | |
| 548 | - $this->assertEquals($expected, $this->_service->getSituacaoComponentesCurriculares()); | |
| 549 | - } | |
| 550 | - | |
| 551 | - public function testSituacaoAlunoComponentesCurricularesReprovado() | |
| 552 | - { | |
| 553 | - $expected = new stdClass(); | |
| 554 | - $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 555 | - $expected->componentesCurriculares = array(); | |
| 556 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 557 | - $expected->componentesCurriculares[3] = new stdClass(); | |
| 558 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 559 | - $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 560 | - | |
| 561 | - $returnValue = array( | |
| 562 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 563 | - 'notaAluno' => 1, 'componenteCurricular' => 1, 'media' => 5.65, 'mediaArredondada' => 5.5, 'etapa' => 'Rc' | |
| 564 | - )), | |
| 565 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 566 | - 'notaAluno' => 1, 'componenteCurricular' => 3, 'media' => 5.5, 'mediaArredondada' => 5.5, 'etapa' => 'Rc' | |
| 567 | - )) | |
| 568 | - ); | |
| 569 | - | |
| 570 | - $mediaMock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 571 | - $mediaMock->expects($this->once()) | |
| 572 | - ->method('findAll') | |
| 573 | - ->with(array(), array('notaAluno' => 1)) | |
| 574 | - ->will($this->returnValue($returnValue)); | |
| 575 | - | |
| 576 | - $this->_service->setNotaComponenteMediaDataMapper($mediaMock); | |
| 577 | - $this->assertEquals($expected, $this->_service->getSituacaoComponentesCurriculares()); | |
| 578 | - } | |
| 579 | - | |
| 580 | - public function testSituacaoAlunoComponentesCurricularesEmAndamento() | |
| 581 | - { | |
| 582 | - $expected = new stdClass(); | |
| 583 | - $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 584 | - $expected->componentesCurriculares = array(); | |
| 585 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 586 | - $expected->componentesCurriculares[3] = new stdClass(); | |
| 587 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 588 | - $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 589 | - | |
| 590 | - $returnValue = array( | |
| 591 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 592 | - 'notaAluno' => 1, 'componenteCurricular' => 1, 'media' => 5.65, 'mediaArredondada' => 5.5, 'etapa' => 3 | |
| 593 | - )), | |
| 594 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 595 | - 'notaAluno' => 1, 'componenteCurricular' => 3, 'media' => 6, 'mediaArredondada' => 6, 'etapa' => 4 | |
| 596 | - )) | |
| 597 | - ); | |
| 598 | - | |
| 599 | - $mediaMock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 600 | - $mediaMock->expects($this->once()) | |
| 601 | - ->method('findAll') | |
| 602 | - ->with(array(), array('notaAluno' => 1)) | |
| 603 | - ->will($this->returnValue($returnValue)); | |
| 604 | - | |
| 605 | - $this->_service->setNotaComponenteMediaDataMapper($mediaMock); | |
| 606 | - $this->assertEquals($expected, $this->_service->getSituacaoComponentesCurriculares()); | |
| 607 | - } | |
| 608 | - | |
| 609 | - public function testSituacaoAlunoComponentesCurricularesAprovado() | |
| 610 | - { | |
| 611 | - $expected = new stdClass(); | |
| 612 | - $expected->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 613 | - $expected->componentesCurriculares = array(); | |
| 614 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 615 | - $expected->componentesCurriculares[3] = new stdClass(); | |
| 616 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 617 | - $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 618 | - | |
| 619 | - $returnValue = array( | |
| 620 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 621 | - 'notaAluno' => 1, 'componenteCurricular' => 1, 'media' => 7.65, 'mediaArredondada' => 7.5, 'etapa' => 4 | |
| 622 | - )), | |
| 623 | - new Avaliacao_Model_NotaComponenteMedia(array( | |
| 624 | - 'notaAluno' => 1, 'componenteCurricular' => 3, 'media' => 6, 'mediaArredondada' => 6, 'etapa' => 4 | |
| 625 | - )) | |
| 626 | - ); | |
| 627 | - | |
| 628 | - $mediaMock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 629 | - $mediaMock->expects($this->once()) | |
| 630 | - ->method('findAll') | |
| 631 | - ->with(array(), array('notaAluno' => 1)) | |
| 632 | - ->will($this->returnValue($returnValue)); | |
| 633 | - | |
| 634 | - $this->_service->setNotaComponenteMediaDataMapper($mediaMock); | |
| 635 | - $this->assertEquals($expected, $this->_service->getSituacaoComponentesCurriculares()); | |
| 636 | - } | |
| 637 | - | |
| 638 | -/** | |
| 639 | - * @depends testSalvaAsFaltasNoBoletim | |
| 640 | - * @see Boletim_Common#_configuraDadosDisciplina():255 (carga horária do | |
| 641 | - * componente de id 3 - Ciências) | |
| 642 | - */ | |
| 643 | - public function testSituacaoAlunoFaltaComponenteCurricularEmAndamento() | |
| 644 | - { | |
| 645 | - $faltasComponentes = array( | |
| 646 | - new Avaliacao_Model_FaltaComponente(array( | |
| 647 | - 'id' => 1, | |
| 648 | - 'faltaAluno' => 1, | |
| 649 | - 'componenteCurricular' => 1, | |
| 650 | - 'quantidade' => 0, | |
| 651 | - 'etapa' => 1 | |
| 652 | - )), | |
| 653 | - new Avaliacao_Model_FaltaComponente(array( | |
| 654 | - 'id' => 2, | |
| 655 | - 'faltaAluno' => 1, | |
| 656 | - 'componenteCurricular' => 1, | |
| 657 | - 'quantidade' => 7, | |
| 658 | - 'etapa' => 2 | |
| 659 | - )), | |
| 660 | - new Avaliacao_Model_FaltaComponente(array( | |
| 661 | - 'id' => 3, | |
| 662 | - 'faltaAluno' => 1, | |
| 663 | - 'componenteCurricular' => 1, | |
| 664 | - 'quantidade' => 1, | |
| 665 | - 'etapa' => 3 | |
| 666 | - )), | |
| 667 | - new Avaliacao_Model_FaltaComponente(array( | |
| 668 | - 'id' => 4, | |
| 669 | - 'faltaAluno' => 1, | |
| 670 | - 'componenteCurricular' => 3, | |
| 671 | - 'quantidade' => 4, | |
| 672 | - 'etapa' => 1 | |
| 673 | - )) | |
| 674 | - ); | |
| 675 | - | |
| 676 | - $faltaComponenteMock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 677 | - $faltaComponenteMock->expects($this->once()) | |
| 678 | - ->method('findAll') | |
| 679 | - ->with(array(), array('faltaAluno' => 1)) | |
| 680 | - ->will($this->returnValue($faltasComponentes)); | |
| 681 | - | |
| 682 | - $this->_service->setFaltaAbstractDataMapper($faltaComponenteMock); | |
| 683 | - | |
| 684 | - // Objeto de retorno esperado | |
| 685 | - $expected = new stdClass(); | |
| 686 | - $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 687 | - $expected->tipoFalta = RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE; | |
| 688 | - $expected->cargaHoraria = 800; | |
| 689 | - $expected->cursoHoraFalta = (50 / 60); | |
| 690 | - $expected->totalFaltas = 12; | |
| 691 | - $expected->horasFaltas = (12 * $expected->cursoHoraFalta); | |
| 692 | - $expected->porcentagemFalta = (($expected->horasFaltas / $expected->cargaHoraria) * 100); | |
| 693 | - $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 694 | - $expected->porcentagemPresencaRegra = 75; | |
| 695 | - $expected->componentesCurriculares = array(); | |
| 696 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 697 | - $expected->componentesCurriculares[3] = new stdClass(); | |
| 698 | - | |
| 699 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 700 | - $expected->componentesCurriculares[1]->horasFaltas = (8 * $expected->cursoHoraFalta); | |
| 701 | - $expected->componentesCurriculares[1]->porcentagemFalta = ((8 * $expected->cursoHoraFalta) / 100) * 100; | |
| 702 | - $expected->componentesCurriculares[1]->porcentagemPresenca = 100 - (((8 * $expected->cursoHoraFalta) / 100) * 100); | |
| 703 | - | |
| 704 | - $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 705 | - $expected->componentesCurriculares[3]->horasFaltas = (4 * $expected->cursoHoraFalta); | |
| 706 | - $expected->componentesCurriculares[3]->porcentagemFalta = ((4 * $expected->cursoHoraFalta) / 70) * 100; | |
| 707 | - $expected->componentesCurriculares[3]->porcentagemPresenca = 100 - (((4 * $expected->cursoHoraFalta) / 70) * 100); | |
| 708 | - | |
| 709 | - $presenca = $this->_service->getSituacaoFaltas(); | |
| 710 | - $this->assertEquals($expected, $presenca); | |
| 711 | - } | |
| 712 | - | |
| 713 | - /** | |
| 714 | - * @depends testSalvaAsFaltasNoBoletim | |
| 715 | - * @see Boletim_Common#_configuraDadosDisciplina():255 (carga horária do | |
| 716 | - * componente de id 3 - Ciências) | |
| 717 | - */ | |
| 718 | - public function testSituacaoAlunoFaltaComponenteCurricularAprovado() | |
| 719 | - { | |
| 720 | - $faltasComponentes = array( | |
| 721 | - new Avaliacao_Model_FaltaComponente(array( | |
| 722 | - 'id' => 1, | |
| 723 | - 'faltaAluno' => 1, | |
| 724 | - 'componenteCurricular' => 1, | |
| 725 | - 'quantidade' => 0, | |
| 726 | - 'etapa' => 1 | |
| 727 | - )), | |
| 728 | - new Avaliacao_Model_FaltaComponente(array( | |
| 729 | - 'id' => 2, | |
| 730 | - 'faltaAluno' => 1, | |
| 731 | - 'componenteCurricular' => 1, | |
| 732 | - 'quantidade' => 7, | |
| 733 | - 'etapa' => 2 | |
| 734 | - )), | |
| 735 | - new Avaliacao_Model_FaltaComponente(array( | |
| 736 | - 'id' => 3, | |
| 737 | - 'faltaAluno' => 1, | |
| 738 | - 'componenteCurricular' => 1, | |
| 739 | - 'quantidade' => 1, | |
| 740 | - 'etapa' => 3 | |
| 741 | - )), | |
| 742 | - new Avaliacao_Model_FaltaComponente(array( | |
| 743 | - 'id' => 4, | |
| 744 | - 'faltaAluno' => 1, | |
| 745 | - 'componenteCurricular' => 1, | |
| 746 | - 'quantidade' => 4, | |
| 747 | - 'etapa' => 4 | |
| 748 | - )) | |
| 749 | - ); | |
| 750 | - | |
| 751 | - $faltaComponenteMock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 752 | - $faltaComponenteMock->expects($this->once()) | |
| 753 | - ->method('findAll') | |
| 754 | - ->with(array(), array('faltaAluno' => 1)) | |
| 755 | - ->will($this->returnValue($faltasComponentes)); | |
| 756 | - | |
| 757 | - $this->_service->setFaltaAbstractDataMapper($faltaComponenteMock); | |
| 758 | - | |
| 759 | - // Objeto de retorno esperado | |
| 760 | - $expected = new stdClass(); | |
| 761 | - $expected->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 762 | - $expected->tipoFalta = RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE; | |
| 763 | - $expected->cargaHoraria = 800; | |
| 764 | - $expected->cursoHoraFalta = (50 / 60); | |
| 765 | - $expected->totalFaltas = 12; | |
| 766 | - $expected->horasFaltas = (12 * $expected->cursoHoraFalta); | |
| 767 | - $expected->porcentagemFalta = (($expected->horasFaltas / $expected->cargaHoraria) * 100); | |
| 768 | - $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 769 | - $expected->porcentagemPresencaRegra = 75; | |
| 770 | - $expected->componentesCurriculares = array(); | |
| 771 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 772 | - | |
| 773 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 774 | - $expected->componentesCurriculares[1]->horasFaltas = (12 * $expected->cursoHoraFalta); | |
| 775 | - $expected->componentesCurriculares[1]->porcentagemFalta = ((12 * $expected->cursoHoraFalta) / 100) * 100; | |
| 776 | - $expected->componentesCurriculares[1]->porcentagemPresenca = 100 - (((12 * $expected->cursoHoraFalta) / 100) * 100); | |
| 777 | - | |
| 778 | - $presenca = $this->_service->getSituacaoFaltas(); | |
| 779 | - $this->assertEquals($expected, $presenca); | |
| 780 | - } | |
| 781 | - | |
| 782 | -/** | |
| 783 | - * @depends testSalvaAsFaltasNoBoletim | |
| 784 | - * @see Boletim_Common#_configuraDadosDisciplina():255 (carga horária do | |
| 785 | - * componente de id 3 - Ciências) | |
| 786 | - */ | |
| 787 | - public function testSituacaoAlunoFaltaComponenteCurricularReprovado() | |
| 788 | - { | |
| 789 | - $faltasComponentes = array( | |
| 790 | - new Avaliacao_Model_FaltaComponente(array( | |
| 791 | - 'id' => 1, | |
| 792 | - 'faltaAluno' => 1, | |
| 793 | - 'componenteCurricular' => 1, | |
| 794 | - 'quantidade' => 125, | |
| 795 | - 'etapa' => 1 | |
| 796 | - )), | |
| 797 | - new Avaliacao_Model_FaltaComponente(array( | |
| 798 | - 'id' => 2, | |
| 799 | - 'faltaAluno' => 1, | |
| 800 | - 'componenteCurricular' => 1, | |
| 801 | - 'quantidade' => 125, | |
| 802 | - 'etapa' => 2 | |
| 803 | - )), | |
| 804 | - new Avaliacao_Model_FaltaComponente(array( | |
| 805 | - 'id' => 3, | |
| 806 | - 'faltaAluno' => 1, | |
| 807 | - 'componenteCurricular' => 1, | |
| 808 | - 'quantidade' => 125, | |
| 809 | - 'etapa' => 3 | |
| 810 | - )), | |
| 811 | - new Avaliacao_Model_FaltaComponente(array( | |
| 812 | - 'id' => 4, | |
| 813 | - 'faltaAluno' => 1, | |
| 814 | - 'componenteCurricular' => 1, | |
| 815 | - 'quantidade' => 125, | |
| 816 | - 'etapa' => 4 | |
| 817 | - )) | |
| 818 | - ); | |
| 819 | - | |
| 820 | - $faltaComponenteMock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 821 | - $faltaComponenteMock->expects($this->once()) | |
| 822 | - ->method('findAll') | |
| 823 | - ->with(array(), array('faltaAluno' => 1)) | |
| 824 | - ->will($this->returnValue($faltasComponentes)); | |
| 825 | - | |
| 826 | - $this->_service->setFaltaAbstractDataMapper($faltaComponenteMock); | |
| 827 | - | |
| 828 | - // Objeto de retorno esperado | |
| 829 | - $expected = new stdClass(); | |
| 830 | - $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 831 | - $expected->tipoFalta = RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE; | |
| 832 | - $expected->cargaHoraria = 800; | |
| 833 | - $expected->cursoHoraFalta = (50 / 60); | |
| 834 | - $expected->totalFaltas = 500; | |
| 835 | - $expected->horasFaltas = (500 * $expected->cursoHoraFalta); | |
| 836 | - $expected->porcentagemFalta = (($expected->horasFaltas / $expected->cargaHoraria) * 100); | |
| 837 | - $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 838 | - $expected->porcentagemPresencaRegra = 75; | |
| 839 | - $expected->componentesCurriculares = array(); | |
| 840 | - $expected->componentesCurriculares[1] = new stdClass(); | |
| 841 | - | |
| 842 | - $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 843 | - $expected->componentesCurriculares[1]->horasFaltas = (500 * $expected->cursoHoraFalta); | |
| 844 | - $expected->componentesCurriculares[1]->porcentagemFalta = ((500 * $expected->cursoHoraFalta) / 100) * 100; | |
| 845 | - $expected->componentesCurriculares[1]->porcentagemPresenca = 100 - (((500 * $expected->cursoHoraFalta) / 100) * 100); | |
| 846 | - | |
| 847 | - $presenca = $this->_service->getSituacaoFaltas(); | |
| 848 | - $this->assertEquals($expected, $presenca); | |
| 849 | - } | |
| 850 | - | |
| 851 | - public function testSituacaoAluno() | |
| 852 | - { | |
| 853 | - $notaSituacoes = array( | |
| 854 | - 1 => App_Model_MatriculaSituacao::APROVADO, | |
| 855 | - 2 => App_Model_MatriculaSituacao::APROVADO_APOS_EXAME, | |
| 856 | - 3 => App_Model_MatriculaSituacao::EM_ANDAMENTO, | |
| 857 | - 4 => App_Model_MatriculaSituacao::EM_EXAME, | |
| 858 | - 5 => App_Model_MatriculaSituacao::REPROVADO | |
| 859 | - ); | |
| 860 | - | |
| 861 | - $faltaSituacoes = array( | |
| 862 | - 1 => App_Model_MatriculaSituacao::EM_ANDAMENTO, | |
| 863 | - 2 => App_Model_MatriculaSituacao::APROVADO, | |
| 864 | - 3 => App_Model_MatriculaSituacao::REPROVADO | |
| 865 | - ); | |
| 866 | - | |
| 867 | - // Possibilidades | |
| 868 | - $expected = array( | |
| 869 | - 1 => array( | |
| 870 | - 1 => array(FALSE, TRUE, FALSE, FALSE), | |
| 871 | - 2 => array(TRUE, FALSE, FALSE, FALSE), | |
| 872 | - 3 => array(FALSE, FALSE, TRUE, FALSE) | |
| 873 | - ), | |
| 874 | - 2 => array( | |
| 875 | - 1 => array(FALSE, TRUE, FALSE, TRUE), | |
| 876 | - 2 => array(TRUE, FALSE, FALSE, TRUE), | |
| 877 | - 3 => array(FALSE, FALSE, TRUE, TRUE) | |
| 878 | - ), | |
| 879 | - 3 => array( | |
| 880 | - 1 => array(FALSE, TRUE, FALSE, FALSE), | |
| 881 | - 2 => array(FALSE, TRUE, FALSE, FALSE), | |
| 882 | - 3 => array(FALSE, TRUE, TRUE, FALSE) | |
| 883 | - ), | |
| 884 | - 4 => array( | |
| 885 | - 1 => array(FALSE, TRUE, FALSE, TRUE), | |
| 886 | - 2 => array(FALSE, TRUE, FALSE, TRUE), | |
| 887 | - 3 => array(FALSE, TRUE, TRUE, TRUE) | |
| 888 | - ), | |
| 889 | - 5 => array( | |
| 890 | - 1 => array(FALSE, TRUE, FALSE, TRUE), | |
| 891 | - 2 => array(FALSE, FALSE, FALSE, TRUE), | |
| 892 | - 3 => array(FALSE, FALSE, TRUE, TRUE) | |
| 893 | - ) | |
| 894 | - ); | |
| 895 | - | |
| 896 | - foreach ($notaSituacoes as $i => $notaSituacao) { | |
| 897 | - $nota = new stdClass(); | |
| 898 | - $nota->situacao = $notaSituacao; | |
| 899 | - | |
| 900 | - foreach ($faltaSituacoes as $ii => $faltaSituacao) { | |
| 901 | - $service = $this->setExcludedMethods(array('getSituacaoAluno')) | |
| 902 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 903 | - | |
| 904 | - $falta = new stdClass(); | |
| 905 | - $falta->situacao = $faltaSituacao; | |
| 906 | - | |
| 907 | - $service->expects($this->once()) | |
| 908 | - ->method('getSituacaoComponentesCurriculares') | |
| 909 | - ->will($this->returnValue($nota)); | |
| 910 | - | |
| 911 | - $service->expects($this->once()) | |
| 912 | - ->method('getSituacaoFaltas') | |
| 913 | - ->will($this->returnValue($falta)); | |
| 914 | - | |
| 915 | - // Testa | |
| 916 | - $situacao = $service->getSituacaoAluno(); | |
| 917 | - | |
| 918 | - $this->assertEquals($expected[$i][$ii][0], $situacao->aprovado, "Aprovado, caso $i - $ii"); | |
| 919 | - $this->assertEquals($expected[$i][$ii][1], $situacao->andamento, "Andamento, caso $i - $ii"); | |
| 920 | - $this->assertEquals($expected[$i][$ii][2], $situacao->retidoFalta, "Retido por falta, caso $i - $ii"); | |
| 921 | - $this->assertEquals($expected[$i][$ii][3], $situacao->recuperacao, "Recuperação, caso $i - $ii"); | |
| 922 | - } | |
| 923 | - } | |
| 924 | - } | |
| 925 | - | |
| 926 | - /** | |
| 927 | - * @expectedException CoreExt_Service_Exception | |
| 928 | - */ | |
| 929 | - public function testPromoverLancaExcecaoComSituacaoEmAndamento() | |
| 930 | - { | |
| 931 | - $situacao = new stdClass(); | |
| 932 | - $situacao->aprovado = FALSE; | |
| 933 | - $situacao->andamento = TRUE; | |
| 934 | - | |
| 935 | - $service = $this->setExcludedMethods(array('promover')) | |
| 936 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 937 | - | |
| 938 | - $service->expects($this->once()) | |
| 939 | - ->method('getSituacaoAluno') | |
| 940 | - ->will($this->returnValue($situacao)); | |
| 941 | - | |
| 942 | - $service->promover(); | |
| 943 | - } | |
| 944 | - | |
| 945 | - /** | |
| 946 | - * @expectedException CoreExt_Service_Exception | |
| 947 | - */ | |
| 948 | - public function testPromoverMatriculaJaPromovidaLancaExcecao() | |
| 949 | - { | |
| 950 | - $situacao = new stdClass(); | |
| 951 | - $situacao->aprovado = FALSE; | |
| 952 | - $situacao->andamento = FALSE; | |
| 953 | - | |
| 954 | - $service = $this->setExcludedMethods(array('promover')) | |
| 955 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 956 | - | |
| 957 | - $service->expects($this->once()) | |
| 958 | - ->method('getSituacaoAluno') | |
| 959 | - ->will($this->returnValue($situacao)); | |
| 960 | - | |
| 961 | - $service->expects($this->once()) | |
| 962 | - ->method('getOption') | |
| 963 | - ->with('aprovado') | |
| 964 | - ->will($this->returnValue(1)); | |
| 965 | - | |
| 966 | - $service->promover(); | |
| 967 | - } | |
| 968 | - | |
| 969 | - public function testPromoverComProgressaoContinuada() | |
| 970 | - { | |
| 971 | - $situacao = new stdClass(); | |
| 972 | - $situacao->aprovado = FALSE; | |
| 973 | - $situacao->andamento = FALSE; | |
| 974 | - $situacao->retidoFalta = TRUE; | |
| 975 | - $situacao->recuperacao = TRUE; | |
| 976 | - | |
| 977 | - $service = $this->setExcludedMethods(array('promover')) | |
| 978 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 979 | - | |
| 980 | - $service->expects($this->once()) | |
| 981 | - ->method('getRegra') | |
| 982 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 983 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::CONTINUADA) | |
| 984 | - ))); | |
| 985 | - | |
| 986 | - $service->expects($this->once()) | |
| 987 | - ->method('getSituacaoAluno') | |
| 988 | - ->will($this->returnValue($situacao)); | |
| 989 | - | |
| 990 | - $service->expects($this->any()) | |
| 991 | - ->method('getOption') | |
| 992 | - ->will($this->onConsecutiveCalls(3, 1, 1)); | |
| 993 | - | |
| 994 | - $service->expects($this->once()) | |
| 995 | - ->method('_updateMatricula') | |
| 996 | - ->with(1, 1, TRUE); | |
| 997 | - | |
| 998 | - $service->promover(); | |
| 999 | - } | |
| 1000 | - | |
| 1001 | - public function testPromoverComProgressaoNaoContinuadaMediaPresencaAprovado() | |
| 1002 | - { | |
| 1003 | - $situacao = new stdClass(); | |
| 1004 | - $situacao->aprovado = TRUE; | |
| 1005 | - $situacao->andamento = FALSE; | |
| 1006 | - $situacao->retidoFalta = FALSE; | |
| 1007 | - $situacao->recuperacao = FALSE; | |
| 1008 | - | |
| 1009 | - $service = $this->setExcludedMethods(array('promover')) | |
| 1010 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 1011 | - | |
| 1012 | - $service->expects($this->once()) | |
| 1013 | - ->method('getRegra') | |
| 1014 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 1015 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_MEDIA_PRESENCA) | |
| 1016 | - ))); | |
| 1017 | - | |
| 1018 | - $service->expects($this->once()) | |
| 1019 | - ->method('getSituacaoAluno') | |
| 1020 | - ->will($this->returnValue($situacao)); | |
| 1021 | - | |
| 1022 | - $service->expects($this->any()) | |
| 1023 | - ->method('getOption') | |
| 1024 | - ->will($this->onConsecutiveCalls(3, 1, 1)); | |
| 1025 | - | |
| 1026 | - $service->expects($this->once()) | |
| 1027 | - ->method('_updateMatricula') | |
| 1028 | - ->with(1, 1, TRUE); | |
| 1029 | - | |
| 1030 | - $service->promover(); | |
| 1031 | - } | |
| 1032 | - | |
| 1033 | - public function testPromoverComProgressaoNaoContinuadaMediaPresencaReprovado() | |
| 1034 | - { | |
| 1035 | - $situacao = new stdClass(); | |
| 1036 | - $situacao->aprovado = FALSE; | |
| 1037 | - $situacao->andamento = FALSE; | |
| 1038 | - $situacao->retidoFalta = TRUE; | |
| 1039 | - $situacao->recuperacao = FALSE; | |
| 1040 | - | |
| 1041 | - $service = $this->setExcludedMethods(array('promover')) | |
| 1042 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 1043 | - | |
| 1044 | - $service->expects($this->once()) | |
| 1045 | - ->method('getRegra') | |
| 1046 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 1047 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_MEDIA_PRESENCA) | |
| 1048 | - ))); | |
| 1049 | - | |
| 1050 | - $service->expects($this->once()) | |
| 1051 | - ->method('getSituacaoAluno') | |
| 1052 | - ->will($this->returnValue($situacao)); | |
| 1053 | - | |
| 1054 | - $service->expects($this->any()) | |
| 1055 | - ->method('getOption') | |
| 1056 | - ->will($this->onConsecutiveCalls(3, 1, 1)); | |
| 1057 | - | |
| 1058 | - $service->expects($this->once()) | |
| 1059 | - ->method('_updateMatricula') | |
| 1060 | - ->with(1, 1, FALSE); | |
| 1061 | - | |
| 1062 | - $service->promover(); | |
| 1063 | - } | |
| 1064 | - | |
| 1065 | - public function testPromoverComProgressaoNaoContinuadaMediaAprovado() | |
| 1066 | - { | |
| 1067 | - $situacao = new stdClass(); | |
| 1068 | - $situacao->aprovado = TRUE; | |
| 1069 | - $situacao->andamento = FALSE; | |
| 1070 | - $situacao->retidoFalta = TRUE; | |
| 1071 | - $situacao->recuperacao = FALSE; | |
| 1072 | - | |
| 1073 | - $service = $this->setExcludedMethods(array('promover')) | |
| 1074 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 1075 | - | |
| 1076 | - $service->expects($this->once()) | |
| 1077 | - ->method('getRegra') | |
| 1078 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 1079 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_SOMENTE_MEDIA) | |
| 1080 | - ))); | |
| 1081 | - | |
| 1082 | - $service->expects($this->once()) | |
| 1083 | - ->method('getSituacaoAluno') | |
| 1084 | - ->will($this->returnValue($situacao)); | |
| 1085 | - | |
| 1086 | - $service->expects($this->any()) | |
| 1087 | - ->method('getOption') | |
| 1088 | - ->will($this->onConsecutiveCalls(3, 1, 1)); | |
| 1089 | - | |
| 1090 | - $service->expects($this->once()) | |
| 1091 | - ->method('_updateMatricula') | |
| 1092 | - ->with(1, 1, TRUE); | |
| 1093 | - | |
| 1094 | - $service->promover(); | |
| 1095 | - } | |
| 1096 | - | |
| 1097 | - public function testPromoverComProgressaoNaoContinuadaMediaReprovado() | |
| 1098 | - { | |
| 1099 | - $situacao = new stdClass(); | |
| 1100 | - $situacao->aprovado = FALSE; | |
| 1101 | - $situacao->andamento = FALSE; | |
| 1102 | - $situacao->retidoFalta = FALSE; | |
| 1103 | - $situacao->recuperacao = FALSE; | |
| 1104 | - | |
| 1105 | - $service = $this->setExcludedMethods(array('promover')) | |
| 1106 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 1107 | - | |
| 1108 | - $service->expects($this->once()) | |
| 1109 | - ->method('getRegra') | |
| 1110 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 1111 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_SOMENTE_MEDIA) | |
| 1112 | - ))); | |
| 1113 | - | |
| 1114 | - $service->expects($this->once()) | |
| 1115 | - ->method('getSituacaoAluno') | |
| 1116 | - ->will($this->returnValue($situacao)); | |
| 1117 | - | |
| 1118 | - $service->expects($this->any()) | |
| 1119 | - ->method('getOption') | |
| 1120 | - ->will($this->onConsecutiveCalls(3, 1, 1)); | |
| 1121 | - | |
| 1122 | - $service->expects($this->once()) | |
| 1123 | - ->method('_updateMatricula') | |
| 1124 | - ->with(1, 1, FALSE); | |
| 1125 | - | |
| 1126 | - $service->promover(); | |
| 1127 | - } | |
| 1128 | - | |
| 1129 | - /** | |
| 1130 | - * @expectedException CoreExt_Service_Exception | |
| 1131 | - */ | |
| 1132 | - public function testPromoverComProgressaoNaoContinuadaManualNaoConfirmadaLancaExcecao() | |
| 1133 | - { | |
| 1134 | - $situacao = new stdClass(); | |
| 1135 | - $situacao->aprovado = FALSE; | |
| 1136 | - $situacao->andamento = FALSE; | |
| 1137 | - $situacao->retidoFalta = FALSE; | |
| 1138 | - $situacao->recuperacao = FALSE; | |
| 1139 | - | |
| 1140 | - $service = $this->setExcludedMethods(array('promover')) | |
| 1141 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 1142 | - | |
| 1143 | - $service->expects($this->once()) | |
| 1144 | - ->method('getRegra') | |
| 1145 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 1146 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_MANUAL) | |
| 1147 | - ))); | |
| 1148 | - | |
| 1149 | - $service->expects($this->once()) | |
| 1150 | - ->method('getSituacaoAluno') | |
| 1151 | - ->will($this->returnValue($situacao)); | |
| 1152 | - | |
| 1153 | - $service->expects($this->once()) | |
| 1154 | - ->method('getOption') | |
| 1155 | - ->with('aprovado') | |
| 1156 | - ->will($this->returnValue(3)); | |
| 1157 | - | |
| 1158 | - $service->promover(); | |
| 1159 | - } | |
| 1160 | - | |
| 1161 | - public function testPromoverComProgressaoNaoContinuadaManualConfirmada() | |
| 1162 | - { | |
| 1163 | - $situacao = new stdClass(); | |
| 1164 | - $situacao->aprovado = FALSE; | |
| 1165 | - $situacao->andamento = FALSE; | |
| 1166 | - $situacao->retidoFalta = FALSE; | |
| 1167 | - $situacao->recuperacao = FALSE; | |
| 1168 | - | |
| 1169 | - $service = $this->setExcludedMethods(array('promover')) | |
| 1170 | - ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 1171 | - | |
| 1172 | - $service->expects($this->once()) | |
| 1173 | - ->method('getRegra') | |
| 1174 | - ->will($this->returnValue(new RegraAvaliacao_Model_Regra( | |
| 1175 | - array('tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_MANUAL) | |
| 1176 | - ))); | |
| 1177 | - | |
| 1178 | - $service->expects($this->once()) | |
| 1179 | - ->method('getSituacaoAluno') | |
| 1180 | - ->will($this->returnValue($situacao)); | |
| 1181 | - | |
| 1182 | - $service->expects($this->any()) | |
| 1183 | - ->method('getOption') | |
| 1184 | - ->will($this->onConsecutiveCalls(3, 1, 1)); | |
| 1185 | - | |
| 1186 | - $service->expects($this->once()) | |
| 1187 | - ->method('_updateMatricula') | |
| 1188 | - ->with(1, 1, TRUE); | |
| 1189 | - | |
| 1190 | - $service->promover(TRUE); | |
| 1191 | - } | |
| 1192 | -} | |
| 1193 | 0 | \ No newline at end of file |
ieducar/modules/Avaliacao/_tests/Boletim/NotaNumerica_FaltaGeralTest.php
| ... | ... | @@ -1,414 +0,0 @@ |
| 1 | -<?php | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * i-Educar - Sistema de gestão escolar | |
| 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 | - * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | - * @category i-Educar | |
| 25 | - * @license @@license@@ | |
| 26 | - * @package Avaliacao | |
| 27 | - * @subpackage UnitTests | |
| 28 | - * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | - * @version $Id$ | |
| 30 | - */ | |
| 31 | - | |
| 32 | -require_once 'Avaliacao/_tests/Boletim/NotaNumerica_FaltaComponenteTest.php'; | |
| 33 | -require_once 'Avaliacao/Model/FaltaGeralDataMapper.php'; | |
| 34 | - | |
| 35 | -/** | |
| 36 | - * NotaNumerica_FaltaGeral class. | |
| 37 | - * | |
| 38 | - * Realiza testes no service Avaliacao_Service_Boletim para casos onde a regra | |
| 39 | - * de avaliação contabiliza faltas no geral. | |
| 40 | - * | |
| 41 | - * Subclassifica classe de teste para casos de faltas por componentes, | |
| 42 | - * desativando ou modificando o comportamento por herança. | |
| 43 | - * | |
| 44 | - * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 45 | - * @category i-Educar | |
| 46 | - * @license @@license@@ | |
| 47 | - * @package Avaliacao | |
| 48 | - * @subpackage UnitTests | |
| 49 | - * @since Classe disponível desde a versão 1.1.0 | |
| 50 | - * @version @@package_version@@ | |
| 51 | - */ | |
| 52 | -class Boletim_NotaNumerica_FaltaGeralTest extends Boletim_NotaNumerica_FaltaComponenteTest | |
| 53 | -{ | |
| 54 | - /** | |
| 55 | - * @see Boletim_NotaNumerica_FaltaComponenteTest#_setUpFaltaAluno() | |
| 56 | - */ | |
| 57 | - protected function _setUpFaltaAluno() | |
| 58 | - { | |
| 59 | - $faltaAluno = new Avaliacao_Model_FaltaAluno(array( | |
| 60 | - 'id' => 1, | |
| 61 | - 'matricula' => 1, | |
| 62 | - 'tipoFalta' => RegraAvaliacao_Model_TipoPresenca::GERAL | |
| 63 | - )); | |
| 64 | - | |
| 65 | - // Guarda na instância | |
| 66 | - $this->_faltaAlunoExpected = $faltaAluno; | |
| 67 | - | |
| 68 | - return $faltaAluno; | |
| 69 | - } | |
| 70 | - | |
| 71 | - /** | |
| 72 | - * @see Boletim_Common#_setUpFaltaAbstractDataMapperMock() | |
| 73 | - */ | |
| 74 | - protected function _setUpFaltaAbstractDataMapperMock() | |
| 75 | - { | |
| 76 | - // Retorno para mock de falta componentes | |
| 77 | - $faltaComponente = array(new Avaliacao_Model_FaltaGeral(array( | |
| 78 | - 'id' => 1, | |
| 79 | - 'faltaAluno' => 1, | |
| 80 | - 'quantidade' => 4, | |
| 81 | - 'etapa' => 2 | |
| 82 | - ))); | |
| 83 | - | |
| 84 | - // Configura expectativas do mock | |
| 85 | - $faltaComponenteMock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 86 | - $faltaComponenteMock->expects($this->at(0)) | |
| 87 | - ->method('findAll') | |
| 88 | - ->with(array(), array('faltaAluno' => 1)) | |
| 89 | - ->will($this->returnValue($faltaComponente)); | |
| 90 | - | |
| 91 | - return $faltaComponenteMock; | |
| 92 | - } | |
| 93 | - | |
| 94 | - public function testInstanciaLancaExcecaoCasoNumeroDeMatriculaNaoSejaInformado() | |
| 95 | - { | |
| 96 | - } | |
| 97 | - | |
| 98 | - public function testInstanciaRegraDeAvaliacaoAtravesDeUmNumeroDeMatricula() | |
| 99 | - { | |
| 100 | - } | |
| 101 | - | |
| 102 | - public function testInstanciaComponenteCurriculaAtravesDeUmNumeroDeMatricula() | |
| 103 | - { | |
| 104 | - } | |
| 105 | - | |
| 106 | - public function testInstanciaDeNotaEAdicionadaApenasUmaVez() | |
| 107 | - { | |
| 108 | - } | |
| 109 | - | |
| 110 | - public function testValidacaoDeNotaNoBoletim() | |
| 111 | - { | |
| 112 | - } | |
| 113 | - | |
| 114 | - public function testValidacaoDeFaltaPorComponenteNoBoletim() | |
| 115 | - { | |
| 116 | - } | |
| 117 | - | |
| 118 | - public function testValidacaoDeFaltaGeralNoBoletim() | |
| 119 | - { | |
| 120 | - // Não existe etapa 7, a máxima é 4 e Rc (recuperação). | |
| 121 | - $falta = new Avaliacao_Model_FaltaGeral(array('quantidade' => 5, 'etapa' => 7)); | |
| 122 | - $this->_service->addFalta($falta); | |
| 123 | - | |
| 124 | - // O aluno não cursa o componente 9 | |
| 125 | - $falta = new Avaliacao_Model_FaltaGeral(array('quantidade' => 5, 'etapa' => 7)); | |
| 126 | - $this->_service->addFalta($falta); | |
| 127 | - | |
| 128 | - // Faltas validáveis | |
| 129 | - $validatable = $this->_service->getFaltas(); | |
| 130 | - | |
| 131 | - // Inválido, irá atribuir a maior etapa possível | |
| 132 | - $falta = array_shift($validatable); | |
| 133 | - $this->assertEquals(3, $falta->etapa); | |
| 134 | - | |
| 135 | - // Inválido, irá atribuir a maior etapa possível | |
| 136 | - $falta = array_shift($validatable); | |
| 137 | - $this->assertEquals(3, $falta->etapa, 'Segunda'); | |
| 138 | - } | |
| 139 | - | |
| 140 | - public function testArredondamentoDeNota() | |
| 141 | - { | |
| 142 | - } | |
| 143 | - | |
| 144 | - public function testSalvaAsNotasNoBoletim() | |
| 145 | - { | |
| 146 | - } | |
| 147 | - | |
| 148 | - public function testSalvaAsFaltasNoBoletim() | |
| 149 | - { | |
| 150 | - $data = array( | |
| 151 | - new Avaliacao_Model_FaltaGeral(array( | |
| 152 | - 'quantidade' => 1 | |
| 153 | - )), | |
| 154 | - new Avaliacao_Model_FaltaGeral(array( | |
| 155 | - 'quantidade' => 4 | |
| 156 | - )) | |
| 157 | - ); | |
| 158 | - | |
| 159 | - // Adiciona faltas | |
| 160 | - $this->_service->addFaltas($data); | |
| 161 | - | |
| 162 | - // Adiciona a instância de falta aluno | |
| 163 | - $faltas = $this->_service->getFaltas(); | |
| 164 | - $toSave = array(); | |
| 165 | - $toSave[0] = array_shift($faltas); | |
| 166 | - $toSave[1] = array_shift($faltas); | |
| 167 | - | |
| 168 | - $toSave[0]->faltaAluno = $this->_faltaAlunoExpected; | |
| 169 | - $toSave[1]->faltaAluno = $this->_faltaAlunoExpected; | |
| 170 | - | |
| 171 | - // Usa o mesmo mock que foi criado em setUp() | |
| 172 | - $faltaComponenteMock = $this->_service->getFaltaAbstractDataMapper(); | |
| 173 | - | |
| 174 | - $faltaComponenteMock->expects($this->at(0)) | |
| 175 | - ->method('save') | |
| 176 | - ->with($toSave[0]); | |
| 177 | - | |
| 178 | - $faltaComponenteMock->expects($this->at(1)) | |
| 179 | - ->method('save') | |
| 180 | - ->with($toSave[1]); | |
| 181 | - | |
| 182 | - // Salva as faltas | |
| 183 | - $this->_service->saveFaltas(); | |
| 184 | - } | |
| 185 | - | |
| 186 | - public function testSituacaoAlunoComponentesCurricularesEmExame() | |
| 187 | - { | |
| 188 | - } | |
| 189 | - | |
| 190 | - public function testSituacaoAlunoComponentesCurricularesReprovado() | |
| 191 | - { | |
| 192 | - } | |
| 193 | - | |
| 194 | - public function testSituacaoAlunoComponentesCurricularesEmAndamento() | |
| 195 | - { | |
| 196 | - } | |
| 197 | - | |
| 198 | - public function testSituacaoAlunoComponentesCurricularesAprovado() | |
| 199 | - { | |
| 200 | - } | |
| 201 | - | |
| 202 | - public function testSituacaoAlunoFaltaComponenteCurricularReprovado() | |
| 203 | - { | |
| 204 | - } | |
| 205 | - | |
| 206 | - public function testSituacaoAlunoFaltaComponenteCurricularEmAndamento() | |
| 207 | - { | |
| 208 | - } | |
| 209 | - | |
| 210 | - public function testSituacaoAlunoFaltaComponenteCurricularAprovado() | |
| 211 | - { | |
| 212 | - } | |
| 213 | - | |
| 214 | - /** | |
| 215 | - * @depends testSalvaAsFaltasNoBoletim | |
| 216 | - */ | |
| 217 | - public function testSituacaoAlunoFaltaGeralEmAndamento() | |
| 218 | - { | |
| 219 | - $faltasGerais = array( | |
| 220 | - new Avaliacao_Model_FaltaGeral(array( | |
| 221 | - 'id' => 1, | |
| 222 | - 'faltaAluno' => 1, | |
| 223 | - 'quantidade' => 1, | |
| 224 | - 'etapa' => 1 | |
| 225 | - )), | |
| 226 | - new Avaliacao_Model_FaltaGeral(array( | |
| 227 | - 'id' => 2, | |
| 228 | - 'faltaAluno' => 1, | |
| 229 | - 'quantidade' => 4, | |
| 230 | - 'etapa' => 2 | |
| 231 | - )), | |
| 232 | - new Avaliacao_Model_FaltaGeral(array( | |
| 233 | - 'id' => 3, | |
| 234 | - 'faltaAluno' => 1, | |
| 235 | - 'quantidade' => 5, | |
| 236 | - 'etapa' => 3 | |
| 237 | - )) | |
| 238 | - ); | |
| 239 | - | |
| 240 | - $faltaGeralMock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 241 | - $faltaGeralMock->expects($this->once()) | |
| 242 | - ->method('findAll') | |
| 243 | - ->with(array(), array('faltaAluno' => 1)) | |
| 244 | - ->will($this->returnValue($faltasGerais)); | |
| 245 | - | |
| 246 | - $this->_service->setFaltaAbstractDataMapper($faltaGeralMock); | |
| 247 | - | |
| 248 | - // Objeto de retorno esperado | |
| 249 | - $expected = new stdClass(); | |
| 250 | - $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 251 | - $expected->tipoFalta = RegraAvaliacao_Model_TipoPresenca::GERAL; | |
| 252 | - $expected->cargaHoraria = 800; | |
| 253 | - $expected->cursoHoraFalta = (50 / 60); | |
| 254 | - $expected->totalFaltas = 10; | |
| 255 | - $expected->horasFaltas = (10 * $expected->cursoHoraFalta); | |
| 256 | - $expected->porcentagemFalta = (($expected->horasFaltas / $expected->cargaHoraria) * 100); | |
| 257 | - $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 258 | - $expected->porcentagemPresencaRegra = 75; | |
| 259 | - $expected->componentesCurriculares = array(); | |
| 260 | - | |
| 261 | - $presenca = $this->_service->getSituacaoFaltas(); | |
| 262 | - $this->assertEquals($expected, $presenca); | |
| 263 | - } | |
| 264 | - | |
| 265 | - /** | |
| 266 | - * @depends testSalvaAsFaltasNoBoletim | |
| 267 | - */ | |
| 268 | - public function testSituacaoAlunoFaltaGeralReprovado() | |
| 269 | - { | |
| 270 | - $faltasGerais = array( | |
| 271 | - new Avaliacao_Model_FaltaGeral(array( | |
| 272 | - 'id' => 1, | |
| 273 | - 'faltaAluno' => 1, | |
| 274 | - 'quantidade' => 125, | |
| 275 | - 'etapa' => 1 | |
| 276 | - )), | |
| 277 | - new Avaliacao_Model_FaltaGeral(array( | |
| 278 | - 'id' => 2, | |
| 279 | - 'faltaAluno' => 1, | |
| 280 | - 'quantidade' => 125, | |
| 281 | - 'etapa' => 2 | |
| 282 | - )), | |
| 283 | - new Avaliacao_Model_FaltaGeral(array( | |
| 284 | - 'id' => 3, | |
| 285 | - 'faltaAluno' => 1, | |
| 286 | - 'quantidade' => 125, | |
| 287 | - 'etapa' => 3 | |
| 288 | - )), | |
| 289 | - new Avaliacao_Model_FaltaGeral(array( | |
| 290 | - 'id' => 4, | |
| 291 | - 'faltaAluno' => 1, | |
| 292 | - 'quantidade' => 125, | |
| 293 | - 'etapa' => 4 | |
| 294 | - )) | |
| 295 | - ); | |
| 296 | - | |
| 297 | - $faltaGeralMock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 298 | - $faltaGeralMock->expects($this->once()) | |
| 299 | - ->method('findAll') | |
| 300 | - ->with(array(), array('faltaAluno' => 1)) | |
| 301 | - ->will($this->returnValue($faltasGerais)); | |
| 302 | - | |
| 303 | - $this->_service->setFaltaAbstractDataMapper($faltaGeralMock); | |
| 304 | - | |
| 305 | - // Objeto de retorno esperado | |
| 306 | - $expected = new stdClass(); | |
| 307 | - $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 308 | - $expected->tipoFalta = RegraAvaliacao_Model_TipoPresenca::GERAL; | |
| 309 | - $expected->cargaHoraria = 800; | |
| 310 | - $expected->cursoHoraFalta = (50 / 60); | |
| 311 | - $expected->totalFaltas = 500; | |
| 312 | - $expected->horasFaltas = (500 * $expected->cursoHoraFalta); | |
| 313 | - $expected->porcentagemFalta = (($expected->horasFaltas / $expected->cargaHoraria) * 100); | |
| 314 | - $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 315 | - $expected->porcentagemPresencaRegra = 75; | |
| 316 | - $expected->componentesCurriculares = array(); | |
| 317 | - | |
| 318 | - $presenca = $this->_service->getSituacaoFaltas(); | |
| 319 | - $this->assertEquals($expected, $presenca); | |
| 320 | - } | |
| 321 | - | |
| 322 | - /** | |
| 323 | - * @depends testSalvaAsFaltasNoBoletim | |
| 324 | - */ | |
| 325 | - public function testSituacaoAlunoFaltaGeralAprovado() | |
| 326 | - { | |
| 327 | - $faltasGerais = array( | |
| 328 | - new Avaliacao_Model_FaltaGeral(array( | |
| 329 | - 'id' => 1, | |
| 330 | - 'faltaAluno' => 1, | |
| 331 | - 'quantidade' => 1, | |
| 332 | - 'etapa' => 1 | |
| 333 | - )), | |
| 334 | - new Avaliacao_Model_FaltaGeral(array( | |
| 335 | - 'id' => 2, | |
| 336 | - 'faltaAluno' => 1, | |
| 337 | - 'quantidade' => 4, | |
| 338 | - 'etapa' => 2 | |
| 339 | - )), | |
| 340 | - new Avaliacao_Model_FaltaGeral(array( | |
| 341 | - 'id' => 3, | |
| 342 | - 'faltaAluno' => 1, | |
| 343 | - 'quantidade' => 5, | |
| 344 | - 'etapa' => 3 | |
| 345 | - )), | |
| 346 | - new Avaliacao_Model_FaltaGeral(array( | |
| 347 | - 'id' => 4, | |
| 348 | - 'faltaAluno' => 1, | |
| 349 | - 'quantidade' => 0, | |
| 350 | - 'etapa' => 4 | |
| 351 | - )) | |
| 352 | - ); | |
| 353 | - | |
| 354 | - $faltaGeralMock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 355 | - $faltaGeralMock->expects($this->once()) | |
| 356 | - ->method('findAll') | |
| 357 | - ->with(array(), array('faltaAluno' => 1)) | |
| 358 | - ->will($this->returnValue($faltasGerais)); | |
| 359 | - | |
| 360 | - $this->_service->setFaltaAbstractDataMapper($faltaGeralMock); | |
| 361 | - | |
| 362 | - // Objeto de retorno esperado | |
| 363 | - $expected = new stdClass(); | |
| 364 | - $expected->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 365 | - $expected->tipoFalta = RegraAvaliacao_Model_TipoPresenca::GERAL; | |
| 366 | - $expected->cargaHoraria = 800; | |
| 367 | - $expected->cursoHoraFalta = (50 / 60); | |
| 368 | - $expected->totalFaltas = 10; | |
| 369 | - $expected->horasFaltas = (10 * $expected->cursoHoraFalta); | |
| 370 | - $expected->porcentagemFalta = (($expected->horasFaltas / $expected->cargaHoraria) * 100); | |
| 371 | - $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 372 | - $expected->porcentagemPresencaRegra = 75; | |
| 373 | - $expected->componentesCurriculares = array(); | |
| 374 | - | |
| 375 | - $presenca = $this->_service->getSituacaoFaltas(); | |
| 376 | - $this->assertEquals($expected, $presenca); | |
| 377 | - } | |
| 378 | - | |
| 379 | - public function testSituacaoAluno() | |
| 380 | - { | |
| 381 | - } | |
| 382 | - | |
| 383 | - public function testPromoverLancaExcecaoComSituacaoEmAndamento() | |
| 384 | - { | |
| 385 | - } | |
| 386 | - | |
| 387 | - public function testPromoverComProgressaoContinuada() | |
| 388 | - { | |
| 389 | - } | |
| 390 | - | |
| 391 | - public function testPromoverComProgressaoNaoContinuadaMediaPresencaAprovado() | |
| 392 | - { | |
| 393 | - } | |
| 394 | - | |
| 395 | - public function testPromoverComProgressaoNaoContinuadaMediaPresencaReprovado() | |
| 396 | - { | |
| 397 | - } | |
| 398 | - | |
| 399 | - public function testPromoverComProgressaoNaoContinuadaMediaAprovado() | |
| 400 | - { | |
| 401 | - } | |
| 402 | - | |
| 403 | - public function testPromoverComProgressaoNaoContinuadaMediaReprovado() | |
| 404 | - { | |
| 405 | - } | |
| 406 | - | |
| 407 | - public function testPromoverComProgressaoNaoContinuadaManualNaoConfirmadaLancaExcecao() | |
| 408 | - { | |
| 409 | - } | |
| 410 | - | |
| 411 | - public function testPromoverComProgressaoNaoContinuadaManualConfirmada() | |
| 412 | - { | |
| 413 | - } | |
| 414 | -} | |
| 415 | 0 | \ No newline at end of file |
| ... | ... | @@ -0,0 +1,55 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage Tests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +/** | |
| 33 | + * Avaliacao_AllTests class. | |
| 34 | + * | |
| 35 | + * Arquivo de definição de suíte para o módulo. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage Tests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_AllTests extends TestCollector | |
| 46 | +{ | |
| 47 | + protected $_name = 'Suíte de testes do service Avaliacao_Service_Boletim do módulo Avaliacao'; | |
| 48 | + protected $_file = __FILE__; | |
| 49 | + | |
| 50 | + public static function suite() | |
| 51 | + { | |
| 52 | + $instance = new self; | |
| 53 | + return $instance->addDirectoryTests(); | |
| 54 | + } | |
| 55 | +} | |
| 0 | 56 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaAlunoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaAlunoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_FaltaAlunoTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + public function testCriaNovaInstanciaDeFaltaAluno() | |
| 48 | + { | |
| 49 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 50 | + | |
| 51 | + $faltaSave = clone $faltaAluno; | |
| 52 | + $faltaSave->id = NULL; | |
| 53 | + | |
| 54 | + // Configura mock para Avaliacao_Model_FaltaAlunoDataMapper | |
| 55 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaAlunoDataMapper'); | |
| 56 | + $mock->expects($this->at(0)) | |
| 57 | + ->method('findAll') | |
| 58 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 59 | + ->will($this->returnValue(array())); | |
| 60 | + | |
| 61 | + $mock->expects($this->at(1)) | |
| 62 | + ->method('save') | |
| 63 | + ->with($faltaSave) | |
| 64 | + ->will($this->returnValue(TRUE)); | |
| 65 | + | |
| 66 | + $mock->expects($this->at(2)) | |
| 67 | + ->method('findAll') | |
| 68 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 69 | + ->will($this->returnValue(array($faltaAluno))); | |
| 70 | + | |
| 71 | + $this->_setFaltaAlunoDataMapperMock($mock); | |
| 72 | + | |
| 73 | + $service = $this->_getServiceInstance(); | |
| 74 | + } | |
| 75 | +} | |
| 0 | 76 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaCommon.php
0 → 100644
| ... | ... | @@ -0,0 +1,110 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaCommon abstract class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +abstract class Avaliacao_Service_FaltaCommon extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + /** | |
| 48 | + * @return Avaliacao_Model_FaltaComponente | |
| 49 | + */ | |
| 50 | + protected abstract function _getFaltaTestInstanciaDeFaltaERegistradaApenasUmaVezNoBoletim(); | |
| 51 | + | |
| 52 | + /** | |
| 53 | + * @return Avaliacao_Model_FaltaComponente | |
| 54 | + */ | |
| 55 | + protected abstract function _getFaltaTestAdicionaFaltaNoBoletim(); | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * Realiza asserções específicas para os validadores de uma instância de | |
| 59 | + * Avaliacao_Model_FaltaAbstract | |
| 60 | + */ | |
| 61 | + protected abstract function _testAdicionaFaltaNoBoletimVerificaValidadores(Avaliacao_Model_FaltaAbstract $falta); | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * @see Avaliacao_Service_FaltaCommon#_getFaltaTestInstanciaDeFaltaERegistradaApenasUmaVezNoBoletim() | |
| 65 | + */ | |
| 66 | + public function testInstanciaDeFaltaERegistradaApenasUmaVezNoBoletim() | |
| 67 | + { | |
| 68 | + $service = $this->_getServiceInstance(); | |
| 69 | + | |
| 70 | + $falta = $this->_getFaltaTestInstanciaDeFaltaERegistradaApenasUmaVezNoBoletim(); | |
| 71 | + | |
| 72 | + // Atribuição simples | |
| 73 | + $service->addFalta($falta) | |
| 74 | + ->addFalta($falta); | |
| 75 | + | |
| 76 | + $this->assertEquals(1, count($service->getFaltas())); | |
| 77 | + | |
| 78 | + // Via atribuição em lote | |
| 79 | + $falta = clone $falta; | |
| 80 | + $service->addFaltas(array($falta, $falta, $falta)); | |
| 81 | + | |
| 82 | + $this->assertEquals(2, count($service->getFaltas())); | |
| 83 | + } | |
| 84 | + | |
| 85 | + /** | |
| 86 | + * @see Avaliacao_Service_FaltaCommon#_getFaltaTestAdicionaFaltaNoBoletim() | |
| 87 | + * @see Avaliacao_Service_FaltaCommon#_testAdicionaFaltaNoBoletimVerificaValidadores() | |
| 88 | + */ | |
| 89 | + public function testAdicionaFaltaNoBoletim() | |
| 90 | + { | |
| 91 | + $service = $this->_getServiceInstance(); | |
| 92 | + | |
| 93 | + $falta = $this->_getFaltaTestAdicionaFaltaNoBoletim(); | |
| 94 | + | |
| 95 | + $faltaOriginal = clone $falta; | |
| 96 | + $service->addFalta($falta); | |
| 97 | + | |
| 98 | + $faltas = $service->getFaltas(); | |
| 99 | + $serviceFalta = array_shift($faltas); | |
| 100 | + | |
| 101 | + // Valores declarados explicitamente, verificação explícita | |
| 102 | + $this->assertEquals($faltaOriginal->quantidade, $serviceFalta->quantidade); | |
| 103 | + | |
| 104 | + // Valores populados pelo service | |
| 105 | + $this->assertNotEquals($faltaOriginal->etapa, $serviceFalta->etapa); | |
| 106 | + | |
| 107 | + // Validadores injetados no objeto | |
| 108 | + $this->_testAdicionaFaltaNoBoletimVerificaValidadores($serviceFalta); | |
| 109 | + } | |
| 110 | +} | |
| 0 | 111 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaComponenteSituacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,515 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/FaltaSituacaoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaComponenteSituacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_FaltaComponenteSituacaoTest extends Avaliacao_Service_FaltaSituacaoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('tipoPresenca', RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + public function testSituacaoFaltasEmAndamento() | |
| 54 | + { | |
| 55 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 56 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, array()); | |
| 57 | + | |
| 58 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 59 | + | |
| 60 | + // Configura a expectativa | |
| 61 | + $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 62 | + $expected->porcentagemPresenca = 100; | |
| 63 | + | |
| 64 | + $service = $this->_getServiceInstance(); | |
| 65 | + | |
| 66 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 67 | + } | |
| 68 | + | |
| 69 | + public function testSituacaoFaltasEmAndamentoUmComponenteAprovadoDeQuatroTotais() | |
| 70 | + { | |
| 71 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 72 | + $componentes = $this->_getConfigOptions('escolaSerieDisciplina'); | |
| 73 | + | |
| 74 | + $faltas = array( | |
| 75 | + new Avaliacao_Model_FaltaComponente(array( | |
| 76 | + 'id' => 1, | |
| 77 | + 'componenteCurricular' => 1, | |
| 78 | + 'quantidade' => 5, | |
| 79 | + 'etapa' => 1 | |
| 80 | + )), | |
| 81 | + new Avaliacao_Model_FaltaComponente(array( | |
| 82 | + 'id' => 2, | |
| 83 | + 'componenteCurricular' => 1, | |
| 84 | + 'quantidade' => 5, | |
| 85 | + 'etapa' => 2 | |
| 86 | + )), | |
| 87 | + new Avaliacao_Model_FaltaComponente(array( | |
| 88 | + 'id' => 3, | |
| 89 | + 'componenteCurricular' => 1, | |
| 90 | + 'quantidade' => 5, | |
| 91 | + 'etapa' => 3 | |
| 92 | + )), | |
| 93 | + new Avaliacao_Model_FaltaComponente(array( | |
| 94 | + 'id' => 4, | |
| 95 | + 'componenteCurricular' => 1, | |
| 96 | + 'quantidade' => 5, | |
| 97 | + 'etapa' => 4 | |
| 98 | + )), | |
| 99 | + ); | |
| 100 | + | |
| 101 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); | |
| 102 | + | |
| 103 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 104 | + | |
| 105 | + // Configura a expectativa | |
| 106 | + $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 107 | + | |
| 108 | + $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); | |
| 109 | + $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); | |
| 110 | + $expected->porcentagemFalta = ($expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100); | |
| 111 | + $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 112 | + | |
| 113 | + // Configura expectativa para o componente de id '1' | |
| 114 | + $componenteHoraFalta = | |
| 115 | + array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')) * | |
| 116 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 117 | + | |
| 118 | + $componentePorcentagemFalta = | |
| 119 | + ($componenteHoraFalta / $componentes[0]['carga_horaria']) * 100; | |
| 120 | + | |
| 121 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 122 | + | |
| 123 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 124 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 125 | + $expected->componentesCurriculares[1]->horasFaltas = $componenteHoraFalta; | |
| 126 | + $expected->componentesCurriculares[1]->porcentagemFalta = $componentePorcentagemFalta; | |
| 127 | + $expected->componentesCurriculares[1]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 128 | + | |
| 129 | + $service = $this->_getServiceInstance(); | |
| 130 | + | |
| 131 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 132 | + } | |
| 133 | + | |
| 134 | + public function testSituacaoFaltasAprovado() | |
| 135 | + { | |
| 136 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 137 | + $componentes = $this->_getConfigOptions('escolaSerieDisciplina'); | |
| 138 | + | |
| 139 | + $faltas = array( | |
| 140 | + // Matemática | |
| 141 | + new Avaliacao_Model_FaltaComponente(array( | |
| 142 | + 'id' => 1, | |
| 143 | + 'componenteCurricular' => 1, | |
| 144 | + 'quantidade' => 5, | |
| 145 | + 'etapa' => 1 | |
| 146 | + )), | |
| 147 | + new Avaliacao_Model_FaltaComponente(array( | |
| 148 | + 'id' => 2, | |
| 149 | + 'componenteCurricular' => 1, | |
| 150 | + 'quantidade' => 5, | |
| 151 | + 'etapa' => 2 | |
| 152 | + )), | |
| 153 | + new Avaliacao_Model_FaltaComponente(array( | |
| 154 | + 'id' => 3, | |
| 155 | + 'componenteCurricular' => 1, | |
| 156 | + 'quantidade' => 5, | |
| 157 | + 'etapa' => 3 | |
| 158 | + )), | |
| 159 | + new Avaliacao_Model_FaltaComponente(array( | |
| 160 | + 'id' => 4, | |
| 161 | + 'componenteCurricular' => 1, | |
| 162 | + 'quantidade' => 5, | |
| 163 | + 'etapa' => 4 | |
| 164 | + )), | |
| 165 | + // Português | |
| 166 | + new Avaliacao_Model_FaltaComponente(array( | |
| 167 | + 'id' => 5, | |
| 168 | + 'componenteCurricular' => 2, | |
| 169 | + 'quantidade' => 5, | |
| 170 | + 'etapa' => 1 | |
| 171 | + )), | |
| 172 | + new Avaliacao_Model_FaltaComponente(array( | |
| 173 | + 'id' => 6, | |
| 174 | + 'componenteCurricular' => 2, | |
| 175 | + 'quantidade' => 5, | |
| 176 | + 'etapa' => 2 | |
| 177 | + )), | |
| 178 | + new Avaliacao_Model_FaltaComponente(array( | |
| 179 | + 'id' => 7, | |
| 180 | + 'componenteCurricular' => 2, | |
| 181 | + 'quantidade' => 5, | |
| 182 | + 'etapa' => 3 | |
| 183 | + )), | |
| 184 | + new Avaliacao_Model_FaltaComponente(array( | |
| 185 | + 'id' => 8, | |
| 186 | + 'componenteCurricular' => 2, | |
| 187 | + 'quantidade' => 5, | |
| 188 | + 'etapa' => 4 | |
| 189 | + )), | |
| 190 | + // Ciências | |
| 191 | + new Avaliacao_Model_FaltaComponente(array( | |
| 192 | + 'id' => 9, | |
| 193 | + 'componenteCurricular' => 3, | |
| 194 | + 'quantidade' => 5, | |
| 195 | + 'etapa' => 1 | |
| 196 | + )), | |
| 197 | + new Avaliacao_Model_FaltaComponente(array( | |
| 198 | + 'id' => 10, | |
| 199 | + 'componenteCurricular' => 3, | |
| 200 | + 'quantidade' => 5, | |
| 201 | + 'etapa' => 2 | |
| 202 | + )), | |
| 203 | + new Avaliacao_Model_FaltaComponente(array( | |
| 204 | + 'id' => 11, | |
| 205 | + 'componenteCurricular' => 3, | |
| 206 | + 'quantidade' => 5, | |
| 207 | + 'etapa' => 3 | |
| 208 | + )), | |
| 209 | + new Avaliacao_Model_FaltaComponente(array( | |
| 210 | + 'id' => 12, | |
| 211 | + 'componenteCurricular' => 3, | |
| 212 | + 'quantidade' => 5, | |
| 213 | + 'etapa' => 4 | |
| 214 | + )), | |
| 215 | + // Fisica | |
| 216 | + new Avaliacao_Model_FaltaComponente(array( | |
| 217 | + 'id' => 13, | |
| 218 | + 'componenteCurricular' => 4, | |
| 219 | + 'quantidade' => 5, | |
| 220 | + 'etapa' => 1 | |
| 221 | + )), | |
| 222 | + new Avaliacao_Model_FaltaComponente(array( | |
| 223 | + 'id' => 14, | |
| 224 | + 'componenteCurricular' => 4, | |
| 225 | + 'quantidade' => 5, | |
| 226 | + 'etapa' => 2 | |
| 227 | + )), | |
| 228 | + new Avaliacao_Model_FaltaComponente(array( | |
| 229 | + 'id' => 15, | |
| 230 | + 'componenteCurricular' => 4, | |
| 231 | + 'quantidade' => 5, | |
| 232 | + 'etapa' => 3 | |
| 233 | + )), | |
| 234 | + new Avaliacao_Model_FaltaComponente(array( | |
| 235 | + 'id' => 16, | |
| 236 | + 'componenteCurricular' => 4, | |
| 237 | + 'quantidade' => 5, | |
| 238 | + 'etapa' => 4 | |
| 239 | + )), | |
| 240 | + ); | |
| 241 | + | |
| 242 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); | |
| 243 | + | |
| 244 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 245 | + | |
| 246 | + // Configura a expectativa | |
| 247 | + $expected->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 248 | + | |
| 249 | + $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); | |
| 250 | + $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); | |
| 251 | + $expected->porcentagemFalta = ($expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100); | |
| 252 | + $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 253 | + | |
| 254 | + // Configura expectativa para o componente de id '1' | |
| 255 | + $componenteHoraFalta = | |
| 256 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 0, 4), 'id', 'quantidade')) * | |
| 257 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 258 | + | |
| 259 | + $componentePorcentagemFalta = | |
| 260 | + ($componenteHoraFalta / $componentes[0]['carga_horaria']) * 100; | |
| 261 | + | |
| 262 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 263 | + | |
| 264 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 265 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 266 | + $expected->componentesCurriculares[1]->horasFaltas = $componenteHoraFalta; | |
| 267 | + $expected->componentesCurriculares[1]->porcentagemFalta = $componentePorcentagemFalta; | |
| 268 | + $expected->componentesCurriculares[1]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 269 | + | |
| 270 | + // Configura expectativa para o componente de id '2' | |
| 271 | + $componenteHoraFalta = | |
| 272 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 4, 4), 'id', 'quantidade')) * | |
| 273 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 274 | + | |
| 275 | + $componentePorcentagemFalta = | |
| 276 | + ($componenteHoraFalta / $componentes[1]['carga_horaria']) * 100; | |
| 277 | + | |
| 278 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 279 | + | |
| 280 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 281 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 282 | + $expected->componentesCurriculares[2]->horasFaltas = $componenteHoraFalta; | |
| 283 | + $expected->componentesCurriculares[2]->porcentagemFalta = $componentePorcentagemFalta; | |
| 284 | + $expected->componentesCurriculares[2]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 285 | + | |
| 286 | + // Configura expectativa para o componente de id '3' | |
| 287 | + $componenteHoraFalta = | |
| 288 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 8, 4), 'id', 'quantidade')) * | |
| 289 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 290 | + | |
| 291 | + $componentePorcentagemFalta = | |
| 292 | + ($componenteHoraFalta / $componentes[2]['carga_horaria']) * 100; | |
| 293 | + | |
| 294 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 295 | + | |
| 296 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 297 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 298 | + $expected->componentesCurriculares[3]->horasFaltas = $componenteHoraFalta; | |
| 299 | + $expected->componentesCurriculares[3]->porcentagemFalta = $componentePorcentagemFalta; | |
| 300 | + $expected->componentesCurriculares[3]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 301 | + | |
| 302 | + // Configura expectativa para o componente de id '4' | |
| 303 | + $componenteHoraFalta = | |
| 304 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 12, 4), 'id', 'quantidade')) * | |
| 305 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 306 | + | |
| 307 | + $componentePorcentagemFalta = | |
| 308 | + ($componenteHoraFalta / $componentes[3]['carga_horaria']) * 100; | |
| 309 | + | |
| 310 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 311 | + | |
| 312 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 313 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 314 | + $expected->componentesCurriculares[4]->horasFaltas = $componenteHoraFalta; | |
| 315 | + $expected->componentesCurriculares[4]->porcentagemFalta = $componentePorcentagemFalta; | |
| 316 | + $expected->componentesCurriculares[4]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 317 | + | |
| 318 | + $service = $this->_getServiceInstance(); | |
| 319 | + | |
| 320 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 321 | + } | |
| 322 | + | |
| 323 | + /** | |
| 324 | + * Faltas para componentes funcionam usam os mesmos critérios das faltas | |
| 325 | + * gerais para a definição de aprovado ou reprovado: presença geral. | |
| 326 | + */ | |
| 327 | + public function testSituacaoFaltasReprovado() | |
| 328 | + { | |
| 329 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 330 | + $componentes = $this->_getConfigOptions('escolaSerieDisciplina'); | |
| 331 | + | |
| 332 | + $faltas = array( | |
| 333 | + // Matemática | |
| 334 | + new Avaliacao_Model_FaltaComponente(array( | |
| 335 | + 'id' => 1, | |
| 336 | + 'componenteCurricular' => 1, | |
| 337 | + 'quantidade' => 60, | |
| 338 | + 'etapa' => 1 | |
| 339 | + )), | |
| 340 | + new Avaliacao_Model_FaltaComponente(array( | |
| 341 | + 'id' => 2, | |
| 342 | + 'componenteCurricular' => 1, | |
| 343 | + 'quantidade' => 60, | |
| 344 | + 'etapa' => 2 | |
| 345 | + )), | |
| 346 | + new Avaliacao_Model_FaltaComponente(array( | |
| 347 | + 'id' => 3, | |
| 348 | + 'componenteCurricular' => 1, | |
| 349 | + 'quantidade' => 60, | |
| 350 | + 'etapa' => 3 | |
| 351 | + )), | |
| 352 | + new Avaliacao_Model_FaltaComponente(array( | |
| 353 | + 'id' => 4, | |
| 354 | + 'componenteCurricular' => 1, | |
| 355 | + 'quantidade' => 55, | |
| 356 | + 'etapa' => 4 | |
| 357 | + )), | |
| 358 | + // Português | |
| 359 | + new Avaliacao_Model_FaltaComponente(array( | |
| 360 | + 'id' => 5, | |
| 361 | + 'componenteCurricular' => 2, | |
| 362 | + 'quantidade' => 5, | |
| 363 | + 'etapa' => 1 | |
| 364 | + )), | |
| 365 | + new Avaliacao_Model_FaltaComponente(array( | |
| 366 | + 'id' => 6, | |
| 367 | + 'componenteCurricular' => 2, | |
| 368 | + 'quantidade' => 5, | |
| 369 | + 'etapa' => 2 | |
| 370 | + )), | |
| 371 | + new Avaliacao_Model_FaltaComponente(array( | |
| 372 | + 'id' => 7, | |
| 373 | + 'componenteCurricular' => 2, | |
| 374 | + 'quantidade' => 5, | |
| 375 | + 'etapa' => 3 | |
| 376 | + )), | |
| 377 | + new Avaliacao_Model_FaltaComponente(array( | |
| 378 | + 'id' => 8, | |
| 379 | + 'componenteCurricular' => 2, | |
| 380 | + 'quantidade' => 5, | |
| 381 | + 'etapa' => 4 | |
| 382 | + )), | |
| 383 | + // Ciências | |
| 384 | + new Avaliacao_Model_FaltaComponente(array( | |
| 385 | + 'id' => 9, | |
| 386 | + 'componenteCurricular' => 3, | |
| 387 | + 'quantidade' => 5, | |
| 388 | + 'etapa' => 1 | |
| 389 | + )), | |
| 390 | + new Avaliacao_Model_FaltaComponente(array( | |
| 391 | + 'id' => 10, | |
| 392 | + 'componenteCurricular' => 3, | |
| 393 | + 'quantidade' => 5, | |
| 394 | + 'etapa' => 2 | |
| 395 | + )), | |
| 396 | + new Avaliacao_Model_FaltaComponente(array( | |
| 397 | + 'id' => 11, | |
| 398 | + 'componenteCurricular' => 3, | |
| 399 | + 'quantidade' => 5, | |
| 400 | + 'etapa' => 3 | |
| 401 | + )), | |
| 402 | + new Avaliacao_Model_FaltaComponente(array( | |
| 403 | + 'id' => 12, | |
| 404 | + 'componenteCurricular' => 3, | |
| 405 | + 'quantidade' => 5, | |
| 406 | + 'etapa' => 4 | |
| 407 | + )), | |
| 408 | + // Fisica | |
| 409 | + new Avaliacao_Model_FaltaComponente(array( | |
| 410 | + 'id' => 13, | |
| 411 | + 'componenteCurricular' => 4, | |
| 412 | + 'quantidade' => 5, | |
| 413 | + 'etapa' => 1 | |
| 414 | + )), | |
| 415 | + new Avaliacao_Model_FaltaComponente(array( | |
| 416 | + 'id' => 14, | |
| 417 | + 'componenteCurricular' => 4, | |
| 418 | + 'quantidade' => 5, | |
| 419 | + 'etapa' => 2 | |
| 420 | + )), | |
| 421 | + new Avaliacao_Model_FaltaComponente(array( | |
| 422 | + 'id' => 15, | |
| 423 | + 'componenteCurricular' => 4, | |
| 424 | + 'quantidade' => 5, | |
| 425 | + 'etapa' => 3 | |
| 426 | + )), | |
| 427 | + new Avaliacao_Model_FaltaComponente(array( | |
| 428 | + 'id' => 16, | |
| 429 | + 'componenteCurricular' => 4, | |
| 430 | + 'quantidade' => 5, | |
| 431 | + 'etapa' => 4 | |
| 432 | + )), | |
| 433 | + ); | |
| 434 | + | |
| 435 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); | |
| 436 | + | |
| 437 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 438 | + | |
| 439 | + // Configura a expectativa | |
| 440 | + $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 441 | + | |
| 442 | + $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); | |
| 443 | + $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); | |
| 444 | + $expected->porcentagemFalta = ($expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100); | |
| 445 | + $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 446 | + | |
| 447 | + // Configura expectativa para o componente de id '1' | |
| 448 | + $componenteHoraFalta = | |
| 449 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 0, 4), 'id', 'quantidade')) * | |
| 450 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 451 | + | |
| 452 | + $componentePorcentagemFalta = | |
| 453 | + ($componenteHoraFalta / $componentes[0]['carga_horaria']) * 100; | |
| 454 | + | |
| 455 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 456 | + | |
| 457 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 458 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 459 | + $expected->componentesCurriculares[1]->horasFaltas = $componenteHoraFalta; | |
| 460 | + $expected->componentesCurriculares[1]->porcentagemFalta = $componentePorcentagemFalta; | |
| 461 | + $expected->componentesCurriculares[1]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 462 | + | |
| 463 | + // Configura expectativa para o componente de id '2' | |
| 464 | + $componenteHoraFalta = | |
| 465 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 4, 4), 'id', 'quantidade')) * | |
| 466 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 467 | + | |
| 468 | + $componentePorcentagemFalta = | |
| 469 | + ($componenteHoraFalta / $componentes[1]['carga_horaria']) * 100; | |
| 470 | + | |
| 471 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 472 | + | |
| 473 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 474 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 475 | + $expected->componentesCurriculares[2]->horasFaltas = $componenteHoraFalta; | |
| 476 | + $expected->componentesCurriculares[2]->porcentagemFalta = $componentePorcentagemFalta; | |
| 477 | + $expected->componentesCurriculares[2]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 478 | + | |
| 479 | + // Configura expectativa para o componente de id '3' | |
| 480 | + $componenteHoraFalta = | |
| 481 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 8, 4), 'id', 'quantidade')) * | |
| 482 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 483 | + | |
| 484 | + $componentePorcentagemFalta = | |
| 485 | + ($componenteHoraFalta / $componentes[2]['carga_horaria']) * 100; | |
| 486 | + | |
| 487 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 488 | + | |
| 489 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 490 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 491 | + $expected->componentesCurriculares[3]->horasFaltas = $componenteHoraFalta; | |
| 492 | + $expected->componentesCurriculares[3]->porcentagemFalta = $componentePorcentagemFalta; | |
| 493 | + $expected->componentesCurriculares[3]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 494 | + | |
| 495 | + // Configura expectativa para o componente de id '4' | |
| 496 | + $componenteHoraFalta = | |
| 497 | + array_sum(CoreExt_Entity::entityFilterAttr(array_slice($faltas, 12, 4), 'id', 'quantidade')) * | |
| 498 | + $this->_getConfigOption('curso', 'hora_falta'); | |
| 499 | + | |
| 500 | + $componentePorcentagemFalta = | |
| 501 | + ($componenteHoraFalta / $componentes[3]['carga_horaria']) * 100; | |
| 502 | + | |
| 503 | + $componentePorcentagemPresenca = 100 - $componentePorcentagemFalta; | |
| 504 | + | |
| 505 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 506 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 507 | + $expected->componentesCurriculares[4]->horasFaltas = $componenteHoraFalta; | |
| 508 | + $expected->componentesCurriculares[4]->porcentagemFalta = $componentePorcentagemFalta; | |
| 509 | + $expected->componentesCurriculares[4]->porcentagemPresenca = $componentePorcentagemPresenca; | |
| 510 | + | |
| 511 | + $service = $this->_getServiceInstance(); | |
| 512 | + | |
| 513 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 514 | + } | |
| 515 | +} | |
| 0 | 516 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaComponenteTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,291 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/FaltaCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaComponenteTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_FaltaComponenteTest extends Avaliacao_Service_FaltaCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('tipoPresenca', RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + protected function _getFaltaTestInstanciaDeFaltaERegistradaApenasUmaVezNoBoletim() | |
| 54 | + { | |
| 55 | + return new Avaliacao_Model_FaltaComponente(array( | |
| 56 | + 'componenteCurricular' => 1, | |
| 57 | + 'quantidade' => 5 | |
| 58 | + )); | |
| 59 | + } | |
| 60 | + | |
| 61 | + protected function _getFaltaTestAdicionaFaltaNoBoletim() | |
| 62 | + { | |
| 63 | + return new Avaliacao_Model_FaltaComponente(array( | |
| 64 | + 'componenteCurricular' => 1, | |
| 65 | + 'quantidade' => 10 | |
| 66 | + )); | |
| 67 | + } | |
| 68 | + | |
| 69 | + protected function _testAdicionaFaltaNoBoletimVerificaValidadores(Avaliacao_Model_FaltaAbstract $falta) | |
| 70 | + { | |
| 71 | + $this->assertEquals(1, $falta->get('componenteCurricular')); | |
| 72 | + $this->assertEquals(1, $falta->etapa); | |
| 73 | + $this->assertEquals(10, $falta->quantidade); | |
| 74 | + | |
| 75 | + $validators = $falta->getValidatorCollection(); | |
| 76 | + $this->assertType('CoreExt_Validate_Choice', $validators['componenteCurricular']); | |
| 77 | + $this->assertType('CoreExt_Validate_Choice', $validators['etapa']); | |
| 78 | + | |
| 79 | + // Opções dos validadores | |
| 80 | + | |
| 81 | + // Componentes curriculares existentes para o aluno | |
| 82 | + $this->assertEquals( | |
| 83 | + array_keys($this->_getConfigOptions('componenteCurricular')), | |
| 84 | + array_values($validators['componenteCurricular']->getOption('choices')) | |
| 85 | + ); | |
| 86 | + | |
| 87 | + // Etapas possíveis para o lançamento de nota | |
| 88 | + $this->assertEquals( | |
| 89 | + array_merge(range(1, count($this->_getConfigOptions('anoLetivoModulo'))), array('Rc')), | |
| 90 | + $validators['etapa']->getOption('choices') | |
| 91 | + ); | |
| 92 | + } | |
| 93 | + | |
| 94 | + /** | |
| 95 | + * Testa o service adicionando faltas de apenas um componente curricular, | |
| 96 | + * para todas as etapas regulares (1 a 4). | |
| 97 | + */ | |
| 98 | + public function testSalvarFaltasDeUmComponenteCurricularNoBoletim() | |
| 99 | + { | |
| 100 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 101 | + | |
| 102 | + $faltas = array( | |
| 103 | + new Avaliacao_Model_FaltaComponente(array( | |
| 104 | + 'componenteCurricular' => 1, | |
| 105 | + 'quantidade' => 7, | |
| 106 | + 'etapa' => 1 | |
| 107 | + )), | |
| 108 | + new Avaliacao_Model_FaltaComponente(array( | |
| 109 | + 'componenteCurricular' => 1, | |
| 110 | + 'quantidade' => 9, | |
| 111 | + 'etapa' => 2 | |
| 112 | + )), | |
| 113 | + new Avaliacao_Model_FaltaComponente(array( | |
| 114 | + 'componenteCurricular' => 1, | |
| 115 | + 'quantidade' => 8, | |
| 116 | + 'etapa' => 3 | |
| 117 | + )), | |
| 118 | + new Avaliacao_Model_FaltaComponente(array( | |
| 119 | + 'componenteCurricular' => 1, | |
| 120 | + 'quantidade' => 8, | |
| 121 | + 'etapa' => 4 | |
| 122 | + )), | |
| 123 | + ); | |
| 124 | + | |
| 125 | + // Configura mock para Avaliacao_Model_FaltaComponenteDataMapper | |
| 126 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 127 | + | |
| 128 | + $mock->expects($this->at(0)) | |
| 129 | + ->method('findAll') | |
| 130 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 131 | + ->will($this->returnValue(array())); | |
| 132 | + | |
| 133 | + $mock->expects($this->at(1)) | |
| 134 | + ->method('save') | |
| 135 | + ->with($faltas[0]) | |
| 136 | + ->will($this->returnValue(TRUE)); | |
| 137 | + | |
| 138 | + $mock->expects($this->at(2)) | |
| 139 | + ->method('save') | |
| 140 | + ->with($faltas[1]) | |
| 141 | + ->will($this->returnValue(TRUE)); | |
| 142 | + | |
| 143 | + $mock->expects($this->at(3)) | |
| 144 | + ->method('save') | |
| 145 | + ->with($faltas[2]) | |
| 146 | + ->will($this->returnValue(TRUE)); | |
| 147 | + | |
| 148 | + $mock->expects($this->at(4)) | |
| 149 | + ->method('save') | |
| 150 | + ->with($faltas[3]) | |
| 151 | + ->will($this->returnValue(TRUE)); | |
| 152 | + | |
| 153 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 154 | + | |
| 155 | + $service = $this->_getServiceInstance(); | |
| 156 | + | |
| 157 | + $service->addFaltas($faltas); | |
| 158 | + $service->saveFaltas(); | |
| 159 | + } | |
| 160 | + | |
| 161 | + /** | |
| 162 | + * Testa o service adicionando novas faltas para um componente curricular, | |
| 163 | + * que inclusive já tem a falta lançada para a segunda etapa. | |
| 164 | + */ | |
| 165 | + public function testSalvasFaltasDeUmComponenteComEtapasLancadas() | |
| 166 | + { | |
| 167 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 168 | + | |
| 169 | + $faltas = array( | |
| 170 | + new Avaliacao_Model_FaltaComponente(array( | |
| 171 | + 'componenteCurricular' => 1, | |
| 172 | + 'quantidade' => 7, | |
| 173 | + 'etapa' => 2 | |
| 174 | + )), | |
| 175 | + new Avaliacao_Model_FaltaComponente(array( | |
| 176 | + 'componenteCurricular' => 1, | |
| 177 | + 'quantidade' => 9, | |
| 178 | + 'etapa' => 3 | |
| 179 | + )) | |
| 180 | + ); | |
| 181 | + | |
| 182 | + $faltasPersistidas = array( | |
| 183 | + new Avaliacao_Model_FaltaComponente(array( | |
| 184 | + 'id' => 1, | |
| 185 | + 'faltaAluno' => $faltaAluno->id, | |
| 186 | + 'componenteCurricular' => 1, | |
| 187 | + 'quantidade' => 8, | |
| 188 | + 'etapa' => 1 | |
| 189 | + )), | |
| 190 | + new Avaliacao_Model_FaltaComponente(array( | |
| 191 | + 'id' => 2, | |
| 192 | + 'faltaAluno' => $faltaAluno->id, | |
| 193 | + 'componenteCurricular' => 1, | |
| 194 | + 'quantidade' => 11, | |
| 195 | + 'etapa' => 2 | |
| 196 | + )) | |
| 197 | + ); | |
| 198 | + | |
| 199 | + // Configura mock para Avaliacao_Model_FaltaComponenteDataMapper | |
| 200 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 201 | + | |
| 202 | + $mock->expects($this->at(0)) | |
| 203 | + ->method('findAll') | |
| 204 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 205 | + ->will($this->returnValue($faltasPersistidas)); | |
| 206 | + | |
| 207 | + $mock->expects($this->at(1)) | |
| 208 | + ->method('save') | |
| 209 | + ->with($faltas[0]) | |
| 210 | + ->will($this->returnValue(TRUE)); | |
| 211 | + | |
| 212 | + $mock->expects($this->at(2)) | |
| 213 | + ->method('save') | |
| 214 | + ->with($faltas[1]) | |
| 215 | + ->will($this->returnValue(TRUE)); | |
| 216 | + | |
| 217 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 218 | + | |
| 219 | + $service = $this->_getServiceInstance(); | |
| 220 | + $service->addFaltas($faltas); | |
| 221 | + $service->saveFaltas(); | |
| 222 | + } | |
| 223 | + | |
| 224 | + public function testSalvasFaltasDeUmComponenteEAtualizadaEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadas() | |
| 225 | + { | |
| 226 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 227 | + | |
| 228 | + $faltas = array( | |
| 229 | + new Avaliacao_Model_FaltaComponente(array( | |
| 230 | + 'componenteCurricular' => 1, | |
| 231 | + 'quantidade' => 7, | |
| 232 | + 'etapa' => 2 | |
| 233 | + )), | |
| 234 | + // Etapa omitida, será atribuída a etapa '3' | |
| 235 | + new Avaliacao_Model_FaltaComponente(array( | |
| 236 | + 'componenteCurricular' => 1, | |
| 237 | + 'quantidade' => 9 | |
| 238 | + )) | |
| 239 | + ); | |
| 240 | + | |
| 241 | + $faltasPersistidas = array( | |
| 242 | + new Avaliacao_Model_FaltaComponente(array( | |
| 243 | + 'componenteCurricular' => 1, | |
| 244 | + 'id' => 1, | |
| 245 | + 'faltaAluno' => $faltaAluno->id, | |
| 246 | + 'quantidade' => 8, | |
| 247 | + 'etapa' => 1 | |
| 248 | + )), | |
| 249 | + new Avaliacao_Model_FaltaComponente(array( | |
| 250 | + 'componenteCurricular' => 1, | |
| 251 | + 'id' => 2, | |
| 252 | + 'faltaAluno' => $faltaAluno->id, | |
| 253 | + 'quantidade' => 11, | |
| 254 | + 'etapa' => 2 | |
| 255 | + )) | |
| 256 | + ); | |
| 257 | + | |
| 258 | + // Configura mock para Avaliacao_Model_FaltaComponenteDataMapper | |
| 259 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaComponenteDataMapper'); | |
| 260 | + | |
| 261 | + $mock->expects($this->at(0)) | |
| 262 | + ->method('findAll') | |
| 263 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 264 | + ->will($this->returnValue($faltasPersistidas)); | |
| 265 | + | |
| 266 | + $mock->expects($this->at(1)) | |
| 267 | + ->method('save') | |
| 268 | + ->with($faltas[0]) | |
| 269 | + ->will($this->returnValue(TRUE)); | |
| 270 | + | |
| 271 | + $mock->expects($this->at(2)) | |
| 272 | + ->method('save') | |
| 273 | + ->with($faltas[1]) | |
| 274 | + ->will($this->returnValue(TRUE)); | |
| 275 | + | |
| 276 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 277 | + | |
| 278 | + $service = $this->_getServiceInstance(); | |
| 279 | + $service->addFaltas($faltas); | |
| 280 | + $service->saveFaltas(); | |
| 281 | + | |
| 282 | + $faltas = $service->getFaltas(); | |
| 283 | + | |
| 284 | + $falta = array_shift($faltas); | |
| 285 | + $this->assertEquals(2, $falta->etapa); | |
| 286 | + | |
| 287 | + // Etapa atribuída automaticamente | |
| 288 | + $falta = array_shift($faltas); | |
| 289 | + $this->assertEquals(3, $falta->etapa); | |
| 290 | + } | |
| 291 | +} | |
| 0 | 292 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaGeralSituacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,156 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/FaltaSituacaoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaGeralSituacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_FaltaGeralSituacaoTest extends Avaliacao_Service_FaltaSituacaoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('tipoPresenca', RegraAvaliacao_Model_TipoPresenca::GERAL); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + public function testSituacaoFaltasEmAndamento() | |
| 54 | + { | |
| 55 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 56 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, array()); | |
| 57 | + | |
| 58 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 59 | + | |
| 60 | + // Configura a expectativa | |
| 61 | + $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 62 | + $expected->porcentagemPresenca = 100; | |
| 63 | + | |
| 64 | + $service = $this->_getServiceInstance(); | |
| 65 | + | |
| 66 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 67 | + } | |
| 68 | + | |
| 69 | + public function testSituacaoFaltasAprovado() | |
| 70 | + { | |
| 71 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 72 | + | |
| 73 | + $faltas = array( | |
| 74 | + new Avaliacao_Model_FaltaGeral(array( | |
| 75 | + 'id' => 1, | |
| 76 | + 'quantidade' => 5, | |
| 77 | + 'etapa' => 1 | |
| 78 | + )), | |
| 79 | + new Avaliacao_Model_FaltaGeral(array( | |
| 80 | + 'id' => 2, | |
| 81 | + 'quantidade' => 5, | |
| 82 | + 'etapa' => 2 | |
| 83 | + )), | |
| 84 | + new Avaliacao_Model_FaltaGeral(array( | |
| 85 | + 'id' => 3, | |
| 86 | + 'quantidade' => 5, | |
| 87 | + 'etapa' => 3 | |
| 88 | + )), | |
| 89 | + new Avaliacao_Model_FaltaGeral(array( | |
| 90 | + 'id' => 4, | |
| 91 | + 'quantidade' => 5, | |
| 92 | + 'etapa' => 4 | |
| 93 | + )), | |
| 94 | + ); | |
| 95 | + | |
| 96 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); | |
| 97 | + | |
| 98 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 99 | + | |
| 100 | + // Configura a expectativa | |
| 101 | + $expected->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 102 | + | |
| 103 | + $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); | |
| 104 | + $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); | |
| 105 | + $expected->porcentagemFalta = ($expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100); | |
| 106 | + $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 107 | + | |
| 108 | + $service = $this->_getServiceInstance(); | |
| 109 | + | |
| 110 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 111 | + } | |
| 112 | + | |
| 113 | + public function testSituacaoFaltasReprovado() | |
| 114 | + { | |
| 115 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 116 | + | |
| 117 | + $faltas = array( | |
| 118 | + new Avaliacao_Model_FaltaGeral(array( | |
| 119 | + 'id' => 1, | |
| 120 | + 'quantidade' => 180, | |
| 121 | + 'etapa' => 1 | |
| 122 | + )), | |
| 123 | + new Avaliacao_Model_FaltaGeral(array( | |
| 124 | + 'id' => 2, | |
| 125 | + 'quantidade' => 180, | |
| 126 | + 'etapa' => 2 | |
| 127 | + )), | |
| 128 | + new Avaliacao_Model_FaltaGeral(array( | |
| 129 | + 'id' => 3, | |
| 130 | + 'quantidade' => 180, | |
| 131 | + 'etapa' => 3 | |
| 132 | + )), | |
| 133 | + new Avaliacao_Model_FaltaGeral(array( | |
| 134 | + 'id' => 4, | |
| 135 | + 'quantidade' => 180, | |
| 136 | + 'etapa' => 4 | |
| 137 | + )), | |
| 138 | + ); | |
| 139 | + | |
| 140 | + $this->_setUpFaltaAbstractDataMapperMock($faltaAluno, $faltas); | |
| 141 | + | |
| 142 | + $expected = $this->_getExpectedSituacaoFaltas(); | |
| 143 | + | |
| 144 | + // Configura a expectativa | |
| 145 | + $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 146 | + | |
| 147 | + $expected->totalFaltas = array_sum(CoreExt_Entity::entityFilterAttr($faltas, 'id', 'quantidade')); | |
| 148 | + $expected->horasFaltas = $expected->totalFaltas * $this->_getConfigOption('curso', 'hora_falta'); | |
| 149 | + $expected->porcentagemFalta = ($expected->horasFaltas / $this->_getConfigOption('serie', 'carga_horaria') * 100); | |
| 150 | + $expected->porcentagemPresenca = 100 - $expected->porcentagemFalta; | |
| 151 | + | |
| 152 | + $service = $this->_getServiceInstance(); | |
| 153 | + | |
| 154 | + $this->assertEquals($expected, $service->getSituacaoFaltas()); | |
| 155 | + } | |
| 156 | +} | |
| 0 | 157 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaGeralTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,269 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/FaltaCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaGeralTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_FaltaGeralTest extends Avaliacao_Service_FaltaCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('tipoPresenca', RegraAvaliacao_Model_TipoPresenca::GERAL); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + protected function _getFaltaTestInstanciaDeFaltaERegistradaApenasUmaVezNoBoletim() | |
| 54 | + { | |
| 55 | + return new Avaliacao_Model_FaltaGeral(array( | |
| 56 | + 'quantidade' => 10 | |
| 57 | + )); | |
| 58 | + } | |
| 59 | + | |
| 60 | + protected function _getFaltaTestAdicionaFaltaNoBoletim() | |
| 61 | + { | |
| 62 | + return new Avaliacao_Model_FaltaComponente(array( | |
| 63 | + 'quantidade' => 10 | |
| 64 | + )); | |
| 65 | + } | |
| 66 | + | |
| 67 | + protected function _testAdicionaFaltaNoBoletimVerificaValidadores(Avaliacao_Model_FaltaAbstract $falta) | |
| 68 | + { | |
| 69 | + $this->assertEquals(1, $falta->etapa); | |
| 70 | + $this->assertEquals(10, $falta->quantidade); | |
| 71 | + | |
| 72 | + $validators = $falta->getValidatorCollection(); | |
| 73 | + $this->assertType('CoreExt_Validate_Choice', $validators['etapa']); | |
| 74 | + $this->assertFalse(isset($validators['componenteCurricular'])); | |
| 75 | + | |
| 76 | + // Opções dos validadores | |
| 77 | + | |
| 78 | + // Etapas possíveis para o lançamento de nota | |
| 79 | + $this->assertEquals( | |
| 80 | + array_merge(range(1, count($this->_getConfigOptions('anoLetivoModulo'))), array('Rc')), | |
| 81 | + $validators['etapa']->getOption('choices') | |
| 82 | + ); | |
| 83 | + } | |
| 84 | + | |
| 85 | + /** | |
| 86 | + * Testa o service adicionando faltas de apenas um componente curricular, | |
| 87 | + * para todas as etapas regulares (1 a 4). | |
| 88 | + */ | |
| 89 | + public function testSalvarFaltasNoBoletim() | |
| 90 | + { | |
| 91 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 92 | + | |
| 93 | + $faltas = array( | |
| 94 | + new Avaliacao_Model_FaltaGeral(array( | |
| 95 | + 'quantidade' => 7, | |
| 96 | + 'etapa' => 1 | |
| 97 | + )), | |
| 98 | + new Avaliacao_Model_FaltaGeral(array( | |
| 99 | + 'quantidade' => 11, | |
| 100 | + 'etapa' => 2 | |
| 101 | + )), | |
| 102 | + new Avaliacao_Model_FaltaGeral(array( | |
| 103 | + 'quantidade' => 8, | |
| 104 | + 'etapa' => 3 | |
| 105 | + )), | |
| 106 | + new Avaliacao_Model_FaltaGeral(array( | |
| 107 | + 'quantidade' => 8, | |
| 108 | + 'etapa' => 4 | |
| 109 | + )), | |
| 110 | + ); | |
| 111 | + | |
| 112 | + // Configura mock para Avaliacao_Model_FaltaGeralDataMapper | |
| 113 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 114 | + | |
| 115 | + $mock->expects($this->at(0)) | |
| 116 | + ->method('findAll') | |
| 117 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 118 | + ->will($this->returnValue(array())); | |
| 119 | + | |
| 120 | + $mock->expects($this->at(1)) | |
| 121 | + ->method('save') | |
| 122 | + ->with($faltas[0]) | |
| 123 | + ->will($this->returnValue(TRUE)); | |
| 124 | + | |
| 125 | + $mock->expects($this->at(2)) | |
| 126 | + ->method('save') | |
| 127 | + ->with($faltas[1]) | |
| 128 | + ->will($this->returnValue(TRUE)); | |
| 129 | + | |
| 130 | + $mock->expects($this->at(3)) | |
| 131 | + ->method('save') | |
| 132 | + ->with($faltas[2]) | |
| 133 | + ->will($this->returnValue(TRUE)); | |
| 134 | + | |
| 135 | + $mock->expects($this->at(4)) | |
| 136 | + ->method('save') | |
| 137 | + ->with($faltas[3]) | |
| 138 | + ->will($this->returnValue(TRUE)); | |
| 139 | + | |
| 140 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 141 | + | |
| 142 | + $service = $this->_getServiceInstance(); | |
| 143 | + $service->addFaltas($faltas); | |
| 144 | + $service->saveFaltas(); | |
| 145 | + } | |
| 146 | + | |
| 147 | + /** | |
| 148 | + * Testa o service adicionando novas faltas para um componente curricular, | |
| 149 | + * que inclusive já tem a falta lançada para a segunda etapa. | |
| 150 | + */ | |
| 151 | + public function testSalvasFaltasNoBoletimComEtapasLancadas() | |
| 152 | + { | |
| 153 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 154 | + | |
| 155 | + $faltas = array( | |
| 156 | + new Avaliacao_Model_FaltaGeral(array( | |
| 157 | + 'quantidade' => 7, | |
| 158 | + 'etapa' => 2 | |
| 159 | + )), | |
| 160 | + new Avaliacao_Model_FaltaGeral(array( | |
| 161 | + 'quantidade' => 9, | |
| 162 | + 'etapa' => 3 | |
| 163 | + )) | |
| 164 | + ); | |
| 165 | + | |
| 166 | + $faltasPersistidas = array( | |
| 167 | + new Avaliacao_Model_FaltaGeral(array( | |
| 168 | + 'id' => 1, | |
| 169 | + 'faltaAluno' => $faltaAluno->id, | |
| 170 | + 'quantidade' => 8, | |
| 171 | + 'etapa' => 1 | |
| 172 | + )), | |
| 173 | + new Avaliacao_Model_FaltaGeral(array( | |
| 174 | + 'id' => 2, | |
| 175 | + 'faltaAluno' => $faltaAluno->id, | |
| 176 | + 'quantidade' => 11, | |
| 177 | + 'etapa' => 2 | |
| 178 | + )) | |
| 179 | + ); | |
| 180 | + | |
| 181 | + // Configura mock para Avaliacao_Model_FaltaGeralDataMapper | |
| 182 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 183 | + | |
| 184 | + $mock->expects($this->at(0)) | |
| 185 | + ->method('findAll') | |
| 186 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 187 | + ->will($this->returnValue($faltasPersistidas)); | |
| 188 | + | |
| 189 | + $mock->expects($this->at(1)) | |
| 190 | + ->method('save') | |
| 191 | + ->with($faltas[0]) | |
| 192 | + ->will($this->returnValue(TRUE)); | |
| 193 | + | |
| 194 | + $mock->expects($this->at(2)) | |
| 195 | + ->method('save') | |
| 196 | + ->with($faltas[1]) | |
| 197 | + ->will($this->returnValue(TRUE)); | |
| 198 | + | |
| 199 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 200 | + | |
| 201 | + $service = $this->_getServiceInstance(); | |
| 202 | + $service->addFaltas($faltas); | |
| 203 | + $service->saveFaltas(); | |
| 204 | + } | |
| 205 | + | |
| 206 | + public function testSalvasFaltasAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadas() | |
| 207 | + { | |
| 208 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 209 | + | |
| 210 | + $faltas = array( | |
| 211 | + new Avaliacao_Model_FaltaGeral(array( | |
| 212 | + 'quantidade' => 7, | |
| 213 | + 'etapa' => 2 | |
| 214 | + )), | |
| 215 | + // Etapa omitida, será atribuída a etapa '3' | |
| 216 | + new Avaliacao_Model_FaltaGeral(array( | |
| 217 | + 'quantidade' => 9 | |
| 218 | + )) | |
| 219 | + ); | |
| 220 | + | |
| 221 | + $faltasPersistidas = array( | |
| 222 | + new Avaliacao_Model_FaltaGeral(array( | |
| 223 | + 'id' => 1, | |
| 224 | + 'faltaAluno' => $faltaAluno->id, | |
| 225 | + 'quantidade' => 8, | |
| 226 | + 'etapa' => 1 | |
| 227 | + )), | |
| 228 | + new Avaliacao_Model_FaltaGeral(array( | |
| 229 | + 'id' => 2, | |
| 230 | + 'faltaAluno' => $faltaAluno->id, | |
| 231 | + 'quantidade' => 11, | |
| 232 | + 'etapa' => 2 | |
| 233 | + )) | |
| 234 | + ); | |
| 235 | + | |
| 236 | + // Configura mock para Avaliacao_Model_FaltaGeralDataMapper | |
| 237 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaGeralDataMapper'); | |
| 238 | + | |
| 239 | + $mock->expects($this->at(0)) | |
| 240 | + ->method('findAll') | |
| 241 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 242 | + ->will($this->returnValue($faltasPersistidas)); | |
| 243 | + | |
| 244 | + $mock->expects($this->at(1)) | |
| 245 | + ->method('save') | |
| 246 | + ->with($faltas[0]) | |
| 247 | + ->will($this->returnValue(TRUE)); | |
| 248 | + | |
| 249 | + $mock->expects($this->at(2)) | |
| 250 | + ->method('save') | |
| 251 | + ->with($faltas[1]) | |
| 252 | + ->will($this->returnValue(TRUE)); | |
| 253 | + | |
| 254 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 255 | + | |
| 256 | + $service = $this->_getServiceInstance(); | |
| 257 | + $service->addFaltas($faltas); | |
| 258 | + $service->saveFaltas(); | |
| 259 | + | |
| 260 | + $faltas = $service->getFaltas(); | |
| 261 | + | |
| 262 | + $falta = array_shift($faltas); | |
| 263 | + $this->assertEquals(2, $falta->etapa); | |
| 264 | + | |
| 265 | + // Etapa atribuída automaticamente | |
| 266 | + $falta = array_shift($faltas); | |
| 267 | + $this->assertEquals(3, $falta->etapa); | |
| 268 | + } | |
| 269 | +} | |
| 0 | 270 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/FaltaSituacaoCommon.php
0 → 100644
| ... | ... | @@ -0,0 +1,91 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_FaltaSituacaoCommon class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_FaltaSituacaoCommon extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + protected function _setUpFaltaAbstractDataMapperMock( | |
| 48 | + Avaliacao_Model_FaltaAluno $faltaAluno, array $faltas) | |
| 49 | + { | |
| 50 | + // Configura mock para notas | |
| 51 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaAbstractDataMapper'); | |
| 52 | + | |
| 53 | + $mock->expects($this->any()) | |
| 54 | + ->method('findAll') | |
| 55 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 56 | + ->will($this->returnValue($faltas)); | |
| 57 | + | |
| 58 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 59 | + } | |
| 60 | + | |
| 61 | + protected function _getExpectedSituacaoFaltas() | |
| 62 | + { | |
| 63 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 64 | + | |
| 65 | + // Valores retornados pelas instâncias de classes legadas | |
| 66 | + $cursoHoraFalta = $this->_getConfigOption('curso', 'hora_falta'); | |
| 67 | + $serieCargaHoraria = $this->_getConfigOption('serie', 'carga_horaria'); | |
| 68 | + | |
| 69 | + // Porcentagem configurada na regra | |
| 70 | + $porcentagemPresenca = $this->_getRegraOption('porcentagemPresenca'); | |
| 71 | + | |
| 72 | + $expected = new stdClass(); | |
| 73 | + $expected->situacao = 0; | |
| 74 | + $expected->tipoFalta = 0; | |
| 75 | + $expected->cargaHoraria = 0; | |
| 76 | + $expected->cursoHoraFalta = 0; | |
| 77 | + $expected->totalFaltas = 0; | |
| 78 | + $expected->horasFaltas = 0; | |
| 79 | + $expected->porcentagemFalta = 0; | |
| 80 | + $expected->porcentagemPresenca = 0; | |
| 81 | + $expected->porcentagemPresencaRegra = 0; | |
| 82 | + $expected->componentesCurriculares = array(); | |
| 83 | + | |
| 84 | + $expected->tipoFalta = $faltaAluno->get('tipoFalta'); | |
| 85 | + $expected->cursoHoraFalta = $cursoHoraFalta; | |
| 86 | + $expected->porcentagemPresencaRegra = $porcentagemPresenca; | |
| 87 | + $expected->cargaHoraria = $serieCargaHoraria; | |
| 88 | + | |
| 89 | + return $expected; | |
| 90 | + } | |
| 91 | +} | |
| 0 | 92 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/InicializacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,99 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_InicializacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_InicializacaoTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + /** | |
| 48 | + * @expectedException CoreExt_Service_Exception | |
| 49 | + */ | |
| 50 | + public function testInstanciaLancaExcecaoCasoCodigoDeMatriculaNaoSejaInformado() | |
| 51 | + { | |
| 52 | + new Avaliacao_Service_Boletim(); | |
| 53 | + } | |
| 54 | + | |
| 55 | + /** | |
| 56 | + * @expectedException InvalidArgumentException | |
| 57 | + */ | |
| 58 | + public function testInstanciaLancaExcecaoComOpcaoNaoAceitaPelaClasse() | |
| 59 | + { | |
| 60 | + new Avaliacao_Service_Boletim(array('matricula' => 1, 'foo' => 'bar')); | |
| 61 | + } | |
| 62 | + | |
| 63 | + public function testDadosDeMatriculaInicializados() | |
| 64 | + { | |
| 65 | + $service = $this->_getServiceInstance(); | |
| 66 | + $options = $service->getOptions(); | |
| 67 | + | |
| 68 | + $this->assertEquals($this->_getConfigOption('usuario', 'cod_usuario'), | |
| 69 | + $options['usuario']); | |
| 70 | + | |
| 71 | + $this->assertEquals($this->_getConfigOption('matricula', 'aprovado'), | |
| 72 | + $options['aprovado']); | |
| 73 | + | |
| 74 | + $this->assertEquals($this->_getConfigOption('curso', 'hora_falta'), | |
| 75 | + $options['cursoHoraFalta']); | |
| 76 | + | |
| 77 | + $this->assertEquals($this->_getConfigOption('curso', 'carga_horaria'), | |
| 78 | + $options['cursoCargaHoraria']); | |
| 79 | + | |
| 80 | + $this->assertEquals($this->_getConfigOption('serie', 'carga_horaria'), | |
| 81 | + $options['serieCargaHoraria']); | |
| 82 | + | |
| 83 | + $this->assertEquals(count($this->_getConfigOptions('anoLetivoModulo')), | |
| 84 | + $options['etapas']); | |
| 85 | + | |
| 86 | + $this->assertEquals($this->_getConfigOptions('componenteCurricular'), | |
| 87 | + $service->getComponentes()); | |
| 88 | + } | |
| 89 | + | |
| 90 | + public function testInstanciaRegraDeAvaliacaoAtravesDeUmNumeroDeMatricula() | |
| 91 | + { | |
| 92 | + $service = $this->_getServiceInstance(); | |
| 93 | + $this->assertType('RegraAvaliacao_Model_Regra', $service->getRegra()); | |
| 94 | + | |
| 95 | + // TabelaArredondamento_Model_Tabela é recuperada através da instância de | |
| 96 | + // RegraAvaliacao_Model_Regra | |
| 97 | + $this->assertType('TabelaArredondamento_Model_Tabela', $service->getTabelaArredondamento()); | |
| 98 | + } | |
| 99 | +} | |
| 0 | 100 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/NotaAlunoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | +require_once 'Avaliacao/Model/NotaComponente.php'; | |
| 34 | + | |
| 35 | +/** | |
| 36 | + * Avaliacao_Service_NotaAlunoTest class. | |
| 37 | + * | |
| 38 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 39 | + * @category i-Educar | |
| 40 | + * @license @@license@@ | |
| 41 | + * @package Avaliacao | |
| 42 | + * @subpackage UnitTests | |
| 43 | + * @since Classe disponível desde a versão 1.1.0 | |
| 44 | + * @version @@package_version@@ | |
| 45 | + */ | |
| 46 | +class Avaliacao_Service_NotaAlunoTest extends Avaliacao_Service_TestCommon | |
| 47 | +{ | |
| 48 | + public function testCriaNovaInstanciaDeNotaAluno() | |
| 49 | + { | |
| 50 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 51 | + $notaSave = clone $notaAluno; | |
| 52 | + $notaSave->id = NULL; | |
| 53 | + | |
| 54 | + // Configura mock para Avaliacao_Model_NotaAlunoDataMapper | |
| 55 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaAlunoDataMapper'); | |
| 56 | + $mock->expects($this->at(0)) | |
| 57 | + ->method('findAll') | |
| 58 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 59 | + ->will($this->returnValue(array())); | |
| 60 | + | |
| 61 | + $mock->expects($this->at(1)) | |
| 62 | + ->method('save') | |
| 63 | + ->with($notaSave) | |
| 64 | + ->will($this->returnValue(TRUE)); | |
| 65 | + | |
| 66 | + $mock->expects($this->at(2)) | |
| 67 | + ->method('findAll') | |
| 68 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 69 | + ->will($this->returnValue(array($notaAluno))); | |
| 70 | + | |
| 71 | + $this->_setNotaAlunoDataMapperMock($mock); | |
| 72 | + | |
| 73 | + $service = $this->_getServiceInstance(); | |
| 74 | + } | |
| 75 | +} | |
| 0 | 76 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/NotaConceitualSituacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,52 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/NotaSituacaoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_NotaConceitualSituacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_NotaConceitualSituacaoTest extends Avaliacao_Service_NotaSituacaoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('tipoNota', RegraAvaliacao_Model_Nota_TipoValor::CONCEITUAL); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | +} | |
| 0 | 53 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/NotaNumericaSituacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,47 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/NotaSituacaoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_NotaNumericaSituacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_NotaNumericaSituacaoTest extends Avaliacao_Service_NotaSituacaoCommon | |
| 46 | +{ | |
| 47 | +} | |
| 0 | 48 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/NotaRecuperacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,250 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_NotaRecuperacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_NotaRecuperacaoTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + public function testSalvarNotasDeUmComponenteCurricularNoBoletimEmRecuperacao() | |
| 48 | + { | |
| 49 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 50 | + | |
| 51 | + $notas = array( | |
| 52 | + new Avaliacao_Model_NotaComponente(array( | |
| 53 | + 'componenteCurricular' => 1, | |
| 54 | + 'nota' => 5, | |
| 55 | + 'etapa' => 1 | |
| 56 | + )), | |
| 57 | + new Avaliacao_Model_NotaComponente(array( | |
| 58 | + 'componenteCurricular' => 1, | |
| 59 | + 'nota' => 5, | |
| 60 | + 'etapa' => 2 | |
| 61 | + )), | |
| 62 | + new Avaliacao_Model_NotaComponente(array( | |
| 63 | + 'componenteCurricular' => 1, | |
| 64 | + 'nota' => 6, | |
| 65 | + 'etapa' => 3 | |
| 66 | + )), | |
| 67 | + new Avaliacao_Model_NotaComponente(array( | |
| 68 | + 'componenteCurricular' => 1, | |
| 69 | + 'nota' => 6, | |
| 70 | + 'etapa' => 4 | |
| 71 | + )), | |
| 72 | + new Avaliacao_Model_NotaComponente(array( | |
| 73 | + 'componenteCurricular' => 1, | |
| 74 | + 'nota' => 6, | |
| 75 | + 'etapa' => 'Rc' | |
| 76 | + )), | |
| 77 | + ); | |
| 78 | + | |
| 79 | + $media = new Avaliacao_Model_NotaComponenteMedia(array( | |
| 80 | + 'notaAluno' => $notaAluno->id, | |
| 81 | + 'componenteCurricular' => 1, | |
| 82 | + 'media' => 5.7, | |
| 83 | + 'mediaArredondada' => 5, | |
| 84 | + 'etapa' => 'Rc' | |
| 85 | + )); | |
| 86 | + | |
| 87 | + $media->markOld(); | |
| 88 | + | |
| 89 | + // Configura mock para Avaliacao_Model_NotaComponenteDataMapper | |
| 90 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteDataMapper'); | |
| 91 | + | |
| 92 | + $mock->expects($this->at(0)) | |
| 93 | + ->method('findAll') | |
| 94 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 95 | + ->will($this->returnValue(array())); | |
| 96 | + | |
| 97 | + $mock->expects($this->at(1)) | |
| 98 | + ->method('save') | |
| 99 | + ->with($notas[0]) | |
| 100 | + ->will($this->returnValue(TRUE)); | |
| 101 | + | |
| 102 | + $mock->expects($this->at(2)) | |
| 103 | + ->method('save') | |
| 104 | + ->with($notas[1]) | |
| 105 | + ->will($this->returnValue(TRUE)); | |
| 106 | + | |
| 107 | + $mock->expects($this->at(3)) | |
| 108 | + ->method('save') | |
| 109 | + ->with($notas[2]) | |
| 110 | + ->will($this->returnValue(TRUE)); | |
| 111 | + | |
| 112 | + $mock->expects($this->at(4)) | |
| 113 | + ->method('save') | |
| 114 | + ->with($notas[3]) | |
| 115 | + ->will($this->returnValue(TRUE)); | |
| 116 | + | |
| 117 | + $mock->expects($this->at(5)) | |
| 118 | + ->method('save') | |
| 119 | + ->with($notas[4]) | |
| 120 | + ->will($this->returnValue(TRUE)); | |
| 121 | + | |
| 122 | + $mock->expects($this->at(6)) | |
| 123 | + ->method('findAll') | |
| 124 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 125 | + ->will($this->returnValue($notas)); | |
| 126 | + | |
| 127 | + $this->_setNotaComponenteDataMapperMock($mock); | |
| 128 | + | |
| 129 | + // Configura mock para Avaliacao_Model_NotaComponenteMediaDataMapper | |
| 130 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 131 | + | |
| 132 | + $mock->expects($this->at(0)) | |
| 133 | + ->method('findAll') | |
| 134 | + ->with(array(), array('notaAluno' => $notaAluno->id)) | |
| 135 | + ->will($this->returnValue(array())); | |
| 136 | + | |
| 137 | + $mock->expects($this->at(1)) | |
| 138 | + ->method('find') | |
| 139 | + ->with(array($notaAluno->id, $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 140 | + ->will($this->returnValue(array())); | |
| 141 | + | |
| 142 | + $mock->expects($this->at(2)) | |
| 143 | + ->method('save') | |
| 144 | + ->with($media) | |
| 145 | + ->will($this->returnValue(TRUE)); | |
| 146 | + | |
| 147 | + $this->_setNotaComponenteMediaDataMapperMock($mock); | |
| 148 | + | |
| 149 | + $service = $this->_getServiceInstance(); | |
| 150 | + $service->addNotas($notas); | |
| 151 | + $service->saveNotas(); | |
| 152 | + | |
| 153 | + $notasSalvas = $service->getNotas(); | |
| 154 | + | |
| 155 | + $etapas = array_merge( | |
| 156 | + range(1, count($this->_getConfigOptions('anoLetivoModulo'))), | |
| 157 | + array('Rc') | |
| 158 | + ); | |
| 159 | + | |
| 160 | + foreach ($notasSalvas as $notaSalva) { | |
| 161 | + $key = array_search($notaSalva->etapa, $etapas, FALSE); | |
| 162 | + $this->assertTrue($key !== FALSE); | |
| 163 | + unset($etapas[$key]); | |
| 164 | + } | |
| 165 | + } | |
| 166 | + | |
| 167 | + public function testSalvarNotasDeUmComponenteCurricularNoBoletimEmRecuperacaoComNotasLancadas() | |
| 168 | + { | |
| 169 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 170 | + | |
| 171 | + $notas = array( | |
| 172 | + new Avaliacao_Model_NotaComponente(array( | |
| 173 | + 'componenteCurricular' => 1, | |
| 174 | + 'nota' => 5, | |
| 175 | + )) | |
| 176 | + ); | |
| 177 | + | |
| 178 | + $notasPersistidas = array( | |
| 179 | + new Avaliacao_Model_NotaComponente(array( | |
| 180 | + 'id' => 1, | |
| 181 | + 'notaAluno' => $notaAluno->id, | |
| 182 | + 'componenteCurricular' => 1, | |
| 183 | + 'nota' => 6, | |
| 184 | + 'notaArredondada' => 6, | |
| 185 | + 'etapa' => 1 | |
| 186 | + )), | |
| 187 | + new Avaliacao_Model_NotaComponente(array( | |
| 188 | + 'id' => 2, | |
| 189 | + 'notaAluno' => $notaAluno->id, | |
| 190 | + 'componenteCurricular' => 1, | |
| 191 | + 'nota' => 6, | |
| 192 | + 'notaArredondada' => 6, | |
| 193 | + 'etapa' => 2 | |
| 194 | + )), | |
| 195 | + new Avaliacao_Model_NotaComponente(array( | |
| 196 | + 'id' => 3, | |
| 197 | + 'notaAluno' => $notaAluno->id, | |
| 198 | + 'componenteCurricular' => 1, | |
| 199 | + 'nota' => 6, | |
| 200 | + 'notaArredondada' => 6, | |
| 201 | + 'etapa' => 3 | |
| 202 | + )), | |
| 203 | + new Avaliacao_Model_NotaComponente(array( | |
| 204 | + 'id' => 4, | |
| 205 | + 'notaAluno' => $notaAluno->id, | |
| 206 | + 'componenteCurricular' => 1, | |
| 207 | + 'nota' => 6, | |
| 208 | + 'notaArredondada' => 6, | |
| 209 | + 'etapa' => 4 | |
| 210 | + )) | |
| 211 | + ); | |
| 212 | + | |
| 213 | + // Configura mock para Avaliacao_Model_NotaComponenteDataMapper | |
| 214 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteDataMapper'); | |
| 215 | + | |
| 216 | + $mock->expects($this->at(0)) | |
| 217 | + ->method('findAll') | |
| 218 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 219 | + ->will($this->returnValue($notasPersistidas)); | |
| 220 | + | |
| 221 | + $mock->expects($this->at(1)) | |
| 222 | + ->method('save') | |
| 223 | + ->with($notas[0]) | |
| 224 | + ->will($this->returnValue(TRUE)); | |
| 225 | + | |
| 226 | + $notasSalvas = array_merge($notasPersistidas, $notas); | |
| 227 | + | |
| 228 | + $mock->expects($this->at(2)) | |
| 229 | + ->method('findAll') | |
| 230 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 231 | + ->will($this->returnValue($notasSalvas)); | |
| 232 | + | |
| 233 | + $this->_setNotaComponenteDataMapperMock($mock); | |
| 234 | + | |
| 235 | + $service = $this->_getServiceInstance(); | |
| 236 | + $service->addNotas($notas); | |
| 237 | + $service->saveNotas(); | |
| 238 | + | |
| 239 | + $etapas = array_merge( | |
| 240 | + range(1, count($this->_getConfigOptions('anoLetivoModulo'))), | |
| 241 | + array('Rc') | |
| 242 | + ); | |
| 243 | + | |
| 244 | + foreach ($notasSalvas as $notaSalva) { | |
| 245 | + $key = array_search($notaSalva->etapa, $etapas, FALSE); | |
| 246 | + $this->assertTrue($key !== FALSE); | |
| 247 | + unset($etapas[$key]); | |
| 248 | + } | |
| 249 | + } | |
| 250 | +} | |
| 0 | 251 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/NotaSituacaoCommon.php
0 → 100644
| ... | ... | @@ -0,0 +1,436 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_NotaSituacaoCommon abstract class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +abstract class Avaliacao_Service_NotaSituacaoCommon extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + protected function _setUpNotaComponenteMediaDataMapperMock( | |
| 48 | + Avaliacao_Model_NotaAluno $notaAluno, array $medias) | |
| 49 | + { | |
| 50 | + // Configura mock para notas | |
| 51 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 52 | + | |
| 53 | + $mock->expects($this->any()) | |
| 54 | + ->method('findAll') | |
| 55 | + ->with(array(), array('notaAluno' => $notaAluno->id)) | |
| 56 | + ->will($this->returnValue($medias)); | |
| 57 | + | |
| 58 | + $this->_setNotaComponenteMediaDataMapperMock($mock); | |
| 59 | + } | |
| 60 | + | |
| 61 | + /** | |
| 62 | + * Nenhuma média lançada, óbvio que está em andamento. | |
| 63 | + */ | |
| 64 | + public function testSituacaoComponentesCurricularesEmAndamento() | |
| 65 | + { | |
| 66 | + // Expectativa | |
| 67 | + $expected = new stdClass(); | |
| 68 | + $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 69 | + $expected->componentesCurriculares = array(); | |
| 70 | + | |
| 71 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 72 | + | |
| 73 | + // Nenhuma média lançada | |
| 74 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, array()); | |
| 75 | + | |
| 76 | + $service = $this->_getServiceInstance(); | |
| 77 | + | |
| 78 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 79 | + } | |
| 80 | + | |
| 81 | + /** | |
| 82 | + * Um componente em exame, já que por padrão a regra de avaliação define uma | |
| 83 | + * fórmula de recuperação. | |
| 84 | + */ | |
| 85 | + public function testSituacaoComponentesCurricularesUmComponenteLancadoEmExameDeQuatroComponentesTotais() | |
| 86 | + { | |
| 87 | + // Expectativa | |
| 88 | + $expected = new stdClass(); | |
| 89 | + $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 90 | + $expected->componentesCurriculares = array(); | |
| 91 | + | |
| 92 | + // Matemática estará em exame | |
| 93 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 94 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 95 | + | |
| 96 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 97 | + | |
| 98 | + // Nenhuma média lançada | |
| 99 | + $medias = array( | |
| 100 | + 1 => new Avaliacao_Model_NotaComponenteMedia(array( | |
| 101 | + 'notaAluno' => $notaAluno->id, | |
| 102 | + 'componenteCurricular' => 1, | |
| 103 | + 'media' => 5, | |
| 104 | + 'mediaArredondada' => 5, | |
| 105 | + 'etapa' => 4 | |
| 106 | + )) | |
| 107 | + ); | |
| 108 | + | |
| 109 | + // Configura mock para notas | |
| 110 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, $medias); | |
| 111 | + | |
| 112 | + $service = $this->_getServiceInstance(); | |
| 113 | + | |
| 114 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 115 | + } | |
| 116 | + | |
| 117 | + /** | |
| 118 | + * Um componente em exame, já que por padrão a regra de avaliação define uma | |
| 119 | + * fórmula de recuperação. Quatro médias lançadas, 3 aprovadas. | |
| 120 | + */ | |
| 121 | + public function testSituacaoComponentesCurricularesUmComponenteLancadoEmExameDeQuatroComponentesTotaisLancadosAprovados() | |
| 122 | + { | |
| 123 | + // Expectativa | |
| 124 | + $expected = new stdClass(); | |
| 125 | + $expected->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 126 | + $expected->componentesCurriculares = array(); | |
| 127 | + | |
| 128 | + // Matemática estará em exame | |
| 129 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 130 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 131 | + | |
| 132 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 133 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 134 | + | |
| 135 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 136 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 137 | + | |
| 138 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 139 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 140 | + | |
| 141 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 142 | + | |
| 143 | + // Nenhuma média lançada | |
| 144 | + $medias = array( | |
| 145 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 146 | + 'notaAluno' => $notaAluno->id, | |
| 147 | + 'componenteCurricular' => 1, | |
| 148 | + 'media' => 5, | |
| 149 | + 'mediaArredondada' => 5, | |
| 150 | + 'etapa' => 4 | |
| 151 | + )), | |
| 152 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 153 | + 'notaAluno' => $notaAluno->id, | |
| 154 | + 'componenteCurricular' => 2, | |
| 155 | + 'media' => 6, | |
| 156 | + 'mediaArredondada' => 6, | |
| 157 | + 'etapa' => 4 | |
| 158 | + )), | |
| 159 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 160 | + 'notaAluno' => $notaAluno->id, | |
| 161 | + 'componenteCurricular' => 3, | |
| 162 | + 'media' => 6, | |
| 163 | + 'mediaArredondada' => 6, | |
| 164 | + 'etapa' => 4 | |
| 165 | + )), | |
| 166 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 167 | + 'notaAluno' => $notaAluno->id, | |
| 168 | + 'componenteCurricular' => 4, | |
| 169 | + 'media' => 6, | |
| 170 | + 'mediaArredondada' => 6, | |
| 171 | + 'etapa' => 4 | |
| 172 | + )) | |
| 173 | + ); | |
| 174 | + | |
| 175 | + // Configura mock para notas | |
| 176 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, $medias); | |
| 177 | + | |
| 178 | + $service = $this->_getServiceInstance(); | |
| 179 | + | |
| 180 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 181 | + } | |
| 182 | + | |
| 183 | + public function testSituacaoComponentesCurricularesUmComponenteLancadoEmExameDeQuatroComponentesTotaisLancadosDoisAprovadosUmAndamento() | |
| 184 | + { | |
| 185 | + // Expectativa | |
| 186 | + $expected = new stdClass(); | |
| 187 | + $expected->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 188 | + $expected->componentesCurriculares = array(); | |
| 189 | + | |
| 190 | + // Matemática estará em exame | |
| 191 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 192 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 193 | + | |
| 194 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 195 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::EM_ANDAMENTO; | |
| 196 | + | |
| 197 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 198 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 199 | + | |
| 200 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 201 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 202 | + | |
| 203 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 204 | + | |
| 205 | + // Nenhuma média lançada | |
| 206 | + $medias = array( | |
| 207 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 208 | + 'notaAluno' => $notaAluno->id, | |
| 209 | + 'componenteCurricular' => 1, | |
| 210 | + 'media' => 5, | |
| 211 | + 'mediaArredondada' => 5, | |
| 212 | + 'etapa' => 4 | |
| 213 | + )), | |
| 214 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 215 | + 'notaAluno' => $notaAluno->id, | |
| 216 | + 'componenteCurricular' => 2, | |
| 217 | + 'media' => 5.75, | |
| 218 | + 'mediaArredondada' => 5, | |
| 219 | + 'etapa' => 3 | |
| 220 | + )), | |
| 221 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 222 | + 'notaAluno' => $notaAluno->id, | |
| 223 | + 'componenteCurricular' => 3, | |
| 224 | + 'media' => 6, | |
| 225 | + 'mediaArredondada' => 6, | |
| 226 | + 'etapa' => 4 | |
| 227 | + )), | |
| 228 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 229 | + 'notaAluno' => $notaAluno->id, | |
| 230 | + 'componenteCurricular' => 4, | |
| 231 | + 'media' => 6, | |
| 232 | + 'mediaArredondada' => 6, | |
| 233 | + 'etapa' => 4 | |
| 234 | + )) | |
| 235 | + ); | |
| 236 | + | |
| 237 | + // Configura mock para notas | |
| 238 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, $medias); | |
| 239 | + | |
| 240 | + $service = $this->_getServiceInstance(); | |
| 241 | + | |
| 242 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 243 | + } | |
| 244 | + | |
| 245 | + public function testSituacaoComponentesCurricularesUmComponenteLancadoEmExameDeQuatroComponentesTotaisLancadosUmAprovadoAposExameEDoisAprovados() | |
| 246 | + { | |
| 247 | + // Expectativa | |
| 248 | + $expected = new stdClass(); | |
| 249 | + $expected->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 250 | + $expected->componentesCurriculares = array(); | |
| 251 | + | |
| 252 | + // Matemática estará em exame | |
| 253 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 254 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 255 | + | |
| 256 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 257 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO_APOS_EXAME; | |
| 258 | + | |
| 259 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 260 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 261 | + | |
| 262 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 263 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 264 | + | |
| 265 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 266 | + | |
| 267 | + // Nenhuma média lançada | |
| 268 | + $medias = array( | |
| 269 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 270 | + 'notaAluno' => $notaAluno->id, | |
| 271 | + 'componenteCurricular' => 1, | |
| 272 | + 'media' => 5, | |
| 273 | + 'mediaArredondada' => 5, | |
| 274 | + 'etapa' => 4 | |
| 275 | + )), | |
| 276 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 277 | + 'notaAluno' => $notaAluno->id, | |
| 278 | + 'componenteCurricular' => 2, | |
| 279 | + 'media' => 6.5, | |
| 280 | + 'mediaArredondada' => 6, | |
| 281 | + 'etapa' => 'Rc' | |
| 282 | + )), | |
| 283 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 284 | + 'notaAluno' => $notaAluno->id, | |
| 285 | + 'componenteCurricular' => 3, | |
| 286 | + 'media' => 6, | |
| 287 | + 'mediaArredondada' => 6, | |
| 288 | + 'etapa' => 4 | |
| 289 | + )), | |
| 290 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 291 | + 'notaAluno' => $notaAluno->id, | |
| 292 | + 'componenteCurricular' => 4, | |
| 293 | + 'media' => 6, | |
| 294 | + 'mediaArredondada' => 6, | |
| 295 | + 'etapa' => 4 | |
| 296 | + )) | |
| 297 | + ); | |
| 298 | + | |
| 299 | + // Configura mock para notas | |
| 300 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, $medias); | |
| 301 | + | |
| 302 | + $service = $this->_getServiceInstance(); | |
| 303 | + | |
| 304 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 305 | + } | |
| 306 | + | |
| 307 | + public function testSituacaoComponentesCurricularesUmComponenteLancadoEmExameDeQuatroComponentesTotaisLancadosUmAprovadoAposExameUmReprovadoEOutroAprovado() | |
| 308 | + { | |
| 309 | + // Expectativa | |
| 310 | + $expected = new stdClass(); | |
| 311 | + $expected->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 312 | + $expected->componentesCurriculares = array(); | |
| 313 | + | |
| 314 | + // Matemática estará em exame | |
| 315 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 316 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::EM_EXAME; | |
| 317 | + | |
| 318 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 319 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO_APOS_EXAME; | |
| 320 | + | |
| 321 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 322 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 323 | + | |
| 324 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 325 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 326 | + | |
| 327 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 328 | + | |
| 329 | + // Nenhuma média lançada | |
| 330 | + $medias = array( | |
| 331 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 332 | + 'notaAluno' => $notaAluno->id, | |
| 333 | + 'componenteCurricular' => 1, | |
| 334 | + 'media' => 5, | |
| 335 | + 'mediaArredondada' => 5, | |
| 336 | + 'etapa' => 4 | |
| 337 | + )), | |
| 338 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 339 | + 'notaAluno' => $notaAluno->id, | |
| 340 | + 'componenteCurricular' => 2, | |
| 341 | + 'media' => 6.5, | |
| 342 | + 'mediaArredondada' => 6, | |
| 343 | + 'etapa' => 'Rc' | |
| 344 | + )), | |
| 345 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 346 | + 'notaAluno' => $notaAluno->id, | |
| 347 | + 'componenteCurricular' => 3, | |
| 348 | + 'media' => 5, | |
| 349 | + 'mediaArredondada' => 5, | |
| 350 | + 'etapa' => 'Rc' | |
| 351 | + )), | |
| 352 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 353 | + 'notaAluno' => $notaAluno->id, | |
| 354 | + 'componenteCurricular' => 4, | |
| 355 | + 'media' => 6, | |
| 356 | + 'mediaArredondada' => 6, | |
| 357 | + 'etapa' => 4 | |
| 358 | + )) | |
| 359 | + ); | |
| 360 | + | |
| 361 | + // Configura mock para notas | |
| 362 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, $medias); | |
| 363 | + | |
| 364 | + $service = $this->_getServiceInstance(); | |
| 365 | + | |
| 366 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 367 | + } | |
| 368 | + | |
| 369 | +/** | |
| 370 | + * Um componente reprovado, com uma regra sem recuperação. Quatro médias | |
| 371 | + * lançadas, 3 aprovadas. | |
| 372 | + */ | |
| 373 | + public function testSituacaoComponentesCurricularesUmComponenteLancadoReprovadoUmComponenteAbaixoDaMedia() | |
| 374 | + { | |
| 375 | + $this->_setRegraOption('formulaRecuperacao', NULL); | |
| 376 | + | |
| 377 | + // Expectativa | |
| 378 | + $expected = new stdClass(); | |
| 379 | + $expected->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 380 | + $expected->componentesCurriculares = array(); | |
| 381 | + | |
| 382 | + // Matemática estará em exame | |
| 383 | + $expected->componentesCurriculares[1] = new stdClass(); | |
| 384 | + $expected->componentesCurriculares[1]->situacao = App_Model_MatriculaSituacao::REPROVADO; | |
| 385 | + | |
| 386 | + $expected->componentesCurriculares[2] = new stdClass(); | |
| 387 | + $expected->componentesCurriculares[2]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 388 | + | |
| 389 | + $expected->componentesCurriculares[3] = new stdClass(); | |
| 390 | + $expected->componentesCurriculares[3]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 391 | + | |
| 392 | + $expected->componentesCurriculares[4] = new stdClass(); | |
| 393 | + $expected->componentesCurriculares[4]->situacao = App_Model_MatriculaSituacao::APROVADO; | |
| 394 | + | |
| 395 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 396 | + | |
| 397 | + // Nenhuma média lançada | |
| 398 | + $medias = array( | |
| 399 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 400 | + 'notaAluno' => $notaAluno->id, | |
| 401 | + 'componenteCurricular' => 1, | |
| 402 | + 'media' => 5, | |
| 403 | + 'mediaArredondada' => 5, | |
| 404 | + 'etapa' => 4 | |
| 405 | + )), | |
| 406 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 407 | + 'notaAluno' => $notaAluno->id, | |
| 408 | + 'componenteCurricular' => 2, | |
| 409 | + 'media' => 6, | |
| 410 | + 'mediaArredondada' => 6, | |
| 411 | + 'etapa' => 4 | |
| 412 | + )), | |
| 413 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 414 | + 'notaAluno' => $notaAluno->id, | |
| 415 | + 'componenteCurricular' => 3, | |
| 416 | + 'media' => 6, | |
| 417 | + 'mediaArredondada' => 6, | |
| 418 | + 'etapa' => 4 | |
| 419 | + )), | |
| 420 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 421 | + 'notaAluno' => $notaAluno->id, | |
| 422 | + 'componenteCurricular' => 4, | |
| 423 | + 'media' => 6, | |
| 424 | + 'mediaArredondada' => 6, | |
| 425 | + 'etapa' => 4 | |
| 426 | + )) | |
| 427 | + ); | |
| 428 | + | |
| 429 | + // Configura mock para notas | |
| 430 | + $this->_setUpNotaComponenteMediaDataMapperMock($notaAluno, $medias); | |
| 431 | + | |
| 432 | + $service = $this->_getServiceInstance(); | |
| 433 | + | |
| 434 | + $this->assertEquals($expected, $service->getSituacaoComponentesCurriculares()); | |
| 435 | + } | |
| 436 | +} | |
| 0 | 437 | \ No newline at end of file | ... | ... |
| ... | ... | @@ -0,0 +1,323 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | +require_once 'Avaliacao/Model/NotaComponente.php'; | |
| 34 | + | |
| 35 | +/** | |
| 36 | + * Avaliacao_Service_NotaTest class. | |
| 37 | + * | |
| 38 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 39 | + * @category i-Educar | |
| 40 | + * @license @@license@@ | |
| 41 | + * @package Avaliacao | |
| 42 | + * @subpackage UnitTests | |
| 43 | + * @since Classe disponível desde a versão 1.1.0 | |
| 44 | + * @version @@package_version@@ | |
| 45 | + */ | |
| 46 | +class Avaliacao_Service_NotaTest extends Avaliacao_Service_TestCommon | |
| 47 | +{ | |
| 48 | + public function testInstanciaDeNotaComponenteERegistradaApenasUmaVezNoBoletiom() | |
| 49 | + { | |
| 50 | + $service = $this->_getServiceInstance(); | |
| 51 | + | |
| 52 | + $nota = new Avaliacao_Model_NotaComponente(array( | |
| 53 | + 'componenteCurricular' => 1, | |
| 54 | + 'nota' => 5 | |
| 55 | + )); | |
| 56 | + | |
| 57 | + // Atribuição simples | |
| 58 | + $service->addNota($nota) | |
| 59 | + ->addNota($nota); | |
| 60 | + | |
| 61 | + $this->assertEquals(1, count($service->getNotas())); | |
| 62 | + | |
| 63 | + // Via atribuição em lote | |
| 64 | + $nota = clone $nota; | |
| 65 | + $service->addNotas(array($nota, $nota, $nota)); | |
| 66 | + | |
| 67 | + $this->assertEquals(2, count($service->getNotas())); | |
| 68 | + } | |
| 69 | + | |
| 70 | + public function testAdicionaNotaNoBoletim() | |
| 71 | + { | |
| 72 | + $service = $this->_getServiceInstance(); | |
| 73 | + | |
| 74 | + $nota = new Avaliacao_Model_NotaComponente(array( | |
| 75 | + 'componenteCurricular' => 1, | |
| 76 | + 'nota' => 5.72 | |
| 77 | + )); | |
| 78 | + | |
| 79 | + $notaOriginal = clone $nota; | |
| 80 | + $service->addNota($nota); | |
| 81 | + | |
| 82 | + $notas = $service->getNotas(); | |
| 83 | + $serviceNota = array_shift($notas); | |
| 84 | + | |
| 85 | + // Valores declarados explicitamente, verificação explícita | |
| 86 | + $this->assertEquals($notaOriginal->nota, $serviceNota->nota); | |
| 87 | + $this->assertEquals($notaOriginal->get('componenteCurricular'), $serviceNota->get('componenteCurricular')); | |
| 88 | + | |
| 89 | + // Valores populados pelo service | |
| 90 | + $this->assertNotEquals($notaOriginal->etapa, $serviceNota->etapa); | |
| 91 | + $this->assertEquals(1, $serviceNota->etapa); | |
| 92 | + $this->assertEquals(5, $serviceNota->notaArredondada); | |
| 93 | + | |
| 94 | + // Validadores injetados no objeto | |
| 95 | + $validators = $serviceNota->getValidatorCollection(); | |
| 96 | + $this->assertType('CoreExt_Validate_Choice', $validators['componenteCurricular']); | |
| 97 | + $this->assertType('CoreExt_Validate_Choice', $validators['etapa']); | |
| 98 | + | |
| 99 | + // Opções dos validadores | |
| 100 | + | |
| 101 | + // Componentes curriculares existentes para o aluno | |
| 102 | + $this->assertEquals( | |
| 103 | + array_keys($this->_getConfigOptions('componenteCurricular')), | |
| 104 | + array_values($validators['componenteCurricular']->getOption('choices')) | |
| 105 | + ); | |
| 106 | + | |
| 107 | + // Etapas possíveis para o lançamento de nota | |
| 108 | + $this->assertEquals( | |
| 109 | + array_merge(range(1, count($this->_getConfigOptions('anoLetivoModulo'))), array('Rc')), | |
| 110 | + $validators['etapa']->getOption('choices') | |
| 111 | + ); | |
| 112 | + } | |
| 113 | + | |
| 114 | + /** | |
| 115 | + * Testa o service adicionando notas de apenas um componente curricular, | |
| 116 | + * para todas as etapas regulares (1 a 4). | |
| 117 | + */ | |
| 118 | + public function testSalvarNotasDeUmComponenteCurricularNoBoletim() | |
| 119 | + { | |
| 120 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 121 | + | |
| 122 | + $notas = array( | |
| 123 | + new Avaliacao_Model_NotaComponente(array( | |
| 124 | + 'componenteCurricular' => 1, | |
| 125 | + 'nota' => 7.25, | |
| 126 | + 'etapa' => 1 | |
| 127 | + )), | |
| 128 | + new Avaliacao_Model_NotaComponente(array( | |
| 129 | + 'componenteCurricular' => 1, | |
| 130 | + 'nota' => 9.25, | |
| 131 | + 'etapa' => 2 | |
| 132 | + )), | |
| 133 | + new Avaliacao_Model_NotaComponente(array( | |
| 134 | + 'componenteCurricular' => 1, | |
| 135 | + 'nota' => 8, | |
| 136 | + 'etapa' => 3 | |
| 137 | + )), | |
| 138 | + new Avaliacao_Model_NotaComponente(array( | |
| 139 | + 'componenteCurricular' => 1, | |
| 140 | + 'nota' => 8.5, | |
| 141 | + 'etapa' => 4 | |
| 142 | + )), | |
| 143 | + ); | |
| 144 | + | |
| 145 | + $media = new Avaliacao_Model_NotaComponenteMedia(array( | |
| 146 | + 'notaAluno' => $notaAluno->id, | |
| 147 | + 'componenteCurricular' => 1, | |
| 148 | + 'media' => 8.25, | |
| 149 | + 'mediaArredondada' => 8, | |
| 150 | + 'etapa' => 4 | |
| 151 | + )); | |
| 152 | + | |
| 153 | + $media->markOld(); | |
| 154 | + | |
| 155 | + // Configura mock para Avaliacao_Model_NotaComponenteDataMapper | |
| 156 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteDataMapper'); | |
| 157 | + | |
| 158 | + $mock->expects($this->at(0)) | |
| 159 | + ->method('findAll') | |
| 160 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 161 | + ->will($this->returnValue(array())); | |
| 162 | + | |
| 163 | + $mock->expects($this->at(1)) | |
| 164 | + ->method('save') | |
| 165 | + ->with($notas[0]) | |
| 166 | + ->will($this->returnValue(TRUE)); | |
| 167 | + | |
| 168 | + $mock->expects($this->at(2)) | |
| 169 | + ->method('save') | |
| 170 | + ->with($notas[1]) | |
| 171 | + ->will($this->returnValue(TRUE)); | |
| 172 | + | |
| 173 | + $mock->expects($this->at(3)) | |
| 174 | + ->method('save') | |
| 175 | + ->with($notas[2]) | |
| 176 | + ->will($this->returnValue(TRUE)); | |
| 177 | + | |
| 178 | + $mock->expects($this->at(4)) | |
| 179 | + ->method('save') | |
| 180 | + ->with($notas[3]) | |
| 181 | + ->will($this->returnValue(TRUE)); | |
| 182 | + | |
| 183 | + $mock->expects($this->at(5)) | |
| 184 | + ->method('findAll') | |
| 185 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 186 | + ->will($this->returnValue($notas)); | |
| 187 | + | |
| 188 | + $this->_setNotaComponenteDataMapperMock($mock); | |
| 189 | + | |
| 190 | + // Configura mock para Avaliacao_Model_NotaComponenteMediaDataMapper | |
| 191 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 192 | + | |
| 193 | + $mock->expects($this->at(0)) | |
| 194 | + ->method('findAll') | |
| 195 | + ->with(array(), array('notaAluno' => $notaAluno->id)) | |
| 196 | + ->will($this->returnValue(array())); | |
| 197 | + | |
| 198 | + $mock->expects($this->at(1)) | |
| 199 | + ->method('find') | |
| 200 | + ->with(array($notaAluno->id, $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 201 | + ->will($this->returnValue(NULL)); | |
| 202 | + | |
| 203 | + $mock->expects($this->at(2)) | |
| 204 | + ->method('save') | |
| 205 | + ->with($media) | |
| 206 | + ->will($this->returnValue(TRUE)); | |
| 207 | + | |
| 208 | + $this->_setNotaComponenteMediaDataMapperMock($mock); | |
| 209 | + | |
| 210 | + $service = $this->_getServiceInstance(); | |
| 211 | + | |
| 212 | + $service->addNotas($notas); | |
| 213 | + $service->saveNotas(); | |
| 214 | + } | |
| 215 | + | |
| 216 | + /** | |
| 217 | + * Testa o service adicionando novas notas para um componente curricular, | |
| 218 | + * que inclusive já tem a nota lançada para a segunda etapa. | |
| 219 | + */ | |
| 220 | + public function testSalvasNotasDeUmComponenteComEtapasLancadas() | |
| 221 | + { | |
| 222 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 223 | + | |
| 224 | + $notas = array( | |
| 225 | + new Avaliacao_Model_NotaComponente(array( | |
| 226 | + 'componenteCurricular' => 1, | |
| 227 | + 'nota' => 7.25, | |
| 228 | + 'etapa' => 2 | |
| 229 | + )), | |
| 230 | + new Avaliacao_Model_NotaComponente(array( | |
| 231 | + 'componenteCurricular' => 1, | |
| 232 | + 'nota' => 9.25, | |
| 233 | + 'etapa' => 3 | |
| 234 | + )) | |
| 235 | + ); | |
| 236 | + | |
| 237 | + $notasPersistidas = array( | |
| 238 | + new Avaliacao_Model_NotaComponente(array( | |
| 239 | + 'id' => 1, | |
| 240 | + 'notaAluno' => $notaAluno->id, | |
| 241 | + 'componenteCurricular' => 1, | |
| 242 | + 'nota' => 8.25, | |
| 243 | + 'notaArredondada' => 8, | |
| 244 | + 'etapa' => 1 | |
| 245 | + )), | |
| 246 | + new Avaliacao_Model_NotaComponente(array( | |
| 247 | + 'id' => 2, | |
| 248 | + 'notaAluno' => $notaAluno->id, | |
| 249 | + 'componenteCurricular' => 1, | |
| 250 | + 'nota' => 9.5, | |
| 251 | + 'notaArredondada' => 9, | |
| 252 | + 'etapa' => 2 | |
| 253 | + )) | |
| 254 | + ); | |
| 255 | + | |
| 256 | + $mediasPersistidas = array( | |
| 257 | + new Avaliacao_Model_NotaComponenteMedia(array( | |
| 258 | + 'notaAluno' => $notaAluno->id, | |
| 259 | + 'componenteCurricular' => 1, | |
| 260 | + 'media' => 4.4375, | |
| 261 | + 'mediaArredondada' => 4, | |
| 262 | + 'etapa' => 2 | |
| 263 | + )) | |
| 264 | + ); | |
| 265 | + | |
| 266 | + $mediasPersistidas[0]->markOld(); | |
| 267 | + | |
| 268 | + // Configura mock para Avaliacao_Model_NotaComponenteDataMapper | |
| 269 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteDataMapper'); | |
| 270 | + | |
| 271 | + $mock->expects($this->at(0)) | |
| 272 | + ->method('findAll') | |
| 273 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 274 | + ->will($this->returnValue($notasPersistidas)); | |
| 275 | + | |
| 276 | + $mock->expects($this->at(1)) | |
| 277 | + ->method('save') | |
| 278 | + ->with($notas[0]) | |
| 279 | + ->will($this->returnValue(TRUE)); | |
| 280 | + | |
| 281 | + $mock->expects($this->at(2)) | |
| 282 | + ->method('save') | |
| 283 | + ->with($notas[1]) | |
| 284 | + ->will($this->returnValue(TRUE)); | |
| 285 | + | |
| 286 | + $mock->expects($this->at(3)) | |
| 287 | + ->method('findAll') | |
| 288 | + ->with(array(), array('notaAluno' => $notaAluno->id), array('etapa' => 'ASC')) | |
| 289 | + ->will($this->returnValue(array($notasPersistidas[0], $notas[0], $notas[1]))); | |
| 290 | + | |
| 291 | + $this->_setNotaComponenteDataMapperMock($mock); | |
| 292 | + | |
| 293 | + // Configura mock para Avaliacao_Model_NotaComponenteMediaDataMapper | |
| 294 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 295 | + | |
| 296 | + $mock->expects($this->at(0)) | |
| 297 | + ->method('findAll') | |
| 298 | + ->with(array(), array('notaAluno' => $notaAluno->id)) | |
| 299 | + ->will($this->returnValue($mediasPersistidas)); | |
| 300 | + | |
| 301 | + $mock->expects($this->at(1)) | |
| 302 | + ->method('find') | |
| 303 | + ->with(array($notaAluno->id, $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 304 | + ->will($this->returnValue($mediasPersistidas[0])); | |
| 305 | + | |
| 306 | + // Valores de média esperados | |
| 307 | + $media = clone $mediasPersistidas[0]; | |
| 308 | + $media->etapa = 3; | |
| 309 | + $media->media = 6.1875; | |
| 310 | + $media->mediaArredondada = 6; | |
| 311 | + | |
| 312 | + $mock->expects($this->at(2)) | |
| 313 | + ->method('save') | |
| 314 | + ->with($media) | |
| 315 | + ->will($this->returnValue(TRUE)); | |
| 316 | + | |
| 317 | + $this->_setNotaComponenteMediaDataMapperMock($mock); | |
| 318 | + | |
| 319 | + $service = $this->_getServiceInstance(); | |
| 320 | + $service->addNotas($notas); | |
| 321 | + $service->saveNotas(); | |
| 322 | + } | |
| 323 | +} | |
| 0 | 324 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/ParecerDescritivoAlunoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,75 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_ParecerDescritivoAlunoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_ParecerDescritivoAlunoTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + public function testCriaNovaInstanciaDeParecerDescritivoAluno() | |
| 48 | + { | |
| 49 | + $parecerAluno = $this->_getConfigOption('parecerDescritivoAluno', 'instance'); | |
| 50 | + | |
| 51 | + $parecerSave = clone $parecerAluno; | |
| 52 | + $parecerSave->id = NULL; | |
| 53 | + | |
| 54 | + // Configura mock para Avaliacao_Model_ParecerDescritivoAlunoDataMapper | |
| 55 | + $mock = $this->getCleanMock('Avaliacao_Model_ParecerDescritivoAlunoDataMapper'); | |
| 56 | + $mock->expects($this->at(0)) | |
| 57 | + ->method('findAll') | |
| 58 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 59 | + ->will($this->returnValue(array())); | |
| 60 | + | |
| 61 | + $mock->expects($this->at(1)) | |
| 62 | + ->method('save') | |
| 63 | + ->with($parecerSave) | |
| 64 | + ->will($this->returnValue(TRUE)); | |
| 65 | + | |
| 66 | + $mock->expects($this->at(2)) | |
| 67 | + ->method('findAll') | |
| 68 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 69 | + ->will($this->returnValue(array($parecerAluno))); | |
| 70 | + | |
| 71 | + $this->_setParecerDescritivoAlunoDataMapperMock($mock); | |
| 72 | + | |
| 73 | + $service = $this->_getServiceInstance(); | |
| 74 | + } | |
| 75 | +} | |
| 0 | 76 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/ParecerDescritivoCommon.php
0 → 100644
| ... | ... | @@ -0,0 +1,277 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_ParecerDescritivoCommon abstract class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +abstract class Avaliacao_Service_ParecerDescritivoCommon extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + /** | |
| 48 | + * Retorna as etapas possíveis para a instância do parecer. | |
| 49 | + * @return array | |
| 50 | + */ | |
| 51 | + protected function _getEtapasPossiveisParecer() | |
| 52 | + { | |
| 53 | + $parecerDescritivo = $this->_getRegraOption('parecerDescritivo'); | |
| 54 | + | |
| 55 | + $anuais = array( | |
| 56 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL, | |
| 57 | + RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE | |
| 58 | + ); | |
| 59 | + | |
| 60 | + $etapas = array( | |
| 61 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL, | |
| 62 | + RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE | |
| 63 | + ); | |
| 64 | + | |
| 65 | + if (in_array($parecerDescritivo, $anuais)) { | |
| 66 | + return array('An'); | |
| 67 | + } | |
| 68 | + | |
| 69 | + return $this->_getEtapasPossiveis(); | |
| 70 | + } | |
| 71 | + | |
| 72 | + /** | |
| 73 | + * Retorna o nome da classe CoreExt_DataMapper correta de acordo com a | |
| 74 | + * configuração da regra. Método auxiliar para criação de mocks. | |
| 75 | + * | |
| 76 | + * @return string | |
| 77 | + */ | |
| 78 | + protected function _getParecerDescritivoDataMapper() | |
| 79 | + { | |
| 80 | + $parecerDescritivo = $this->_getRegraOption('parecerDescritivo'); | |
| 81 | + | |
| 82 | + switch($parecerDescritivo) { | |
| 83 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_GERAL: | |
| 84 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL: | |
| 85 | + $mapper = 'Avaliacao_Model_ParecerDescritivoGeralDataMapper'; | |
| 86 | + break; | |
| 87 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE: | |
| 88 | + case RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE: | |
| 89 | + $mapper = 'Avaliacao_Model_ParecerDescritivoComponenteDataMapper'; | |
| 90 | + break; | |
| 91 | + } | |
| 92 | + | |
| 93 | + return $mapper; | |
| 94 | + } | |
| 95 | + | |
| 96 | + /** | |
| 97 | + * @return Avaliacao_Model_ParecerDescritivoAbstract | |
| 98 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 99 | + */ | |
| 100 | + protected abstract function _getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim(); | |
| 101 | + | |
| 102 | + /** | |
| 103 | + * @return Avaliacao_Model_ParecerDescritivoAbstract | |
| 104 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testAdicionaParecerNoBoletim() | |
| 105 | + */ | |
| 106 | + protected abstract function _getTestAdicionaParecerNoBoletim(); | |
| 107 | + | |
| 108 | + /** | |
| 109 | + * @param Avaliacao_Model_ParecerDescritivoAbstract $parecer | |
| 110 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testAdicionaParecerNoBoletim() | |
| 111 | + */ | |
| 112 | + protected abstract function _testAdicionaParecerNoBoletimVerificaValidadores(Avaliacao_Model_ParecerDescritivoAbstract $parecer); | |
| 113 | + | |
| 114 | + /** | |
| 115 | + * @return array | |
| 116 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testSalvarPareceresNoBoletim() | |
| 117 | + */ | |
| 118 | + protected abstract function _getTestSalvarPareceresNoBoletimInstanciasDePareceres(); | |
| 119 | + | |
| 120 | + /** | |
| 121 | + * @return array | |
| 122 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testSalvarPareceresNoBoletimComEtapasJaLancadas() | |
| 123 | + */ | |
| 124 | + protected abstract function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias(); | |
| 125 | + | |
| 126 | + /** | |
| 127 | + * @return array | |
| 128 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testSalvarPareceresNoBoletimComEtapasJaLancadas() | |
| 129 | + */ | |
| 130 | + protected abstract function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas(); | |
| 131 | + | |
| 132 | + /** | |
| 133 | + * @return array | |
| 134 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadas() | |
| 135 | + */ | |
| 136 | + protected abstract function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias(); | |
| 137 | + | |
| 138 | + /** | |
| 139 | + * @return array | |
| 140 | + * @see Avaliacao_Service_ParecerDescritivoCommon#testSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadas() | |
| 141 | + */ | |
| 142 | + protected abstract function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas(); | |
| 143 | + | |
| 144 | + /** | |
| 145 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 146 | + */ | |
| 147 | + public function testInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 148 | + { | |
| 149 | + $service = $this->_getServiceInstance(); | |
| 150 | + | |
| 151 | + $parecer = $this->_getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim(); | |
| 152 | + | |
| 153 | + $service->addParecer($parecer) | |
| 154 | + ->addParecer($parecer); | |
| 155 | + | |
| 156 | + $this->assertEquals(1, count($service->getPareceres())); | |
| 157 | + | |
| 158 | + $parecer = clone $parecer; | |
| 159 | + $service->addPareceres(array($parecer, $parecer, $parecer)); | |
| 160 | + | |
| 161 | + $this->assertEquals(2, count($service->getPareceres())); | |
| 162 | + } | |
| 163 | + | |
| 164 | + /** | |
| 165 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestAdicionaParecerNoBoletim() | |
| 166 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_testAdicionaParecerNoBoletimVerificaValidadores() | |
| 167 | + */ | |
| 168 | + public function testAdicionaParecerNoBoletim() | |
| 169 | + { | |
| 170 | + $service = $this->_getServiceInstance(); | |
| 171 | + | |
| 172 | + $parecer = $this->_getTestAdicionaParecerNoBoletim(); | |
| 173 | + | |
| 174 | + $parecerOriginal = clone $parecer; | |
| 175 | + $service->addParecer($parecer); | |
| 176 | + | |
| 177 | + $pareceres = $service->getPareceres(); | |
| 178 | + $serviceParecer = array_shift($pareceres); | |
| 179 | + | |
| 180 | + $this->_testAdicionaParecerNoBoletimVerificaValidadores($serviceParecer); | |
| 181 | + } | |
| 182 | + | |
| 183 | + /** | |
| 184 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestSalvarPareceresNoBoletimInstanciasDePareceres() | |
| 185 | + */ | |
| 186 | + public function testSalvarPareceresNoBoletim() | |
| 187 | + { | |
| 188 | + $parecerAluno = $this->_getConfigOption('parecerDescritivoAluno', 'instance'); | |
| 189 | + | |
| 190 | + $pareceres = $this->_getTestSalvarPareceresNoBoletimInstanciasDePareceres(); | |
| 191 | + | |
| 192 | + // Configura mock para Avaliacao_Model_Parecer | |
| 193 | + $mock = $this->getCleanMock($this->_getParecerDescritivoDataMapper()); | |
| 194 | + | |
| 195 | + $mock->expects($this->at(0)) | |
| 196 | + ->method('findAll') | |
| 197 | + ->with(array(), array('parecerDescritivoAluno' => $parecerAluno->id), array('etapa' => 'ASC')) | |
| 198 | + ->will($this->returnValue(array())); | |
| 199 | + | |
| 200 | + foreach ($pareceres as $i => $parecer) { | |
| 201 | + $mock->expects($this->at($i + 1)) | |
| 202 | + ->method('save') | |
| 203 | + ->with($parecer) | |
| 204 | + ->will($this->returnValue(TRUE)); | |
| 205 | + } | |
| 206 | + | |
| 207 | + $this->_setParecerDescritivoAbstractDataMapperMock($mock); | |
| 208 | + | |
| 209 | + $service = $this->_getServiceInstance(); | |
| 210 | + $service->addPareceres($pareceres); | |
| 211 | + $service->savePareceres(); | |
| 212 | + } | |
| 213 | + | |
| 214 | + /** | |
| 215 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias() | |
| 216 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas() | |
| 217 | + */ | |
| 218 | + public function testSalvarPareceresNoBoletimComEtapasJaLancadas() | |
| 219 | + { | |
| 220 | + $parecerAluno = $this->_getConfigOption('parecerDescritivoAluno', 'instance'); | |
| 221 | + | |
| 222 | + $pareceres = $this->_getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias(); | |
| 223 | + | |
| 224 | + // Configura mock para Avaliacao_Model_Parecer | |
| 225 | + $mock = $this->getCleanMock($this->_getParecerDescritivoDataMapper()); | |
| 226 | + | |
| 227 | + $mock->expects($this->at(0)) | |
| 228 | + ->method('findAll') | |
| 229 | + ->with(array(), array('parecerDescritivoAluno' => $parecerAluno->id), array('etapa' => 'ASC')) | |
| 230 | + ->will($this->returnValue($this->_getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas())); | |
| 231 | + | |
| 232 | + foreach ($pareceres as $i => $parecer) { | |
| 233 | + $mock->expects($this->at($i + 1)) | |
| 234 | + ->method('save') | |
| 235 | + ->with($parecer) | |
| 236 | + ->will($this->returnValue(TRUE)); | |
| 237 | + } | |
| 238 | + | |
| 239 | + $this->_setParecerDescritivoAbstractDataMapperMock($mock); | |
| 240 | + | |
| 241 | + $service = $this->_getServiceInstance(); | |
| 242 | + $service->addPareceres($pareceres); | |
| 243 | + $service->savePareceres(); | |
| 244 | + } | |
| 245 | + | |
| 246 | + /** | |
| 247 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias() | |
| 248 | + * @see Avaliacao_Service_ParecerDescritivoCommon#_getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas() | |
| 249 | + */ | |
| 250 | + public function testSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadas() | |
| 251 | + { | |
| 252 | + $parecerAluno = $this->_getConfigOption('parecerDescritivoAluno', 'instance'); | |
| 253 | + | |
| 254 | + $pareceres = $this->_getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias(); | |
| 255 | + | |
| 256 | + // Configura mock para Avaliacao_Model_Parecer | |
| 257 | + $mock = $this->getCleanMock($this->_getParecerDescritivoDataMapper()); | |
| 258 | + | |
| 259 | + $mock->expects($this->at(0)) | |
| 260 | + ->method('findAll') | |
| 261 | + ->with(array(), array('parecerDescritivoAluno' => $parecerAluno->id), array('etapa' => 'ASC')) | |
| 262 | + ->will($this->returnValue($this->_getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas())); | |
| 263 | + | |
| 264 | + foreach ($pareceres as $i => $parecer) { | |
| 265 | + $mock->expects($this->at($i + 1)) | |
| 266 | + ->method('save') | |
| 267 | + ->with($parecer) | |
| 268 | + ->will($this->returnValue(TRUE)); | |
| 269 | + } | |
| 270 | + | |
| 271 | + $this->_setParecerDescritivoAbstractDataMapperMock($mock); | |
| 272 | + | |
| 273 | + $service = $this->_getServiceInstance(); | |
| 274 | + $service->addPareceres($pareceres); | |
| 275 | + $service->savePareceres(); | |
| 276 | + } | |
| 277 | +} | |
| 0 | 278 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/ParecerDescritivoComponenteAnualTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,165 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/ParecerDescritivoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_ParecerDescritivoComponenteAnualTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_ParecerDescritivoComponenteAnualTest extends Avaliacao_Service_ParecerDescritivoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('parecerDescritivo', RegraAvaliacao_Model_TipoParecerDescritivo::ANUAL_COMPONENTE); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + protected function _getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 54 | + { | |
| 55 | + return new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 56 | + 'componenteCurricular' => 1, | |
| 57 | + 'parecer' => 'Ok.' | |
| 58 | + )); | |
| 59 | + } | |
| 60 | + | |
| 61 | + protected function _getTestAdicionaParecerNoBoletim() | |
| 62 | + { | |
| 63 | + return new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 64 | + 'componenteCurricular' => 1, | |
| 65 | + 'parecer' => 'N/D.' | |
| 66 | + )); | |
| 67 | + } | |
| 68 | + | |
| 69 | + protected function _getTestSalvarPareceresNoBoletimInstanciasDePareceres() | |
| 70 | + { | |
| 71 | + return array( | |
| 72 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 73 | + 'componenteCurricular' => 1, | |
| 74 | + 'parecer' => 'N/D.', | |
| 75 | + 'etapa' => 'An' | |
| 76 | + )), | |
| 77 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 78 | + 'componenteCurricular' => 2, | |
| 79 | + 'parecer' => 'N/D.', | |
| 80 | + 'etapa' => 'An' | |
| 81 | + )), | |
| 82 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 83 | + 'componenteCurricular' => 3, | |
| 84 | + 'parecer' => 'N/D.', | |
| 85 | + 'etapa' => 'An' | |
| 86 | + )), | |
| 87 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 88 | + 'componenteCurricular' => 4, | |
| 89 | + 'parecer' => 'N/D.', | |
| 90 | + 'etapa' => 'An' | |
| 91 | + )) | |
| 92 | + ); | |
| 93 | + } | |
| 94 | + | |
| 95 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias() | |
| 96 | + { | |
| 97 | + return array( | |
| 98 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 99 | + 'componenteCurricular' => 1, | |
| 100 | + 'parecer' => 'N/D.', | |
| 101 | + 'etapa' => 'An' | |
| 102 | + )), | |
| 103 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 104 | + 'componenteCurricular' => 2, | |
| 105 | + 'parecer' => 'N/D.', | |
| 106 | + 'etapa' => 'An' | |
| 107 | + )) | |
| 108 | + ); | |
| 109 | + } | |
| 110 | + | |
| 111 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas() | |
| 112 | + { | |
| 113 | + return array( | |
| 114 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 115 | + 'id' => 1, | |
| 116 | + 'componenteCurricular' => 1, | |
| 117 | + 'parecer' => 'N/D.', | |
| 118 | + 'etapa' => 'An' | |
| 119 | + )) | |
| 120 | + ); | |
| 121 | + } | |
| 122 | + | |
| 123 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias() | |
| 124 | + { | |
| 125 | + return array( | |
| 126 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 127 | + 'componenteCurricular' => 1, | |
| 128 | + 'parecer' => 'N/D.', | |
| 129 | + 'etapa' => 'An' | |
| 130 | + )), | |
| 131 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 132 | + 'componenteCurricular' => 2, | |
| 133 | + 'parecer' => 'N/D.', | |
| 134 | + )) | |
| 135 | + ); | |
| 136 | + } | |
| 137 | + | |
| 138 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas() | |
| 139 | + { | |
| 140 | + return array( | |
| 141 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 142 | + 'id' => 1, | |
| 143 | + 'componenteCurricular' => 1, | |
| 144 | + 'parecer' => 'N/D.', | |
| 145 | + 'etapa' => 'An' | |
| 146 | + )), | |
| 147 | + ); | |
| 148 | + } | |
| 149 | + | |
| 150 | + protected function _testAdicionaParecerNoBoletimVerificaValidadores(Avaliacao_Model_ParecerDescritivoAbstract $parecer) | |
| 151 | + { | |
| 152 | + $this->assertEquals(1, $parecer->get('componenteCurricular')); | |
| 153 | + $this->assertEquals('An', $parecer->etapa); | |
| 154 | + $this->assertEquals('N/D.', $parecer->parecer); | |
| 155 | + | |
| 156 | + $validators = $parecer->getValidatorCollection(); | |
| 157 | + | |
| 158 | + $this->assertEquals($this->_getEtapasPossiveisParecer(), $validators['etapa']->getOption('choices')); | |
| 159 | + | |
| 160 | + $this->assertEquals( | |
| 161 | + $this->_getComponentesCursados(), | |
| 162 | + array_values($validators['componenteCurricular']->getOption('choices')) | |
| 163 | + ); | |
| 164 | + } | |
| 165 | +} | |
| 0 | 166 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/ParecerDescritivoComponenteEtapaTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,189 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/ParecerDescritivoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_ParecerDescritivoComponenteEtapaTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_ParecerDescritivoComponenteEtapaTest extends Avaliacao_Service_ParecerDescritivoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('parecerDescritivo', RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_COMPONENTE); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + protected function _getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 54 | + { | |
| 55 | + return new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 56 | + 'componenteCurricular' => 1, | |
| 57 | + 'parecer' => 'Ok.' | |
| 58 | + )); | |
| 59 | + } | |
| 60 | + | |
| 61 | + protected function _getTestAdicionaParecerNoBoletim() | |
| 62 | + { | |
| 63 | + return new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 64 | + 'componenteCurricular' => 1, | |
| 65 | + 'parecer' => 'N/D.' | |
| 66 | + )); | |
| 67 | + } | |
| 68 | + | |
| 69 | + protected function _getTestSalvarPareceresNoBoletimInstanciasDePareceres() | |
| 70 | + { | |
| 71 | + return array( | |
| 72 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 73 | + 'componenteCurricular' => 1, | |
| 74 | + 'parecer' => 'N/D.', | |
| 75 | + 'etapa' => 1 | |
| 76 | + )), | |
| 77 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 78 | + 'componenteCurricular' => 1, | |
| 79 | + 'parecer' => 'N/D.', | |
| 80 | + 'etapa' => 2 | |
| 81 | + )), | |
| 82 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 83 | + 'componenteCurricular' => 1, | |
| 84 | + 'parecer' => 'N/D.', | |
| 85 | + 'etapa' => 3 | |
| 86 | + )), | |
| 87 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 88 | + 'componenteCurricular' => 1, | |
| 89 | + 'parecer' => 'N/D.', | |
| 90 | + 'etapa' => 4 | |
| 91 | + )) | |
| 92 | + ); | |
| 93 | + } | |
| 94 | + | |
| 95 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias() | |
| 96 | + { | |
| 97 | + return array( | |
| 98 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 99 | + 'componenteCurricular' => 1, | |
| 100 | + 'parecer' => 'N/D.', | |
| 101 | + 'etapa' => 1 | |
| 102 | + )), | |
| 103 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 104 | + 'componenteCurricular' => 2, | |
| 105 | + 'parecer' => 'N/D.', | |
| 106 | + 'etapa' => 1 | |
| 107 | + )) | |
| 108 | + ); | |
| 109 | + } | |
| 110 | + | |
| 111 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas() | |
| 112 | + { | |
| 113 | + return array( | |
| 114 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 115 | + 'id' => 1, | |
| 116 | + 'componenteCurricular' => 1, | |
| 117 | + 'parecer' => 'N/D.', | |
| 118 | + 'etapa' => 1 | |
| 119 | + )), | |
| 120 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 121 | + 'id' => 2, | |
| 122 | + 'componenteCurricular' => 1, | |
| 123 | + 'parecer' => 'N/D.', | |
| 124 | + 'etapa' => 1 | |
| 125 | + )) | |
| 126 | + ); | |
| 127 | + } | |
| 128 | + | |
| 129 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias() | |
| 130 | + { | |
| 131 | + return array( | |
| 132 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 133 | + 'componenteCurricular' => 1, | |
| 134 | + 'parecer' => 'N/A.', | |
| 135 | + 'etapa' => 4 | |
| 136 | + )), | |
| 137 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 138 | + 'componenteCurricular' => 1, | |
| 139 | + 'parecer' => 'N/D.' | |
| 140 | + )) | |
| 141 | + ); | |
| 142 | + } | |
| 143 | + | |
| 144 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas() | |
| 145 | + { | |
| 146 | + return array( | |
| 147 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 148 | + 'id' => 1, | |
| 149 | + 'componenteCurricular' => 1, | |
| 150 | + 'parecer' => 'N/D.', | |
| 151 | + 'etapa' => 1 | |
| 152 | + )), | |
| 153 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 154 | + 'id' => 2, | |
| 155 | + 'componenteCurricular' => 1, | |
| 156 | + 'parecer' => 'N/D.', | |
| 157 | + 'etapa' => 2 | |
| 158 | + )), | |
| 159 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 160 | + 'id' => 3, | |
| 161 | + 'componenteCurricular' => 1, | |
| 162 | + 'parecer' => 'N/D.', | |
| 163 | + 'etapa' => 3 | |
| 164 | + )), | |
| 165 | + new Avaliacao_Model_ParecerDescritivoComponente(array( | |
| 166 | + 'id' => 4, | |
| 167 | + 'componenteCurricular' => 1, | |
| 168 | + 'parecer' => 'N/D.', | |
| 169 | + 'etapa' => 4 | |
| 170 | + )), | |
| 171 | + ); | |
| 172 | + } | |
| 173 | + | |
| 174 | + protected function _testAdicionaParecerNoBoletimVerificaValidadores(Avaliacao_Model_ParecerDescritivoAbstract $parecer) | |
| 175 | + { | |
| 176 | + $this->assertEquals(1, $parecer->get('componenteCurricular')); | |
| 177 | + $this->assertEquals(1, $parecer->etapa); | |
| 178 | + $this->assertEquals('N/D.', $parecer->parecer); | |
| 179 | + | |
| 180 | + $validators = $parecer->getValidatorCollection(); | |
| 181 | + | |
| 182 | + $this->assertEquals($this->_getEtapasPossiveisParecer(), $validators['etapa']->getOption('choices')); | |
| 183 | + | |
| 184 | + $this->assertEquals( | |
| 185 | + $this->_getComponentesCursados(), | |
| 186 | + array_values($validators['componenteCurricular']->getOption('choices')) | |
| 187 | + ); | |
| 188 | + } | |
| 189 | +} | |
| 0 | 190 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/ParecerDescritivoGeralAnualTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,128 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/ParecerDescritivoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_ParecerDescritivoGeralAnualTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_ParecerDescritivoGeralAnualTest extends Avaliacao_Service_ParecerDescritivoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('parecerDescritivo', RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + protected function _getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 54 | + { | |
| 55 | + return new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 56 | + 'parecer' => 'Ok.' | |
| 57 | + )); | |
| 58 | + } | |
| 59 | + | |
| 60 | + protected function _getTestAdicionaParecerNoBoletim() | |
| 61 | + { | |
| 62 | + return new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 63 | + 'parecer' => 'N/D.' | |
| 64 | + )); | |
| 65 | + } | |
| 66 | + | |
| 67 | + protected function _getTestSalvarPareceresNoBoletimInstanciasDePareceres() | |
| 68 | + { | |
| 69 | + return array( | |
| 70 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 71 | + 'parecer' => 'N/D.', | |
| 72 | + 'etapa' => 'An' | |
| 73 | + )) | |
| 74 | + ); | |
| 75 | + } | |
| 76 | + | |
| 77 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias() | |
| 78 | + { | |
| 79 | + return array( | |
| 80 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 81 | + 'parecer' => 'N/D.', | |
| 82 | + 'etapa' => 'An' | |
| 83 | + )) | |
| 84 | + ); | |
| 85 | + } | |
| 86 | + | |
| 87 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas() | |
| 88 | + { | |
| 89 | + return array( | |
| 90 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 91 | + 'id' => 1, | |
| 92 | + 'parecer' => 'N/D.', | |
| 93 | + 'etapa' => 'An' | |
| 94 | + )) | |
| 95 | + ); | |
| 96 | + } | |
| 97 | + | |
| 98 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias() | |
| 99 | + { | |
| 100 | + return array( | |
| 101 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 102 | + 'parecer' => 'N/D.' | |
| 103 | + )) | |
| 104 | + ); | |
| 105 | + } | |
| 106 | + | |
| 107 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas() | |
| 108 | + { | |
| 109 | + return array( | |
| 110 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 111 | + 'id' => 1, | |
| 112 | + 'parecer' => 'N/D.', | |
| 113 | + 'etapa' => 'An' | |
| 114 | + )) | |
| 115 | + ); | |
| 116 | + } | |
| 117 | + | |
| 118 | + protected function _testAdicionaParecerNoBoletimVerificaValidadores(Avaliacao_Model_ParecerDescritivoAbstract $parecer) | |
| 119 | + { | |
| 120 | + $this->assertEquals(1, $parecer->etapa); | |
| 121 | + $this->assertEquals('N/D.', $parecer->parecer); | |
| 122 | + | |
| 123 | + $validators = $parecer->getValidatorCollection(); | |
| 124 | + | |
| 125 | + $this->assertEquals($this->_getEtapasPossiveisParecer(), $validators['etapa']->getOption('choices')); | |
| 126 | + $this->assertFalse(isset($validators['componenteCurricular'])); | |
| 127 | + } | |
| 128 | +} | |
| 0 | 129 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/ParecerDescritivoGeralEtapaTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,168 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/ParecerDescritivoCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_ParecerDescritivoGeralEtapaTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_ParecerDescritivoGeralEtapaTest extends Avaliacao_Service_ParecerDescritivoCommon | |
| 46 | +{ | |
| 47 | + protected function setUp() | |
| 48 | + { | |
| 49 | + $this->_setRegraOption('parecerDescritivo', RegraAvaliacao_Model_TipoParecerDescritivo::ETAPA_GERAL); | |
| 50 | + parent::setUp(); | |
| 51 | + } | |
| 52 | + | |
| 53 | + protected function _getTestInstanciaDeParecerERegistradaApenasUmaVezNoBoletim() | |
| 54 | + { | |
| 55 | + return new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 56 | + 'parecer' => 'Ok.' | |
| 57 | + )); | |
| 58 | + } | |
| 59 | + | |
| 60 | + protected function _getTestAdicionaParecerNoBoletim() | |
| 61 | + { | |
| 62 | + return new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 63 | + 'parecer' => 'N/D.' | |
| 64 | + )); | |
| 65 | + } | |
| 66 | + | |
| 67 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstancias() | |
| 68 | + { | |
| 69 | + return array( | |
| 70 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 71 | + 'parecer' => 'N/D.', | |
| 72 | + 'etapa' => 2 | |
| 73 | + )), | |
| 74 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 75 | + 'parecer' => 'N/D.', | |
| 76 | + 'etapa' => 3 | |
| 77 | + )) | |
| 78 | + ); | |
| 79 | + } | |
| 80 | + | |
| 81 | + protected function _getTestSalvarPareceresNoBoletimComEtapasJaLancadasInstanciasJaLancadas() | |
| 82 | + { | |
| 83 | + return array( | |
| 84 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 85 | + 'id' => 1, | |
| 86 | + 'parecer' => 'N/D.', | |
| 87 | + 'etapa' => 1 | |
| 88 | + )), | |
| 89 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 90 | + 'id' => 1, | |
| 91 | + 'parecer' => 'N/D.', | |
| 92 | + 'etapa' => 2 | |
| 93 | + )) | |
| 94 | + ); | |
| 95 | + } | |
| 96 | + | |
| 97 | + protected function _getTestSalvarPareceresNoBoletimInstanciasDePareceres() | |
| 98 | + { | |
| 99 | + return array( | |
| 100 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 101 | + 'etapa' => 1, | |
| 102 | + 'parecer' => 'N/D.' | |
| 103 | + )), | |
| 104 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 105 | + 'etapa' => 2, | |
| 106 | + 'parecer' => 'N/D.' | |
| 107 | + )), | |
| 108 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 109 | + 'etapa' => 3, | |
| 110 | + 'parecer' => 'N/D.' | |
| 111 | + )), | |
| 112 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 113 | + 'etapa' => 4, | |
| 114 | + 'parecer' => 'N/D.' | |
| 115 | + )) | |
| 116 | + ); | |
| 117 | + } | |
| 118 | + | |
| 119 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstancias() | |
| 120 | + { | |
| 121 | + return array( | |
| 122 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 123 | + 'parecer' => 'N/D.', | |
| 124 | + 'etapa' => 4 | |
| 125 | + )), | |
| 126 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 127 | + 'parecer' => 'N/D.', | |
| 128 | + )) | |
| 129 | + ); | |
| 130 | + } | |
| 131 | + | |
| 132 | + protected function _getTestSalvasPareceresAtualizandoEtapaDaUltimaInstanciaAdicionadaNoBoletimComEtapasLancadasInstanciasLancadas() | |
| 133 | + { | |
| 134 | + return array( | |
| 135 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 136 | + 'id' => 1, | |
| 137 | + 'parecer' => 'N/D.', | |
| 138 | + 'etapa' => 2 | |
| 139 | + )), | |
| 140 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 141 | + 'id' => 2, | |
| 142 | + 'parecer' => 'N/D.', | |
| 143 | + 'etapa' => 2 | |
| 144 | + )), | |
| 145 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 146 | + 'id' => 3, | |
| 147 | + 'parecer' => 'N/D.', | |
| 148 | + 'etapa' => 3 | |
| 149 | + )), | |
| 150 | + new Avaliacao_Model_ParecerDescritivoGeral(array( | |
| 151 | + 'id' => 4, | |
| 152 | + 'parecer' => 'N/D.', | |
| 153 | + 'etapa' => 4 | |
| 154 | + )), | |
| 155 | + ); | |
| 156 | + } | |
| 157 | + | |
| 158 | + protected function _testAdicionaParecerNoBoletimVerificaValidadores(Avaliacao_Model_ParecerDescritivoAbstract $parecer) | |
| 159 | + { | |
| 160 | + $this->assertEquals(1, $parecer->etapa); | |
| 161 | + $this->assertEquals('N/D.', $parecer->parecer); | |
| 162 | + | |
| 163 | + $validators = $parecer->getValidatorCollection(); | |
| 164 | + | |
| 165 | + $this->assertEquals($this->_getEtapasPossiveisParecer(), $validators['etapa']->getOption('choices')); | |
| 166 | + $this->assertFalse(isset($validators['componenteCurricular'])); | |
| 167 | + } | |
| 168 | +} | |
| 0 | 169 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/PromocaoAlunoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,531 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_PromocaoAlunoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_PromocaoAlunoTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + protected function _setUpRegraAvaliacaoMock($tipoProgressao) | |
| 48 | + { | |
| 49 | + $mock = $this->getCleanMock('RegraAvaliacao_Model_Regra'); | |
| 50 | + $mock->expects($this->at(0)) | |
| 51 | + ->method('get') | |
| 52 | + ->with('tipoProgressao') | |
| 53 | + ->will($this->returnValue($tipoProgressao)); | |
| 54 | + | |
| 55 | + return $mock; | |
| 56 | + } | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * @expectedException CoreExt_Service_Exception | |
| 60 | + */ | |
| 61 | + public function testPromoverAlunoLancaExcecaoCasoSituacaoEstejaEmAndamento() | |
| 62 | + { | |
| 63 | + $situacao = new stdClass(); | |
| 64 | + $situacao->aprovado = FALSE; | |
| 65 | + $situacao->andamento = TRUE; | |
| 66 | + $situacao->recuperacao = FALSE; | |
| 67 | + $situacao->retidoFalta = FALSE; | |
| 68 | + | |
| 69 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 70 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 71 | + | |
| 72 | + $service = $this->setExcludedMethods(array('promover')) | |
| 73 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 74 | + | |
| 75 | + $service->expects($this->at(0)) | |
| 76 | + ->method('getSituacaoAluno') | |
| 77 | + ->will($this->returnValue($situacao)); | |
| 78 | + | |
| 79 | + $service->promover(); | |
| 80 | + } | |
| 81 | + | |
| 82 | + /** | |
| 83 | + * @expectedException CoreExt_Service_Exception | |
| 84 | + */ | |
| 85 | + public function testPromoverAlunoLancaExcecaoCasoMatriculaDoAlunoJaEstejaAprovadaOuReprovada() | |
| 86 | + { | |
| 87 | + $situacao = new stdClass(); | |
| 88 | + $situacao->aprovado = TRUE; | |
| 89 | + $situacao->andamento = FALSE; | |
| 90 | + $situacao->recuperacao = FALSE; | |
| 91 | + $situacao->retidoFalta = FALSE; | |
| 92 | + | |
| 93 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 94 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 95 | + | |
| 96 | + $service = $this->setExcludedMethods(array('promover')) | |
| 97 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 98 | + | |
| 99 | + $service->expects($this->at(0)) | |
| 100 | + ->method('getSituacaoAluno') | |
| 101 | + ->will($this->returnValue($situacao)); | |
| 102 | + | |
| 103 | + $service->expects($this->at(1)) | |
| 104 | + ->method('getOption') | |
| 105 | + ->with('aprovado') | |
| 106 | + ->will($this->returnValue(App_Model_MatriculaSituacao::APROVADO)); | |
| 107 | + | |
| 108 | + $service->promover(); | |
| 109 | + } | |
| 110 | + | |
| 111 | + public function testPromoverAlunoAutomaticamenteProgressaoContinuada() | |
| 112 | + { | |
| 113 | + $situacao = new stdClass(); | |
| 114 | + $situacao->aprovado = TRUE; | |
| 115 | + $situacao->andamento = FALSE; | |
| 116 | + $situacao->recuperacao = FALSE; | |
| 117 | + $situacao->retidoFalta = FALSE; | |
| 118 | + | |
| 119 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 120 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 121 | + | |
| 122 | + // Mock para RegraAvaliacao_Model_Regra | |
| 123 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::CONTINUADA); | |
| 124 | + | |
| 125 | + $service = $this->setExcludedMethods(array('promover')) | |
| 126 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 127 | + | |
| 128 | + $service->expects($this->at(0)) | |
| 129 | + ->method('getSituacaoAluno') | |
| 130 | + ->will($this->returnValue($situacao)); | |
| 131 | + | |
| 132 | + $service->expects($this->at(1)) | |
| 133 | + ->method('getOption') | |
| 134 | + ->with('aprovado') | |
| 135 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 136 | + | |
| 137 | + $service->expects($this->at(2)) | |
| 138 | + ->method('getRegra') | |
| 139 | + ->will($this->returnValue($regra)); | |
| 140 | + | |
| 141 | + $service->expects($this->at(3)) | |
| 142 | + ->method('getOption') | |
| 143 | + ->with('matricula') | |
| 144 | + ->will($this->returnValue($codMatricula)); | |
| 145 | + | |
| 146 | + $service->expects($this->at(4)) | |
| 147 | + ->method('getOption') | |
| 148 | + ->with('usuario') | |
| 149 | + ->will($this->returnValue($codUsuario)); | |
| 150 | + | |
| 151 | + $service->expects($this->at(5)) | |
| 152 | + ->method('_updateMatricula') | |
| 153 | + ->with($codMatricula, $codUsuario, TRUE) | |
| 154 | + ->will($this->returnValue(TRUE)); | |
| 155 | + | |
| 156 | + $this->assertTrue($service->promover()); | |
| 157 | + } | |
| 158 | + | |
| 159 | + public function testPromoverAlunoAutomaticamenteProgressaoNaoContinuadaAutoMediaPresenca() | |
| 160 | + { | |
| 161 | + $situacao = new stdClass(); | |
| 162 | + $situacao->aprovado = TRUE; | |
| 163 | + $situacao->andamento = FALSE; | |
| 164 | + $situacao->recuperacao = FALSE; | |
| 165 | + $situacao->retidoFalta = FALSE; | |
| 166 | + | |
| 167 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 168 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 169 | + | |
| 170 | + // Mock para RegraAvaliacao_Model_Regra | |
| 171 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_MEDIA_PRESENCA); | |
| 172 | + | |
| 173 | + $service = $this->setExcludedMethods(array('promover')) | |
| 174 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 175 | + | |
| 176 | + $service->expects($this->at(0)) | |
| 177 | + ->method('getSituacaoAluno') | |
| 178 | + ->will($this->returnValue($situacao)); | |
| 179 | + | |
| 180 | + $service->expects($this->at(1)) | |
| 181 | + ->method('getOption') | |
| 182 | + ->with('aprovado') | |
| 183 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 184 | + | |
| 185 | + $service->expects($this->at(2)) | |
| 186 | + ->method('getRegra') | |
| 187 | + ->will($this->returnValue($regra)); | |
| 188 | + | |
| 189 | + $service->expects($this->at(3)) | |
| 190 | + ->method('getOption') | |
| 191 | + ->with('matricula') | |
| 192 | + ->will($this->returnValue($codMatricula)); | |
| 193 | + | |
| 194 | + $service->expects($this->at(4)) | |
| 195 | + ->method('getOption') | |
| 196 | + ->with('usuario') | |
| 197 | + ->will($this->returnValue($codUsuario)); | |
| 198 | + | |
| 199 | + $service->expects($this->at(5)) | |
| 200 | + ->method('_updateMatricula') | |
| 201 | + ->with($codMatricula, $codUsuario, TRUE) | |
| 202 | + ->will($this->returnValue(TRUE)); | |
| 203 | + | |
| 204 | + $this->assertTrue($service->promover()); | |
| 205 | + } | |
| 206 | + | |
| 207 | + public function testReprovarAlunoAutomaticamenteProgressaoNaoContinuadaAutoMediaPresenca() | |
| 208 | + { | |
| 209 | + $situacao = new stdClass(); | |
| 210 | + $situacao->aprovado = TRUE; | |
| 211 | + $situacao->andamento = FALSE; | |
| 212 | + $situacao->recuperacao = FALSE; | |
| 213 | + $situacao->retidoFalta = TRUE; | |
| 214 | + | |
| 215 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 216 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 217 | + | |
| 218 | + // Mock para RegraAvaliacao_Model_Regra | |
| 219 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_MEDIA_PRESENCA); | |
| 220 | + | |
| 221 | + $service = $this->setExcludedMethods(array('promover')) | |
| 222 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 223 | + | |
| 224 | + $service->expects($this->at(0)) | |
| 225 | + ->method('getSituacaoAluno') | |
| 226 | + ->will($this->returnValue($situacao)); | |
| 227 | + | |
| 228 | + $service->expects($this->at(1)) | |
| 229 | + ->method('getOption') | |
| 230 | + ->with('aprovado') | |
| 231 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 232 | + | |
| 233 | + $service->expects($this->at(2)) | |
| 234 | + ->method('getRegra') | |
| 235 | + ->will($this->returnValue($regra)); | |
| 236 | + | |
| 237 | + $service->expects($this->at(3)) | |
| 238 | + ->method('getOption') | |
| 239 | + ->with('matricula') | |
| 240 | + ->will($this->returnValue($codMatricula)); | |
| 241 | + | |
| 242 | + $service->expects($this->at(4)) | |
| 243 | + ->method('getOption') | |
| 244 | + ->with('usuario') | |
| 245 | + ->will($this->returnValue($codUsuario)); | |
| 246 | + | |
| 247 | + $service->expects($this->at(5)) | |
| 248 | + ->method('_updateMatricula') | |
| 249 | + ->with($codMatricula, $codUsuario, FALSE) | |
| 250 | + ->will($this->returnValue(TRUE)); | |
| 251 | + | |
| 252 | + $this->assertTrue($service->promover()); | |
| 253 | + } | |
| 254 | + | |
| 255 | + public function testPromoverAlunoAutomaticamenteProgressaoNaoContinuadaAutoMedia() | |
| 256 | + { | |
| 257 | + $situacao = new stdClass(); | |
| 258 | + $situacao->aprovado = TRUE; | |
| 259 | + $situacao->andamento = FALSE; | |
| 260 | + $situacao->recuperacao = FALSE; | |
| 261 | + $situacao->retidoFalta = TRUE; // Não considera retenção por falta | |
| 262 | + | |
| 263 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 264 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 265 | + | |
| 266 | + // Mock para RegraAvaliacao_Model_Regra | |
| 267 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_AUTO_SOMENTE_MEDIA); | |
| 268 | + | |
| 269 | + $service = $this->setExcludedMethods(array('promover')) | |
| 270 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 271 | + | |
| 272 | + $service->expects($this->at(0)) | |
| 273 | + ->method('getSituacaoAluno') | |
| 274 | + ->will($this->returnValue($situacao)); | |
| 275 | + | |
| 276 | + $service->expects($this->at(1)) | |
| 277 | + ->method('getOption') | |
| 278 | + ->with('aprovado') | |
| 279 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 280 | + | |
| 281 | + $service->expects($this->at(2)) | |
| 282 | + ->method('getRegra') | |
| 283 | + ->will($this->returnValue($regra)); | |
| 284 | + | |
| 285 | + $service->expects($this->at(3)) | |
| 286 | + ->method('getOption') | |
| 287 | + ->with('matricula') | |
| 288 | + ->will($this->returnValue($codMatricula)); | |
| 289 | + | |
| 290 | + $service->expects($this->at(4)) | |
| 291 | + ->method('getOption') | |
| 292 | + ->with('usuario') | |
| 293 | + ->will($this->returnValue($codUsuario)); | |
| 294 | + | |
| 295 | + $service->expects($this->at(5)) | |
| 296 | + ->method('_updateMatricula') | |
| 297 | + ->with($codMatricula, $codUsuario, TRUE) | |
| 298 | + ->will($this->returnValue(TRUE)); | |
| 299 | + | |
| 300 | + $this->assertTrue($service->promover()); | |
| 301 | + } | |
| 302 | + | |
| 303 | + public function testPromoverAlunoManualmenteProgressaoNaoContinuadaLancaExcecaoSeNaoConfirmada() | |
| 304 | + { | |
| 305 | + $situacao = new stdClass(); | |
| 306 | + $situacao->aprovado = FALSE; // Reprovado por nota | |
| 307 | + $situacao->andamento = FALSE; | |
| 308 | + $situacao->recuperacao = FALSE; | |
| 309 | + $situacao->retidoFalta = FALSE; | |
| 310 | + | |
| 311 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 312 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 313 | + | |
| 314 | + // Mock para RegraAvaliacao_Model_Regra | |
| 315 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_MANUAL); | |
| 316 | + | |
| 317 | + $service = $this->setExcludedMethods(array('promover')) | |
| 318 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 319 | + | |
| 320 | + $service->expects($this->at(0)) | |
| 321 | + ->method('getSituacaoAluno') | |
| 322 | + ->will($this->returnValue($situacao)); | |
| 323 | + | |
| 324 | + $service->expects($this->at(1)) | |
| 325 | + ->method('getOption') | |
| 326 | + ->with('aprovado') | |
| 327 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 328 | + | |
| 329 | + $service->expects($this->at(2)) | |
| 330 | + ->method('getRegra') | |
| 331 | + ->will($this->returnValue($regra)); | |
| 332 | + | |
| 333 | + try { | |
| 334 | + $service->promover(); | |
| 335 | + $this->fail('Invocar o método "->promover()" sem uma confirmação booleana ' | |
| 336 | + . 'explícita (TRUE ou FALSE) em uma progressão "NAO_CONTINUADA_MANUAL" ' | |
| 337 | + . 'causa exceção.'); | |
| 338 | + } | |
| 339 | + catch (CoreExt_Service_Exception $e) | |
| 340 | + { | |
| 341 | + } | |
| 342 | + } | |
| 343 | + | |
| 344 | + public function testPromoverAlunoManualmenteProgressaoNaoContinuada() | |
| 345 | + { | |
| 346 | + $situacao = new stdClass(); | |
| 347 | + $situacao->aprovado = FALSE; // Reprovado por nota | |
| 348 | + $situacao->andamento = FALSE; | |
| 349 | + $situacao->recuperacao = FALSE; | |
| 350 | + $situacao->retidoFalta = FALSE; | |
| 351 | + | |
| 352 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 353 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 354 | + | |
| 355 | + // Mock para RegraAvaliacao_Model_Regra | |
| 356 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_MANUAL); | |
| 357 | + | |
| 358 | + $service = $this->setExcludedMethods(array('promover')) | |
| 359 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 360 | + | |
| 361 | + $service->expects($this->at(0)) | |
| 362 | + ->method('getSituacaoAluno') | |
| 363 | + ->will($this->returnValue($situacao)); | |
| 364 | + | |
| 365 | + $service->expects($this->at(1)) | |
| 366 | + ->method('getOption') | |
| 367 | + ->with('aprovado') | |
| 368 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 369 | + | |
| 370 | + $service->expects($this->at(2)) | |
| 371 | + ->method('getRegra') | |
| 372 | + ->will($this->returnValue($regra)); | |
| 373 | + | |
| 374 | + $service->expects($this->at(3)) | |
| 375 | + ->method('getOption') | |
| 376 | + ->with('matricula') | |
| 377 | + ->will($this->returnValue($codMatricula)); | |
| 378 | + | |
| 379 | + $service->expects($this->at(4)) | |
| 380 | + ->method('getOption') | |
| 381 | + ->with('usuario') | |
| 382 | + ->will($this->returnValue($codUsuario)); | |
| 383 | + | |
| 384 | + $service->expects($this->at(5)) | |
| 385 | + ->method('_updateMatricula') | |
| 386 | + ->with($codMatricula, $codUsuario, TRUE) | |
| 387 | + ->will($this->returnValue(TRUE)); | |
| 388 | + | |
| 389 | + $this->assertTrue($service->promover(TRUE)); | |
| 390 | + } | |
| 391 | + | |
| 392 | + public function testReprovarAlunoManualmenteProgressaoNaoContinuada() | |
| 393 | + { | |
| 394 | + $situacao = new stdClass(); | |
| 395 | + $situacao->aprovado = FALSE; // Reprovado por nota | |
| 396 | + $situacao->andamento = FALSE; | |
| 397 | + $situacao->recuperacao = FALSE; | |
| 398 | + $situacao->retidoFalta = FALSE; | |
| 399 | + | |
| 400 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 401 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 402 | + | |
| 403 | + // Mock para RegraAvaliacao_Model_Regra | |
| 404 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::NAO_CONTINUADA_MANUAL); | |
| 405 | + | |
| 406 | + $service = $this->setExcludedMethods(array('promover')) | |
| 407 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 408 | + | |
| 409 | + $service->expects($this->at(0)) | |
| 410 | + ->method('getSituacaoAluno') | |
| 411 | + ->will($this->returnValue($situacao)); | |
| 412 | + | |
| 413 | + $service->expects($this->at(1)) | |
| 414 | + ->method('getOption') | |
| 415 | + ->with('aprovado') | |
| 416 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 417 | + | |
| 418 | + $service->expects($this->at(2)) | |
| 419 | + ->method('getRegra') | |
| 420 | + ->will($this->returnValue($regra)); | |
| 421 | + | |
| 422 | + $service->expects($this->at(3)) | |
| 423 | + ->method('getOption') | |
| 424 | + ->with('matricula') | |
| 425 | + ->will($this->returnValue($codMatricula)); | |
| 426 | + | |
| 427 | + $service->expects($this->at(4)) | |
| 428 | + ->method('getOption') | |
| 429 | + ->with('usuario') | |
| 430 | + ->will($this->returnValue($codUsuario)); | |
| 431 | + | |
| 432 | + $service->expects($this->at(5)) | |
| 433 | + ->method('_updateMatricula') | |
| 434 | + ->with($codMatricula, $codUsuario, FALSE) | |
| 435 | + ->will($this->returnValue(TRUE)); | |
| 436 | + | |
| 437 | + $this->assertTrue($service->promover(FALSE)); | |
| 438 | + } | |
| 439 | + | |
| 440 | + public function testSaveBoletim() | |
| 441 | + { | |
| 442 | + $situacao = new stdClass(); | |
| 443 | + $situacao->aprovado = TRUE; | |
| 444 | + $situacao->andamento = FALSE; | |
| 445 | + $situacao->recuperacao = FALSE; | |
| 446 | + $situacao->retidoFalta = FALSE; | |
| 447 | + | |
| 448 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 449 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 450 | + | |
| 451 | + $service = $this->setExcludedMethods(array('save')) | |
| 452 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 453 | + | |
| 454 | + $service->expects($this->at(0)) | |
| 455 | + ->method('saveNotas') | |
| 456 | + ->will($this->returnValue($service)); | |
| 457 | + | |
| 458 | + $service->expects($this->at(1)) | |
| 459 | + ->method('saveFaltas') | |
| 460 | + ->will($this->returnValue($service)); | |
| 461 | + | |
| 462 | + $service->expects($this->at(2)) | |
| 463 | + ->method('savePareceres') | |
| 464 | + ->will($this->returnValue($service)); | |
| 465 | + | |
| 466 | + $service->expects($this->at(3)) | |
| 467 | + ->method('promover') | |
| 468 | + ->will($this->returnValue(TRUE)); | |
| 469 | + | |
| 470 | + try { | |
| 471 | + $service->save(); | |
| 472 | + } | |
| 473 | + catch (Exception $e) { | |
| 474 | + $this->fail('O método "->save()" não deveria ter lançado exceção com o ' | |
| 475 | + . 'cenário de teste configurado.'); | |
| 476 | + } | |
| 477 | + } | |
| 478 | + | |
| 479 | + public function testIntegracaoMatriculaPromoverAluno() | |
| 480 | + { | |
| 481 | + $situacao = new stdClass(); | |
| 482 | + $situacao->aprovado = TRUE; | |
| 483 | + $situacao->andamento = FALSE; | |
| 484 | + $situacao->recuperacao = FALSE; | |
| 485 | + $situacao->retidoFalta = FALSE; | |
| 486 | + | |
| 487 | + $codMatricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 488 | + $codUsuario = $this->_getConfigOption('usuario', 'cod_usuario'); | |
| 489 | + | |
| 490 | + // Mock para RegraAvaliacao_Model_Regra | |
| 491 | + $regra = $this->_setUpRegraAvaliacaoMock(RegraAvaliacao_Model_TipoProgressao::CONTINUADA); | |
| 492 | + | |
| 493 | + $service = $this->setExcludedMethods(array('promover', '_updateMatricula')) | |
| 494 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 495 | + | |
| 496 | + $service->expects($this->at(0)) | |
| 497 | + ->method('getSituacaoAluno') | |
| 498 | + ->will($this->returnValue($situacao)); | |
| 499 | + | |
| 500 | + $service->expects($this->at(1)) | |
| 501 | + ->method('getOption') | |
| 502 | + ->with('aprovado') | |
| 503 | + ->will($this->returnValue(App_Model_MatriculaSituacao::EM_ANDAMENTO)); | |
| 504 | + | |
| 505 | + $service->expects($this->at(2)) | |
| 506 | + ->method('getRegra') | |
| 507 | + ->will($this->returnValue($regra)); | |
| 508 | + | |
| 509 | + $service->expects($this->at(3)) | |
| 510 | + ->method('getOption') | |
| 511 | + ->with('matricula') | |
| 512 | + ->will($this->returnValue($codMatricula)); | |
| 513 | + | |
| 514 | + $service->expects($this->at(4)) | |
| 515 | + ->method('getOption') | |
| 516 | + ->with('usuario') | |
| 517 | + ->will($this->returnValue($codUsuario)); | |
| 518 | + | |
| 519 | + // Configura mock de instância de classe legada | |
| 520 | + $matricula = $this->getCleanMock('clsPmieducarMatricula'); | |
| 521 | + | |
| 522 | + $matricula->expects($this->at(0)) | |
| 523 | + ->method('edita') | |
| 524 | + ->will($this->returnValue(TRUE)); | |
| 525 | + | |
| 526 | + CoreExt_Entity::addClassToStorage('clsPmieducarMatricula', $matricula, | |
| 527 | + 'include/pmieducar/clsPmieducarMatricula.inc.php', TRUE); | |
| 528 | + | |
| 529 | + $this->assertTrue($service->promover()); | |
| 530 | + } | |
| 531 | +} | |
| 0 | 532 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/SituacaoTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,121 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_SituacaoTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_SituacaoTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + public function testSituacaoAluno() | |
| 48 | + { | |
| 49 | + $notaSituacoes = array( | |
| 50 | + 1 => App_Model_MatriculaSituacao::APROVADO, | |
| 51 | + 2 => App_Model_MatriculaSituacao::APROVADO_APOS_EXAME, | |
| 52 | + 3 => App_Model_MatriculaSituacao::EM_ANDAMENTO, | |
| 53 | + 4 => App_Model_MatriculaSituacao::EM_EXAME, | |
| 54 | + 5 => App_Model_MatriculaSituacao::REPROVADO | |
| 55 | + ); | |
| 56 | + | |
| 57 | + $faltaSituacoes = array( | |
| 58 | + 1 => App_Model_MatriculaSituacao::EM_ANDAMENTO, | |
| 59 | + 2 => App_Model_MatriculaSituacao::APROVADO, | |
| 60 | + 3 => App_Model_MatriculaSituacao::REPROVADO | |
| 61 | + ); | |
| 62 | + | |
| 63 | + // Possibilidades | |
| 64 | + $expected = array( | |
| 65 | + 1 => array( | |
| 66 | + 1 => array(FALSE, TRUE, FALSE, FALSE), | |
| 67 | + 2 => array(TRUE, FALSE, FALSE, FALSE), | |
| 68 | + 3 => array(FALSE, FALSE, TRUE, FALSE) | |
| 69 | + ), | |
| 70 | + 2 => array( | |
| 71 | + 1 => array(FALSE, TRUE, FALSE, TRUE), | |
| 72 | + 2 => array(TRUE, FALSE, FALSE, TRUE), | |
| 73 | + 3 => array(FALSE, FALSE, TRUE, TRUE) | |
| 74 | + ), | |
| 75 | + 3 => array( | |
| 76 | + 1 => array(FALSE, TRUE, FALSE, FALSE), | |
| 77 | + 2 => array(FALSE, TRUE, FALSE, FALSE), | |
| 78 | + 3 => array(FALSE, TRUE, TRUE, FALSE) | |
| 79 | + ), | |
| 80 | + 4 => array( | |
| 81 | + 1 => array(FALSE, TRUE, FALSE, TRUE), | |
| 82 | + 2 => array(FALSE, TRUE, FALSE, TRUE), | |
| 83 | + 3 => array(FALSE, TRUE, TRUE, TRUE) | |
| 84 | + ), | |
| 85 | + 5 => array( | |
| 86 | + 1 => array(FALSE, TRUE, FALSE, FALSE), | |
| 87 | + 2 => array(FALSE, FALSE, FALSE, FALSE), | |
| 88 | + 3 => array(FALSE, FALSE, TRUE, FALSE) | |
| 89 | + ) | |
| 90 | + ); | |
| 91 | + | |
| 92 | + foreach ($notaSituacoes as $i => $notaSituacao) { | |
| 93 | + $nota = new stdClass(); | |
| 94 | + $nota->situacao = $notaSituacao; | |
| 95 | + | |
| 96 | + foreach ($faltaSituacoes as $ii => $faltaSituacao) { | |
| 97 | + $service = $this->setExcludedMethods(array('getSituacaoAluno')) | |
| 98 | + ->getCleanMock('Avaliacao_Service_Boletim'); | |
| 99 | + | |
| 100 | + $falta = new stdClass(); | |
| 101 | + $falta->situacao = $faltaSituacao; | |
| 102 | + | |
| 103 | + $service->expects($this->once()) | |
| 104 | + ->method('getSituacaoComponentesCurriculares') | |
| 105 | + ->will($this->returnValue($nota)); | |
| 106 | + | |
| 107 | + $service->expects($this->once()) | |
| 108 | + ->method('getSituacaoFaltas') | |
| 109 | + ->will($this->returnValue($falta)); | |
| 110 | + | |
| 111 | + // Testa | |
| 112 | + $situacao = $service->getSituacaoAluno(); | |
| 113 | + | |
| 114 | + $this->assertEquals($expected[$i][$ii][0], $situacao->aprovado, "Aprovado, caso $i - $ii"); | |
| 115 | + $this->assertEquals($expected[$i][$ii][1], $situacao->andamento, "Andamento, caso $i - $ii"); | |
| 116 | + $this->assertEquals($expected[$i][$ii][2], $situacao->retidoFalta, "Retido por falta, caso $i - $ii"); | |
| 117 | + $this->assertEquals($expected[$i][$ii][3], $situacao->recuperacao, "Recuperação, caso $i - $ii"); | |
| 118 | + } | |
| 119 | + } | |
| 120 | + } | |
| 121 | +} | |
| 0 | 122 | \ No newline at end of file | ... | ... |
| ... | ... | @@ -0,0 +1,951 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'include/pmieducar/clsPmieducarMatricula.inc.php'; | |
| 33 | +require_once 'include/pmieducar/clsPmieducarSerie.inc.php'; | |
| 34 | +require_once 'include/pmieducar/clsPmieducarCurso.inc.php'; | |
| 35 | +require_once 'include/pmieducar/clsPmieducarEscolaSerieDisciplina.inc.php'; | |
| 36 | +require_once 'include/pmieducar/clsPmieducarDispensaDisciplina.inc.php'; | |
| 37 | + | |
| 38 | +require_once 'AreaConhecimento/Model/AreaDataMapper.php'; | |
| 39 | + | |
| 40 | +require_once 'FormulaMedia/Model/Formula.php'; | |
| 41 | +require_once 'FormulaMedia/Model/FormulaDataMapper.php'; | |
| 42 | + | |
| 43 | +require_once 'TabelaArredondamento/Model/TabelaValor.php'; | |
| 44 | +require_once 'TabelaArredondamento/Model/TabelaValorDataMapper.php'; | |
| 45 | + | |
| 46 | +require_once 'TabelaArredondamento/Model/Tabela.php'; | |
| 47 | +require_once 'TabelaArredondamento/Model/TabelaDataMapper.php'; | |
| 48 | + | |
| 49 | +require_once 'RegraAvaliacao/Model/Regra.php'; | |
| 50 | +require_once 'RegraAvaliacao/Model/RegraDataMapper.php'; | |
| 51 | + | |
| 52 | +require_once 'Avaliacao/Model/NotaAlunoDataMapper.php'; | |
| 53 | +require_once 'Avaliacao/Model/NotaComponenteDataMapper.php'; | |
| 54 | +require_once 'Avaliacao/Model/NotaComponenteMediaDataMapper.php'; | |
| 55 | + | |
| 56 | +require_once 'Avaliacao/Model/FaltaAlunoDataMapper.php'; | |
| 57 | +require_once 'Avaliacao/Model/FaltaGeralDataMapper.php'; | |
| 58 | +require_once 'Avaliacao/Model/FaltaComponenteDataMapper.php'; | |
| 59 | + | |
| 60 | +require_once 'Avaliacao/Model/ParecerDescritivoAlunoDataMapper.php'; | |
| 61 | +require_once 'Avaliacao/Model/ParecerDescritivoAbstractDataMapper.php'; | |
| 62 | +require_once 'Avaliacao/Model/ParecerDescritivoComponenteDataMapper.php'; | |
| 63 | +require_once 'Avaliacao/Model/ParecerDescritivoGeralDataMapper.php'; | |
| 64 | + | |
| 65 | +require_once 'Avaliacao/Service/Boletim.php'; | |
| 66 | + | |
| 67 | +/** | |
| 68 | + * Avaliacao_Service_TestCommon abstract class. | |
| 69 | + * | |
| 70 | + * Configura o service Avaliacao_Service_Boletim com mocks de suas dependências | |
| 71 | + * para que seja mais simples o processo de teste dos diversos comportamentos. | |
| 72 | + * A configuração básica segue o melhor cenário: as instâncias de | |
| 73 | + * Avaliacao_Model_NotaAluno e Avaliacao_Model_FaltaAluno existirão. Nenhuma | |
| 74 | + * nota, média ou falta terá sido lançada. | |
| 75 | + * | |
| 76 | + * Alguns métodos podem ser sobrescritos para que os mocks retornem o | |
| 77 | + * comportamento desejado para a sessão de testes (como os métodos | |
| 78 | + * _getMatricula(), _getSerie()) ou, pode-se usar o setter _setConfigOption() | |
| 79 | + * para alterar apenas um dos valores default da classe. | |
| 80 | + * | |
| 81 | + * A configuração padrão do service é constituída de: | |
| 82 | + * - Código do usuário: 1 | |
| 83 | + * - Código de matrícula: 1 | |
| 84 | + * - RegraAvaliacao_Model_RegraDataMapper: configuração ampla. Ver o array | |
| 85 | + * $_regraOptions e o método _setRegraOption para entender a configuração | |
| 86 | + * da instância | |
| 87 | + * - ComponenteCurricular_Model_ComponenteDataMapper: mock que retorna | |
| 88 | + * diferentes instâncias de ComponenteCurricular_Model_Componente em cada | |
| 89 | + * chamada. Essas instâncias são definidas na opção 'componenteCurricular' | |
| 90 | + * do array $_config. Esses componentes correspondem com os valores | |
| 91 | + * retornados pelos mocks de classes legadas (configuradas nos métodos | |
| 92 | + * _setUp*Mock() | |
| 93 | + * - Avaliacao_Model_NotaAlunoDataMapper: mock que retorna uma instância | |
| 94 | + * de Avaliacao_Model_NotaAluno com as configurações padrão | |
| 95 | + * - Avaliacao_Model_NotaComponenteDataMapper: mock que retorna um array | |
| 96 | + * vazio. Não existem notas lançadas para o aluno | |
| 97 | + * - Avaliacao_Model_NotaComponenteMediaDataMapper: mock que retorna um array | |
| 98 | + * vazio. Não existem médias lançadas para o aluno | |
| 99 | + * - Avaliacao_Model_FaltaAlunoDataMapper: mock que retorna uma instância | |
| 100 | + * de Avaliacao_Model_FaltaAluno com as configurações padrão | |
| 101 | + * - Avaliacao_Model_FaltaAbstractDataMapper: mock que retorna um array | |
| 102 | + * vazio. Não existem faltas lançadas para o aluno. | |
| 103 | + * OBSERVAÇÃO: métodos que sobrescreverem este, devem estar conscientes de | |
| 104 | + * que é necessário configurar o mock para retornar objeto(s) de acordo | |
| 105 | + * com o 'tipoPresenca' da instância de 'RegraAvaliacao_Model_Regra'. Ver o | |
| 106 | + * array $_regraOptions para mais informações. | |
| 107 | + * | |
| 108 | + * Outro ponto fundamental é entender que boa parte da inicialização do service | |
| 109 | + * constitui a chamadas de instâncias das classes legadas, encapsuladas nos | |
| 110 | + * métodos de App_Model_IedFinder. Estes são configurados nos métodos | |
| 111 | + * _setUp*Mock(). Para alterar o comportamento desses métodos, existem duas | |
| 112 | + * opções: | |
| 113 | + * | |
| 114 | + * - Chamar o método _setConfigOptions() ou setConfigOption em uma sobrescrição | |
| 115 | + * de setUp() | |
| 116 | + * - Sobrescrever o método | |
| 117 | + * | |
| 118 | + * Recomenda-se usar os métodos _setConfigOption e _setRegraOption a | |
| 119 | + * sobrescrever os métodos já que proporcionam mais possibilidade de | |
| 120 | + * configuração para cada método de teste. | |
| 121 | + * | |
| 122 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 123 | + * @category i-Educar | |
| 124 | + * @license @@license@@ | |
| 125 | + * @package Avaliacao | |
| 126 | + * @subpackage UnitTests | |
| 127 | + * @since Classe disponível desde a versão 1.1.0 | |
| 128 | + * @version @@package_version@@ | |
| 129 | + */ | |
| 130 | +abstract class Avaliacao_Service_TestCommon extends UnitBaseTest | |
| 131 | +{ | |
| 132 | + /** | |
| 133 | + * Array com as diretrizes de configuração para uso nas dependências de | |
| 134 | + * Avaliacao_Service_Boletim. | |
| 135 | + * @var array | |
| 136 | + */ | |
| 137 | + protected $_config = array(); | |
| 138 | + | |
| 139 | + /** | |
| 140 | + * @var RegraAvaliacao_Model_RegraDataMapper | |
| 141 | + */ | |
| 142 | + protected $_regraDataMapperMock = NULL; | |
| 143 | + | |
| 144 | + /** | |
| 145 | + * Opções de configuração para RegraAvaliacao_Model_RegraDataMapper. Por | |
| 146 | + * padrão, a regra terá: | |
| 147 | + * | |
| 148 | + * - Identificador "1" | |
| 149 | + * - Nome "Regra geral" | |
| 150 | + * - Tipo de nota numérica | |
| 151 | + * - Progressão continuada | |
| 152 | + * - Presença por componente | |
| 153 | + * - Nenhum parecer descritivo | |
| 154 | + * - Média para promoção de "6" | |
| 155 | + * - Tabela de arredondamento com valores de 0 a 10 | |
| 156 | + * - Fórmula de média aritmética simples (Soma etapas / Qtde etapas) | |
| 157 | + * - Fórmula de recuperação ponderada (Soma etapas x 0.6 + Recuperação x 0.4) | |
| 158 | + * - Porcentagem de presença mínima de "75%" | |
| 159 | + * | |
| 160 | + * Para alterar algum desses valores, basta usar o método | |
| 161 | + * _setRegraOption($key, $value) onde $key é a chave do array e $value o valor | |
| 162 | + * a ser usado. | |
| 163 | + * | |
| 164 | + * @var array | |
| 165 | + */ | |
| 166 | + protected $_regraOptions = array( | |
| 167 | + 'id' => 1, | |
| 168 | + 'nome' => 'Regra geral', | |
| 169 | + 'tipoNota' => RegraAvaliacao_Model_Nota_TipoValor::NUMERICA, | |
| 170 | + 'tipoProgressao' => RegraAvaliacao_Model_TipoProgressao::CONTINUADA, | |
| 171 | + 'tipoPresenca' => RegraAvaliacao_Model_TipoPresenca::POR_COMPONENTE, | |
| 172 | + 'parecerDescritivo' => RegraAvaliacao_Model_TipoParecerDescritivo::NENHUM, | |
| 173 | + 'media' => 6, | |
| 174 | + 'tabelaArredondamento' => NULL, | |
| 175 | + 'formulaMedia' => NULL, | |
| 176 | + 'formulaRecuperacao' => NULL, | |
| 177 | + 'porcentagemPresenca' => 75 | |
| 178 | + ); | |
| 179 | + | |
| 180 | + protected $_componenteDataMapperMock = NULL; | |
| 181 | + | |
| 182 | + protected $_notaAlunoDataMapperMock = NULL; | |
| 183 | + | |
| 184 | + protected $_notaComponenteDataMapperMock = NULL; | |
| 185 | + | |
| 186 | + protected $_notaComponenteMediaDataMapperMock = NULL; | |
| 187 | + | |
| 188 | + protected $_faltaAlunoDataMapperMock = NULL; | |
| 189 | + | |
| 190 | + protected $_faltaAbstractDataMapperMock = NULL; | |
| 191 | + | |
| 192 | + protected $_parecerDescritivoAlunoDataMapperMock = NULL; | |
| 193 | + | |
| 194 | + protected $_parecerDescritivoAbstractDataMapperMock = NULL; | |
| 195 | + | |
| 196 | + protected function setUp() | |
| 197 | + { | |
| 198 | + // Armazena valores de configuração para serem usados nas diferentes | |
| 199 | + // instâncias de objetos legados e novos | |
| 200 | + $this->_setConfigOptions('usuario', array('cod_usuario' => 1)) | |
| 201 | + ->_setConfigOptions('matricula', $this->_getMatricula()) | |
| 202 | + ->_setConfigOptions('serie', $this->_getSerie()) | |
| 203 | + ->_setConfigOptions('curso', $this->_getCurso()) | |
| 204 | + ->_setConfigOptions('escolaAnoLetivo', $this->_getEscolaAnoLetivo()) | |
| 205 | + ->_setConfigOptions('anoLetivoModulo', $this->_getAnoLetivoModulo()) | |
| 206 | + ->_setConfigOptions('escolaSerieDisciplina', $this->_getEscolaSerieDisciplina()) | |
| 207 | + ->_setConfigOptions('dispensaDisciplina', $this->_getDispensaDisciplina()) | |
| 208 | + ->_setConfigOptions('componenteCurricular', $this->_getComponenteCurricular()) | |
| 209 | + ->_setConfigOptions('notaAluno', $this->_getNotaAluno()) | |
| 210 | + ->_setConfigOptions('faltaAluno', $this->_getFaltaAluno()) | |
| 211 | + ->_setConfigOptions('parecerDescritivoAluno', $this->_getParecerDescritivoAluno()); | |
| 212 | + | |
| 213 | + // Configura atributos de RegraAvaliacao_Model_Regra | |
| 214 | + $this->_setRegraOption('formulaMedia', $this->_setUpFormulaMedia()) | |
| 215 | + ->_setRegraOption('formulaRecuperacao', $this->_setUpFormulaRecuperacao()) | |
| 216 | + ->_setRegraOption('tabelaArredondamento', $this->_setUpTabelaArredondamento()); | |
| 217 | + } | |
| 218 | + | |
| 219 | + protected function _getServiceInstance() | |
| 220 | + { | |
| 221 | + // Configura mappers das dependências de Avalilacao_Service_Boletim | |
| 222 | + $mappers = array( | |
| 223 | + 'RegraDataMapper' => $this->_getRegraDataMapperMock(), | |
| 224 | + 'ComponenteDataMapper' => $this->_getComponenteDataMapperMock(), | |
| 225 | + 'NotaAlunoDataMapper' => $this->_getNotaAlunoDataMapperMock(), | |
| 226 | + 'NotaComponenteDataMapper' => $this->_getNotaComponenteDataMapperMock(), | |
| 227 | + 'NotaComponenteMediaDataMapper' => $this->_getNotaComponenteMediaDataMapperMock(), | |
| 228 | + 'FaltaAlunoDataMapper' => $this->_getFaltaAlunoDataMapperMock(), | |
| 229 | + 'FaltaAbstractDataMapper' => $this->_getFaltaAbstractDataMapperMock(), | |
| 230 | + 'ParecerDescritivoAlunoDataMapper' => $this->_getParecerDescritivoAlunoDataMapperMock(), | |
| 231 | + 'ParecerDescritivoAbstractDataMapper' => $this->_getParecerDescritivoAbstractDataMapperMock(), | |
| 232 | + ); | |
| 233 | + | |
| 234 | + $this->_setConfigOptions('mappers', $mappers); | |
| 235 | + | |
| 236 | + // Cria os mocks das classes legadas | |
| 237 | + $this->_setUpMatriculaMock() | |
| 238 | + ->_setUpCursoMock() | |
| 239 | + ->_setUpSerieMock() | |
| 240 | + ->_setUpEscolaAnoLetivo() | |
| 241 | + ->_setUpAnoLetivoModulo() | |
| 242 | + ->_setUpEscolaSerieDisciplinaMock() | |
| 243 | + ->_setUpDispensaDisciplinaMock(); | |
| 244 | + | |
| 245 | + // Instancia o service | |
| 246 | + return new Avaliacao_Service_Boletim($this->_getServiceOptions()); | |
| 247 | + } | |
| 248 | + | |
| 249 | + /** | |
| 250 | + * Getter. Retorna o array de opções para a inicialização do service. | |
| 251 | + * @return array | |
| 252 | + */ | |
| 253 | + protected function _getServiceOptions() | |
| 254 | + { | |
| 255 | + return array( | |
| 256 | + 'matricula' => $this->_getConfigOption('matricula', 'cod_matricula'), | |
| 257 | + 'usuario' => $this->_getConfigOption('usuario', 'cod_usuario'), | |
| 258 | + 'RegraDataMapper' => $this->_getConfigOption('mappers', 'RegraDataMapper'), | |
| 259 | + 'ComponenteDataMapper' => $this->_getConfigOption('mappers', 'ComponenteDataMapper'), | |
| 260 | + 'NotaAlunoDataMapper' => $this->_getConfigOption('mappers', 'NotaAlunoDataMapper'), | |
| 261 | + 'NotaComponenteDataMapper' => $this->_getConfigOption('mappers', 'NotaComponenteDataMapper'), | |
| 262 | + 'NotaComponenteMediaDataMapper' => $this->_getConfigOption('mappers', 'NotaComponenteMediaDataMapper'), | |
| 263 | + 'FaltaAlunoDataMapper' => $this->_getConfigOption('mappers', 'FaltaAlunoDataMapper'), | |
| 264 | + 'FaltaAbstractDataMapper' => $this->_getConfigOption('mappers', 'FaltaAbstractDataMapper'), | |
| 265 | + 'ParecerDescritivoAlunoDataMapper' => $this->_getConfigOption('mappers', 'ParecerDescritivoAlunoDataMapper'), | |
| 266 | + 'ParecerDescritivoAbstractDataMapper' => $this->_getConfigOption('mappers', 'ParecerDescritivoAbstractDataMapper'), | |
| 267 | + ); | |
| 268 | + } | |
| 269 | + | |
| 270 | + /** | |
| 271 | + * Setter. | |
| 272 | + * | |
| 273 | + * @param string $namespace | |
| 274 | + * @param array $data | |
| 275 | + * @return Avaliacao_Service_TestCommon | |
| 276 | + */ | |
| 277 | + protected function _setConfigOptions($namespace, array $data) | |
| 278 | + { | |
| 279 | + $namespace = strtolower($namespace); | |
| 280 | + | |
| 281 | + $this->_config[$namespace] = array(); | |
| 282 | + | |
| 283 | + // Chama _setConfigOption() para não sobrescrever opções já configuradas | |
| 284 | + foreach ($data as $key => $value) { | |
| 285 | + $this->_setConfigOption($namespace, $key, $value); | |
| 286 | + } | |
| 287 | + | |
| 288 | + return $this; | |
| 289 | + } | |
| 290 | + | |
| 291 | + /** | |
| 292 | + * Getter. | |
| 293 | + * | |
| 294 | + * @param string $namespace | |
| 295 | + * @return mixed | |
| 296 | + */ | |
| 297 | + protected function _getConfigOptions($namespace) | |
| 298 | + { | |
| 299 | + $namespace = strtolower($namespace); | |
| 300 | + | |
| 301 | + if (!isset($this->_config[$namespace])) { | |
| 302 | + throw new Exception('_getConfigOption namespace'); | |
| 303 | + } | |
| 304 | + | |
| 305 | + return $this->_config[$namespace]; | |
| 306 | + } | |
| 307 | + | |
| 308 | + /** | |
| 309 | + * Setter. | |
| 310 | + * | |
| 311 | + * @param string $namespace | |
| 312 | + * @param string $key | |
| 313 | + * @param mixed $value | |
| 314 | + * @return Avaliacao_Service_TestCommon | |
| 315 | + */ | |
| 316 | + protected function _setConfigOption($namespace, $key, $value) | |
| 317 | + { | |
| 318 | + $namespace = strtolower($namespace); | |
| 319 | + | |
| 320 | + if (!isset($this->_config[$namespace])) { | |
| 321 | + $this->_config[$namespace] = array(); | |
| 322 | + } | |
| 323 | + | |
| 324 | + $this->_config[$namespace][$key] = $value; | |
| 325 | + return $this; | |
| 326 | + } | |
| 327 | + | |
| 328 | + /** | |
| 329 | + * Getter. | |
| 330 | + * | |
| 331 | + * @param string $namespace | |
| 332 | + * @param string $key | |
| 333 | + * @return mixed | |
| 334 | + */ | |
| 335 | + protected function _getConfigOption($namespace, $key) | |
| 336 | + { | |
| 337 | + $namespace = strtolower($namespace); | |
| 338 | + | |
| 339 | + if (!isset($this->_config[$namespace])) { | |
| 340 | + throw new Exception('_getConfigOption namespace'); | |
| 341 | + } | |
| 342 | + | |
| 343 | + if (!isset($this->_config[$namespace][$key])) { | |
| 344 | + throw new Exception('_getConfigOption option name: ' . $key); | |
| 345 | + } | |
| 346 | + | |
| 347 | + return $this->_config[$namespace][$key]; | |
| 348 | + } | |
| 349 | + | |
| 350 | + /** | |
| 351 | + * @return array | |
| 352 | + */ | |
| 353 | + protected function _getMatricula() | |
| 354 | + { | |
| 355 | + return array( | |
| 356 | + 'cod_matricula' => 1, | |
| 357 | + 'ref_cod_curso' => 1, | |
| 358 | + 'ref_ref_cod_serie' => 1, | |
| 359 | + 'ref_ref_cod_escola' => 1, | |
| 360 | + 'aprovado' => 1 | |
| 361 | + ); | |
| 362 | + } | |
| 363 | + | |
| 364 | + /** | |
| 365 | + * @return array | |
| 366 | + */ | |
| 367 | + protected function _getSerie() | |
| 368 | + { | |
| 369 | + return array( | |
| 370 | + 'regra_avaliacao_id' => 1, | |
| 371 | + 'carga_horaria' => 800 | |
| 372 | + ); | |
| 373 | + } | |
| 374 | + | |
| 375 | + /** | |
| 376 | + * @return array | |
| 377 | + */ | |
| 378 | + protected function _getCurso() | |
| 379 | + { | |
| 380 | + return array( | |
| 381 | + 'carga_horaria' => 800 * 9, | |
| 382 | + 'hora_falta' => (50 / 60), | |
| 383 | + 'padrao_ano_escolar' => 1 | |
| 384 | + ); | |
| 385 | + } | |
| 386 | + | |
| 387 | + /** | |
| 388 | + * @return array | |
| 389 | + */ | |
| 390 | + protected function _getEscolaAnoLetivo() | |
| 391 | + { | |
| 392 | + return array(array( | |
| 393 | + 'ref_cod_escola' => 1, | |
| 394 | + 'ano' => 2009, | |
| 395 | + 'andamento' => 1, | |
| 396 | + 'ativo' => 1 | |
| 397 | + )); | |
| 398 | + } | |
| 399 | + | |
| 400 | + /** | |
| 401 | + * @return array | |
| 402 | + */ | |
| 403 | + protected function _getAnoLetivoModulo() | |
| 404 | + { | |
| 405 | + return array( | |
| 406 | + array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 1), | |
| 407 | + array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 2), | |
| 408 | + array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 3), | |
| 409 | + array('ref_ano' => 2009, 'ref_ref_cod_escola' => 1, 'sequencial' => 4) | |
| 410 | + ); | |
| 411 | + } | |
| 412 | + | |
| 413 | + /** | |
| 414 | + * Retorna um array com as possíveis etapas a serem cursadas. | |
| 415 | + * @return array | |
| 416 | + * @todo Condicionar o retorno de 'Rc' caso exista recuperação na Regra | |
| 417 | + */ | |
| 418 | + protected function _getEtapasPossiveis() | |
| 419 | + { | |
| 420 | + $etapas = count($this->_getConfigOptions('anoLetivoModulo')); | |
| 421 | + return array_merge(range(1, $etapas, 1), array('Rc')); | |
| 422 | + } | |
| 423 | + | |
| 424 | + /** | |
| 425 | + * @return array | |
| 426 | + */ | |
| 427 | + protected function _getEscolaSerieDisciplina() | |
| 428 | + { | |
| 429 | + return array( | |
| 430 | + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 1, 'carga_horaria' => 250), | |
| 431 | + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 2, 'carga_horaria' => 250), | |
| 432 | + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 3, 'carga_horaria' => 150), | |
| 433 | + array('ref_cod_serie' => 1, 'ref_cod_disciplina' => 4, 'carga_horaria' => 150), | |
| 434 | + ); | |
| 435 | + } | |
| 436 | + | |
| 437 | + /** | |
| 438 | + * @return array | |
| 439 | + */ | |
| 440 | + protected function _getDispensaDisciplina() | |
| 441 | + { | |
| 442 | + return array(); | |
| 443 | + } | |
| 444 | + | |
| 445 | + /** | |
| 446 | + * @return array | |
| 447 | + */ | |
| 448 | + protected function _getComponenteCurricular() | |
| 449 | + { | |
| 450 | + return array( | |
| 451 | + 1 => new ComponenteCurricular_Model_Componente( | |
| 452 | + array('id' => 1, 'nome' => 'Matemática', 'cargaHoraria' => 100) | |
| 453 | + ), | |
| 454 | + 2 => new ComponenteCurricular_Model_Componente( | |
| 455 | + array('id' => 2, 'nome' => 'Português', 'cargaHoraria' => 100) | |
| 456 | + ), | |
| 457 | + 3 => new ComponenteCurricular_Model_Componente( | |
| 458 | + array('id' => 3, 'nome' => 'Ciências', 'cargaHoraria' => 60) | |
| 459 | + ), | |
| 460 | + 4 => new ComponenteCurricular_Model_Componente( | |
| 461 | + array('id' => 4, 'nome' => 'Física', 'cargaHoraria' => 60) | |
| 462 | + ) | |
| 463 | + ); | |
| 464 | + } | |
| 465 | + | |
| 466 | + /** | |
| 467 | + * Retorna os componentes cursados pelo aluno. | |
| 468 | + * @return array | |
| 469 | + */ | |
| 470 | + protected function _getComponentesCursados() | |
| 471 | + { | |
| 472 | + return array_diff( | |
| 473 | + array_keys($this->_getComponenteCurricular()), | |
| 474 | + array_keys($this->_getDispensaDisciplina()) | |
| 475 | + ); | |
| 476 | + } | |
| 477 | + | |
| 478 | + /** | |
| 479 | + * @return Avaliacao_Model_NotaAluno | |
| 480 | + */ | |
| 481 | + protected function _getNotaAluno() | |
| 482 | + { | |
| 483 | + $matricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 484 | + | |
| 485 | + return array('instance' => new Avaliacao_Model_NotaAluno(array( | |
| 486 | + 'id' => 1, | |
| 487 | + 'matricula' => $matricula | |
| 488 | + ))); | |
| 489 | + } | |
| 490 | + | |
| 491 | + /** | |
| 492 | + * @return array | |
| 493 | + */ | |
| 494 | + protected function _getFaltaAluno() | |
| 495 | + { | |
| 496 | + $matricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 497 | + | |
| 498 | + return array('instance' => new Avaliacao_Model_FaltaAluno(array( | |
| 499 | + 'id' => 1, | |
| 500 | + 'matricula' => $matricula, | |
| 501 | + 'tipoFalta' => $this->_getRegraOption('tipoPresenca') | |
| 502 | + ))); | |
| 503 | + } | |
| 504 | + | |
| 505 | + /** | |
| 506 | + * @return array | |
| 507 | + */ | |
| 508 | + protected function _getParecerDescritivoAluno() | |
| 509 | + { | |
| 510 | + $matricula = $this->_getConfigOption('matricula', 'cod_matricula'); | |
| 511 | + | |
| 512 | + return array('instance' => new Avaliacao_Model_ParecerDescritivoAluno(array( | |
| 513 | + 'id' => 1, | |
| 514 | + 'matricula' => $matricula, | |
| 515 | + 'parecerDescritivo' => $this->_getRegraOption('parecerDescritivo') | |
| 516 | + ))); | |
| 517 | + } | |
| 518 | + | |
| 519 | + /** | |
| 520 | + * @return clsPmieducarMatricula | |
| 521 | + */ | |
| 522 | + protected function _setUpMatriculaMock() | |
| 523 | + { | |
| 524 | + $mock = $this->getCleanMock('clsPmieducarMatricula'); | |
| 525 | + | |
| 526 | + $mock->expects($this->any()) | |
| 527 | + ->method('detalhe') | |
| 528 | + ->will($this->returnValue($this->_getConfigOptions('matricula'))); | |
| 529 | + | |
| 530 | + CoreExt_Entity::addClassToStorage('clsPmieducarMatricula', | |
| 531 | + $mock, NULL, TRUE | |
| 532 | + ); | |
| 533 | + | |
| 534 | + return $this; | |
| 535 | + } | |
| 536 | + | |
| 537 | + /** | |
| 538 | + * @return clsPmieducarSerie | |
| 539 | + */ | |
| 540 | + protected function _setUpSerieMock() | |
| 541 | + { | |
| 542 | + $mock = $this->getCleanMock('clsPmieducarSerie'); | |
| 543 | + | |
| 544 | + $mock->expects($this->any()) | |
| 545 | + ->method('detalhe') | |
| 546 | + ->will($this->returnValue($this->_getConfigOptions('serie'))); | |
| 547 | + | |
| 548 | + CoreExt_Entity::addClassToStorage('clsPmieducarSerie', | |
| 549 | + $mock, NULL, TRUE | |
| 550 | + ); | |
| 551 | + | |
| 552 | + return $this; | |
| 553 | + } | |
| 554 | + | |
| 555 | + /** | |
| 556 | + * @return clsPmieducarCurso | |
| 557 | + */ | |
| 558 | + protected function _setUpCursoMock() | |
| 559 | + { | |
| 560 | + $mock = $this->getCleanMock('clsPmieducarCurso'); | |
| 561 | + | |
| 562 | + $mock->expects($this->any()) | |
| 563 | + ->method('detalhe') | |
| 564 | + ->will($this->returnValue($this->_getConfigOptions('curso'))); | |
| 565 | + | |
| 566 | + CoreExt_Entity::addClassToStorage('clsPmieducarCurso', | |
| 567 | + $mock, NULL, TRUE | |
| 568 | + ); | |
| 569 | + | |
| 570 | + return $this; | |
| 571 | + } | |
| 572 | + | |
| 573 | + /** | |
| 574 | + * @return clsPmieducarEscolaAnoLetivo | |
| 575 | + */ | |
| 576 | + protected function _setUpEscolaAnoLetivo() | |
| 577 | + { | |
| 578 | + $mock = $this->getCleanMock('clsPmieducarEscolaAnoLetivo'); | |
| 579 | + | |
| 580 | + $mock->expects($this->any()) | |
| 581 | + ->method('lista') | |
| 582 | + ->with(1, NULL, NULL, NULL, 1, NULL, NULL, NULL, NULL, 1) | |
| 583 | + ->will($this->returnValue($this->_getConfigOptions('escolaAnoLetivo'))); | |
| 584 | + | |
| 585 | + CoreExt_Entity::addClassToStorage('clsPmieducarEscolaAnoLetivo', | |
| 586 | + $mock, NULL, TRUE | |
| 587 | + ); | |
| 588 | + | |
| 589 | + return $this; | |
| 590 | + } | |
| 591 | + | |
| 592 | + /** | |
| 593 | + * @return clsPmieducarAnoLetivoModulo | |
| 594 | + */ | |
| 595 | + protected function _setUpAnoLetivoModulo() | |
| 596 | + { | |
| 597 | + $mock = $this->getCleanMock('clsPmieducarAnoLetivoModulo'); | |
| 598 | + | |
| 599 | + $mock->expects($this->any()) | |
| 600 | + ->method('lista') | |
| 601 | + ->with(2009, 1) | |
| 602 | + ->will($this->returnValue($this->_getConfigOptions('anoLetivoModulo'))); | |
| 603 | + | |
| 604 | + CoreExt_Entity::addClassToStorage('clsPmieducarAnoLetivoModulo', | |
| 605 | + $mock, NULL, TRUE | |
| 606 | + ); | |
| 607 | + | |
| 608 | + return $this; | |
| 609 | + } | |
| 610 | + | |
| 611 | + /** | |
| 612 | + * @return clsPmieducarEscolaSerieDisciplina | |
| 613 | + */ | |
| 614 | + protected function _setUpEscolaSerieDisciplinaMock() | |
| 615 | + { | |
| 616 | + $mock = $this->getCleanMock('clsPmieducarEscolaSerieDisciplina'); | |
| 617 | + | |
| 618 | + $mock->expects($this->any()) | |
| 619 | + ->method('lista') | |
| 620 | + ->will($this->returnValue($this->_getConfigOptions('escolaSerieDisciplina'))); | |
| 621 | + | |
| 622 | + CoreExt_Entity::addClassToStorage('clsPmieducarEscolaSerieDisciplina', | |
| 623 | + $mock, NULL, TRUE | |
| 624 | + ); | |
| 625 | + | |
| 626 | + return $this; | |
| 627 | + } | |
| 628 | + | |
| 629 | + /** | |
| 630 | + * @return clsPmieducarDispensaDisciplina | |
| 631 | + */ | |
| 632 | + protected function _setUpDispensaDisciplinaMock() | |
| 633 | + { | |
| 634 | + $mock = $this->getCleanMock('clsPmieducarDispensaDisciplina'); | |
| 635 | + | |
| 636 | + $mock->expects($this->any()) | |
| 637 | + ->method('lista') | |
| 638 | + ->will($this->returnValue($this->_getConfigOptions('dispensaDisciplina'))); | |
| 639 | + | |
| 640 | + CoreExt_Entity::addClassToStorage('clsPmieducarDispensaDisciplina', | |
| 641 | + $mock, NULL, TRUE | |
| 642 | + ); | |
| 643 | + | |
| 644 | + return $this; | |
| 645 | + } | |
| 646 | + | |
| 647 | + /** | |
| 648 | + * Configura e retorna um mock de RegraAvaliacaoDataMapper que retorna uma | |
| 649 | + * instância de RegraAvaliacao_Model_Regra configurada de acordo com as | |
| 650 | + * opções do array $_regraOptions. | |
| 651 | + * | |
| 652 | + * @return RegraAvaliacao_Model_RegraDataMapper | |
| 653 | + */ | |
| 654 | + protected function _getRegraDataMapperMock() | |
| 655 | + { | |
| 656 | + $regraAvaliacao = new RegraAvaliacao_Model_Regra($this->_regraOptions); | |
| 657 | + | |
| 658 | + $mock = $this->getCleanMock('RegraAvaliacao_Model_RegraDataMapper'); | |
| 659 | + $mock->expects($this->any()) | |
| 660 | + ->method('find') | |
| 661 | + ->with(1) | |
| 662 | + ->will($this->returnValue($regraAvaliacao)); | |
| 663 | + | |
| 664 | + return $mock; | |
| 665 | + } | |
| 666 | + | |
| 667 | + /** | |
| 668 | + * Configura uma das opções a serem passadas durante a instanciação de | |
| 669 | + * RegraAvaliacao_Model_Regra. | |
| 670 | + * | |
| 671 | + * @param string $key | |
| 672 | + * @param mixed $value | |
| 673 | + */ | |
| 674 | + protected function _setRegraOption($key, $value) | |
| 675 | + { | |
| 676 | + if (!array_key_exists($key, $this->_regraOptions)) { | |
| 677 | + require_once 'CoreExt/Exception/InvalidArgumentException.php'; | |
| 678 | + throw new CoreExt_Exception_InvalidArgumentException('regraOption:' . $key); | |
| 679 | + } | |
| 680 | + | |
| 681 | + $this->_regraOptions[$key] = $value; | |
| 682 | + return $this; | |
| 683 | + } | |
| 684 | + | |
| 685 | + /** | |
| 686 | + * Getter. | |
| 687 | + * | |
| 688 | + * @param string $key | |
| 689 | + * @return mixed | |
| 690 | + */ | |
| 691 | + protected function _getRegraOption($key) | |
| 692 | + { | |
| 693 | + if (!array_key_exists($key, $this->_regraOptions)) { | |
| 694 | + require_once 'CoreExt/Exception/InvalidArgumentException.php'; | |
| 695 | + throw new CoreExt_Exception_InvalidArgumentException('regraOption: ' . $key); | |
| 696 | + } | |
| 697 | + | |
| 698 | + return $this->_regraOptions[$key]; | |
| 699 | + } | |
| 700 | + | |
| 701 | + /** | |
| 702 | + * @return FormulaMedia_Model_Formula | |
| 703 | + */ | |
| 704 | + protected function _setUpFormulaMedia() | |
| 705 | + { | |
| 706 | + return new FormulaMedia_Model_Formula(array( | |
| 707 | + 'id' => 1, | |
| 708 | + 'nome' => 'Média aritmética', | |
| 709 | + 'formulaMedia' => 'Se / Et', | |
| 710 | + 'tipoFormula' => FormulaMedia_Model_TipoFormula::MEDIA_FINAL | |
| 711 | + )); | |
| 712 | + } | |
| 713 | + | |
| 714 | + /** | |
| 715 | + * @return FormulaMedia_Model_Formula | |
| 716 | + */ | |
| 717 | + protected function _setUpFormulaRecuperacao() | |
| 718 | + { | |
| 719 | + return new FormulaMedia_Model_Formula(array( | |
| 720 | + 'id' => 1, | |
| 721 | + 'nome' => 'Média ponderada', | |
| 722 | + 'formulaMedia' => '(Se / Et * 0.6) + (Rc * 0.4)', | |
| 723 | + 'tipoFormula' => FormulaMedia_Model_TipoFormula::MEDIA_RECUPERACAO | |
| 724 | + )); | |
| 725 | + } | |
| 726 | + | |
| 727 | + /** | |
| 728 | + * @return TabelaArredondamento_Model_Tabela | |
| 729 | + */ | |
| 730 | + protected function _setUpTabelaArredondamento() | |
| 731 | + { | |
| 732 | + // Valores padrão dos atributos de TabelaArredondamento_Model_TabelaValor | |
| 733 | + $data = array( | |
| 734 | + 'tabelaArredondamento' => 1, | |
| 735 | + 'nome' => NULL, | |
| 736 | + 'descricao' => NULL, | |
| 737 | + 'valorMinimo' => -1, | |
| 738 | + 'valorMaximo' => 0 | |
| 739 | + ); | |
| 740 | + | |
| 741 | + $tabelaValores = array(); | |
| 742 | + | |
| 743 | + for ($i = 0; $i <= 10; $i++) { | |
| 744 | + $data['nome'] = $i; | |
| 745 | + $data['valorMinimo'] += 1; | |
| 746 | + $data['valorMaximo'] += 1; | |
| 747 | + | |
| 748 | + if ($i == 10) { | |
| 749 | + $data['valorMinimo'] = 9; | |
| 750 | + $data['valorMaximo'] = 10; | |
| 751 | + } | |
| 752 | + | |
| 753 | + $tabelaValores[$i] = new TabelaArredondamento_Model_TabelaValor($data); | |
| 754 | + } | |
| 755 | + | |
| 756 | + $mock = $this->getCleanMock('TabelaArredondamento_Model_TabelaValorDataMapper'); | |
| 757 | + $mock->expects($this->any()) | |
| 758 | + ->method('findAll') | |
| 759 | + ->will($this->returnValue($tabelaValores)); | |
| 760 | + | |
| 761 | + $tabelaDataMapper = new TabelaArredondamento_Model_TabelaDataMapper(); | |
| 762 | + $tabelaDataMapper->setTabelaValorDataMapper($mock); | |
| 763 | + | |
| 764 | + $tabela = new TabelaArredondamento_Model_Tabela(array('nome' => 'Numéricas')); | |
| 765 | + $tabela->setDataMapper($tabelaDataMapper); | |
| 766 | + | |
| 767 | + return $tabela; | |
| 768 | + } | |
| 769 | + | |
| 770 | + protected function _setComponenteDataMapperMock(ComponenteCurricular_Model_ComponenteDataMapper $mapper) | |
| 771 | + { | |
| 772 | + $this->_componenteDataMapperMock = $mapper; | |
| 773 | + return $this; | |
| 774 | + } | |
| 775 | + | |
| 776 | + protected function _getComponenteDataMapperMock() | |
| 777 | + { | |
| 778 | + if (is_null($this->_componenteDataMapperMock)) { | |
| 779 | + $componentes = $this->_getConfigOptions('componenteCurricular'); | |
| 780 | + | |
| 781 | + // Mock para ComponenteCurricular_Model_ComponenteDataMapper | |
| 782 | + $mock = $this->getCleanMock('ComponenteCurricular_Model_ComponenteDataMapper'); | |
| 783 | + $mock->expects($this->any()) | |
| 784 | + ->method('findComponenteCurricularAnoEscolar') | |
| 785 | + ->will(new PHPUnit_Framework_MockObject_Stub_ConsecutiveCalls($componentes)); | |
| 786 | + | |
| 787 | + $this->_setComponenteDataMapperMock($mock); | |
| 788 | + } | |
| 789 | + | |
| 790 | + return $this->_componenteDataMapperMock; | |
| 791 | + } | |
| 792 | + | |
| 793 | + protected function _setNotaAlunoDataMapperMock(Avaliacao_Model_NotaAlunoDataMapper $mapper = NULL) | |
| 794 | + { | |
| 795 | + $this->_notaAlunoDataMapperMock = $mapper; | |
| 796 | + return $this; | |
| 797 | + } | |
| 798 | + | |
| 799 | + protected function _getNotaAlunoDataMapperMock() | |
| 800 | + { | |
| 801 | + if (is_null($this->_notaAlunoDataMapperMock)) { | |
| 802 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 803 | + | |
| 804 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaAlunoDataMapper'); | |
| 805 | + $mock->expects($this->at(0)) | |
| 806 | + ->method('findAll') | |
| 807 | + ->with(array(), array('matricula' => $notaAluno->matricula)) | |
| 808 | + ->will($this->returnValue(array($notaAluno))); | |
| 809 | + | |
| 810 | + $this->_setNotaAlunoDataMapperMock($mock); | |
| 811 | + } | |
| 812 | + | |
| 813 | + return $this->_notaAlunoDataMapperMock; | |
| 814 | + } | |
| 815 | + | |
| 816 | + protected function _setNotaComponenteDataMapperMock(Avaliacao_Model_NotaComponenteDataMapper $mapper) | |
| 817 | + { | |
| 818 | + $this->_notaComponenteDataMapperMock = $mapper; | |
| 819 | + return $this; | |
| 820 | + } | |
| 821 | + | |
| 822 | + protected function _getNotaComponenteDataMapperMock() | |
| 823 | + { | |
| 824 | + if (is_null($this->_notaComponenteDataMapperMock)) { | |
| 825 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteDataMapper'); | |
| 826 | + $mock->expects($this->at(0)) | |
| 827 | + ->method('findAll') | |
| 828 | + ->with(array(), array('notaAluno' => $this->_getConfigOption('matricula', 'cod_matricula')), array('etapa' => 'ASC')) | |
| 829 | + ->will($this->returnValue(array())); | |
| 830 | + | |
| 831 | + $this->_setNotaComponenteDataMapperMock($mock); | |
| 832 | + } | |
| 833 | + | |
| 834 | + return $this->_notaComponenteDataMapperMock; | |
| 835 | + } | |
| 836 | + | |
| 837 | + protected function _setNotaComponenteMediaDataMapperMock(Avaliacao_Model_NotaComponenteMediaDataMapper $mapper) | |
| 838 | + { | |
| 839 | + $this->_notaComponenteMediaDataMapperMock = $mapper; | |
| 840 | + return $this; | |
| 841 | + } | |
| 842 | + | |
| 843 | + protected function _getNotaComponenteMediaDataMapperMock() | |
| 844 | + { | |
| 845 | + if (is_null($this->_notaComponenteMediaDataMapperMock)) { | |
| 846 | + $notaAluno = $this->_getConfigOption('notaAluno', 'instance'); | |
| 847 | + | |
| 848 | + $mock = $this->getCleanMock('Avaliacao_Model_NotaComponenteMediaDataMapper'); | |
| 849 | + $mock->expects($this->at(0)) | |
| 850 | + ->method('findAll') | |
| 851 | + ->with(array(), array('notaAluno' => $notaAluno->id)) | |
| 852 | + ->will($this->returnValue(array())); | |
| 853 | + | |
| 854 | + $this->_setNotaComponenteMediaDataMapperMock($mock); | |
| 855 | + } | |
| 856 | + | |
| 857 | + return $this->_notaComponenteMediaDataMapperMock; | |
| 858 | + } | |
| 859 | + | |
| 860 | + protected function _setFaltaAlunoDataMapperMock(Avaliacao_Model_FaltaAlunoDataMapper $mapper = NULL) | |
| 861 | + { | |
| 862 | + $this->_faltaAlunoDataMapperMock = $mapper; | |
| 863 | + return $this; | |
| 864 | + } | |
| 865 | + | |
| 866 | + protected function _getFaltaAlunoDataMapperMock() | |
| 867 | + { | |
| 868 | + if (is_null($this->_faltaAlunoDataMapperMock)) { | |
| 869 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 870 | + | |
| 871 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaAlunoDataMapper'); | |
| 872 | + $mock->expects($this->at(0)) | |
| 873 | + ->method('findAll') | |
| 874 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 875 | + ->will($this->returnValue(array($faltaAluno))); | |
| 876 | + | |
| 877 | + $this->_setFaltaAlunoDataMapperMock($mock); | |
| 878 | + } | |
| 879 | + | |
| 880 | + return $this->_faltaAlunoDataMapperMock; | |
| 881 | + } | |
| 882 | + | |
| 883 | + protected function _setFaltaAbstractDataMapperMock(Avaliacao_Model_FaltaAbstractDataMapper $mapper) | |
| 884 | + { | |
| 885 | + $this->_faltaAbstractDataMapperMock = $mapper; | |
| 886 | + return $this; | |
| 887 | + } | |
| 888 | + | |
| 889 | + protected function _getFaltaAbstractDataMapperMock() | |
| 890 | + { | |
| 891 | + $faltaAluno = $this->_getConfigOption('faltaAluno', 'instance'); | |
| 892 | + | |
| 893 | + if (is_null($this->_faltaAbstractDataMapperMock)) { | |
| 894 | + $mock = $this->getCleanMock('Avaliacao_Model_FaltaAbstractDataMapper'); | |
| 895 | + $mock->expects($this->at(0)) | |
| 896 | + ->method('findAll') | |
| 897 | + ->with(array(), array('faltaAluno' => $faltaAluno->id), array('etapa' => 'ASC')) | |
| 898 | + ->will($this->returnValue(array())); | |
| 899 | + | |
| 900 | + $this->_setFaltaAbstractDataMapperMock($mock); | |
| 901 | + } | |
| 902 | + | |
| 903 | + return $this->_faltaAbstractDataMapperMock; | |
| 904 | + } | |
| 905 | + | |
| 906 | + protected function _setParecerDescritivoAlunoDataMapperMock(Avaliacao_Model_ParecerDescritivoAlunoDataMapper $mapper) | |
| 907 | + { | |
| 908 | + $this->_parecerDescritivoAlunoDataMapperMock = $mapper; | |
| 909 | + return $this; | |
| 910 | + } | |
| 911 | + | |
| 912 | + protected function _getParecerDescritivoAlunoDataMapperMock() | |
| 913 | + { | |
| 914 | + if (is_null($this->_parecerDescritivoAlunoDataMapperMock)) { | |
| 915 | + $parecerAluno = $this->_getConfigOption('parecerDescritivoAluno', 'instance'); | |
| 916 | + | |
| 917 | + $mock = $this->getCleanMock('Avaliacao_Model_ParecerDescritivoAlunoDataMapper'); | |
| 918 | + $mock->expects($this->at(0)) | |
| 919 | + ->method('findAll') | |
| 920 | + ->with(array(), array('matricula' => $this->_getConfigOption('matricula', 'cod_matricula'))) | |
| 921 | + ->will($this->returnValue(array($parecerAluno))); | |
| 922 | + | |
| 923 | + $this->_setParecerDescritivoAlunoDataMapperMock($mock); | |
| 924 | + } | |
| 925 | + | |
| 926 | + return $this->_parecerDescritivoAlunoDataMapperMock; | |
| 927 | + } | |
| 928 | + | |
| 929 | + protected function _setParecerDescritivoAbstractDataMapperMock(Avaliacao_Model_ParecerDescritivoAbstractDataMapper $mapper) | |
| 930 | + { | |
| 931 | + $this->_parecerDescritivoAbstractDataMapperMock = $mapper; | |
| 932 | + return $this; | |
| 933 | + } | |
| 934 | + | |
| 935 | + protected function _getParecerDescritivoAbstractDataMapperMock() | |
| 936 | + { | |
| 937 | + if (is_null($this->_parecerDescritivoAbstractDataMapperMock)) { | |
| 938 | + $parecerAluno = $this->_getConfigOption('parecerDescritivoAluno', 'instance'); | |
| 939 | + | |
| 940 | + $mock = $this->getCleanMock('Avaliacao_Model_ParecerDescritivoAbstractDataMapper'); | |
| 941 | + $mock->expects($this->at(0)) | |
| 942 | + ->method('findAll') | |
| 943 | + ->with(array(), array('parecerDescritivoAluno' => $parecerAluno->id), array('etapa' => 'ASC')) | |
| 944 | + ->will($this->returnValue(array())); | |
| 945 | + | |
| 946 | + $this->_setParecerDescritivoAbstractDataMapperMock($mock); | |
| 947 | + } | |
| 948 | + | |
| 949 | + return $this->_parecerDescritivoAbstractDataMapperMock; | |
| 950 | + } | |
| 951 | +} | |
| 0 | 952 | \ No newline at end of file | ... | ... |
ieducar/modules/Avaliacao/_tests/Service/UtilityTest.php
0 → 100644
| ... | ... | @@ -0,0 +1,125 @@ |
| 1 | +<?php | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * i-Educar - Sistema de gestão escolar | |
| 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 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 24 | + * @category i-Educar | |
| 25 | + * @license @@license@@ | |
| 26 | + * @package Avaliacao | |
| 27 | + * @subpackage UnitTests | |
| 28 | + * @since Arquivo disponível desde a versão 1.1.0 | |
| 29 | + * @version $Id$ | |
| 30 | + */ | |
| 31 | + | |
| 32 | +require_once 'Avaliacao/_tests/Service/TestCommon.php'; | |
| 33 | + | |
| 34 | +/** | |
| 35 | + * Avaliacao_Service_UtilityTest class. | |
| 36 | + * | |
| 37 | + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br> | |
| 38 | + * @category i-Educar | |
| 39 | + * @license @@license@@ | |
| 40 | + * @package Avaliacao | |
| 41 | + * @subpackage UnitTests | |
| 42 | + * @since Classe disponível desde a versão 1.1.0 | |
| 43 | + * @version @@package_version@@ | |
| 44 | + */ | |
| 45 | +class Avaliacao_Service_UtilityTest extends Avaliacao_Service_TestCommon | |
| 46 | +{ | |
| 47 | + public function testArredondaNotaLancaExcecaoSeParametroNaoForInstanciaDeAvaliacaomodelnotacomponenteOuNumerico() | |
| 48 | + { | |
| 49 | + $service = $this->_getServiceInstance(); | |
| 50 | + | |
| 51 | + try { | |
| 52 | + $service->arredondaNota(new Avaliacao_Model_NotaComponente()); | |
| 53 | + $this->fail('O valor "instância Avaliacao_Model_NotaComponente()" deveria ' | |
| 54 | + . 'ter causado um exceção pois o atributo "nota" é NULL por padrão.'); | |
| 55 | + } | |
| 56 | + catch (CoreExt_Exception_InvalidArgumentException $e) { | |
| 57 | + } | |
| 58 | + | |
| 59 | + try { | |
| 60 | + $service->arredondaNota('abc 7.5'); | |
| 61 | + $this->fail('O valor "abc 7.5" deveria ter causado um exceção.'); | |
| 62 | + } | |
| 63 | + catch (CoreExt_Exception_InvalidArgumentException $e) { | |
| 64 | + } | |
| 65 | + } | |
| 66 | + | |
| 67 | + public function testArredondaNotaNumerica() | |
| 68 | + { | |
| 69 | + $service = $this->_getServiceInstance(); | |
| 70 | + $this->assertEquals(5, $service->arredondaNota(5.5)); | |
| 71 | + } | |
| 72 | + | |
| 73 | + public function testArredondaNotaConceitual() | |
| 74 | + { | |
| 75 | + // Valores padrão dos atributos de TabelaArredondamento_Model_TabelaValor | |
| 76 | + $data = array( | |
| 77 | + 'tabelaArredondamento' => 1, | |
| 78 | + 'nome' => NULL, | |
| 79 | + 'descricao' => NULL, | |
| 80 | + 'valorMinimo' => -1, | |
| 81 | + 'valorMaximo' => 0 | |
| 82 | + ); | |
| 83 | + | |
| 84 | + $tabelaValores = array(); | |
| 85 | + | |
| 86 | + // I | |
| 87 | + $tabelaValores[0] = new TabelaArredondamento_Model_TabelaValor($data); | |
| 88 | + $tabelaValores[0]->nome = 'I'; | |
| 89 | + $tabelaValores[0]->descricao = 'Incompleto'; | |
| 90 | + $tabelaValores[0]->valorMinimo = 0; | |
| 91 | + $tabelaValores[0]->valorMaximo = 5.50; | |
| 92 | + | |
| 93 | + // S | |
| 94 | + $tabelaValores[1] = new TabelaArredondamento_Model_TabelaValor($data); | |
| 95 | + $tabelaValores[1]->nome = 'S'; | |
| 96 | + $tabelaValores[1]->descricao = 'Suficiente'; | |
| 97 | + $tabelaValores[1]->valorMinimo = 5.51; | |
| 98 | + $tabelaValores[1]->valorMaximo = 8; | |
| 99 | + | |
| 100 | + // O | |
| 101 | + $tabelaValores[2] = new TabelaArredondamento_Model_TabelaValor($data); | |
| 102 | + $tabelaValores[2]->nome = 'O'; | |
| 103 | + $tabelaValores[2]->descricao = 'Ótimo'; | |
| 104 | + $tabelaValores[2]->valorMinimo = 8.01; | |
| 105 | + $tabelaValores[2]->valorMaximo = 10.0; | |
| 106 | + | |
| 107 | + $mock = $this->getCleanMock('TabelaArredondamento_Model_TabelaValorDataMapper'); | |
| 108 | + $mock->expects($this->any()) | |
| 109 | + ->method('findAll') | |
| 110 | + ->will($this->returnValue($tabelaValores)); | |
| 111 | + | |
| 112 | + $tabelaDataMapper = new TabelaArredondamento_Model_TabelaDataMapper(); | |
| 113 | + $tabelaDataMapper->setTabelaValorDataMapper($mock); | |
| 114 | + | |
| 115 | + $tabela = new TabelaArredondamento_Model_Tabela(array('nome' => 'Conceituais')); | |
| 116 | + $tabela->setDataMapper($tabelaDataMapper); | |
| 117 | + | |
| 118 | + $this->_setRegraOption('tabelaArredondamento', $tabela); | |
| 119 | + | |
| 120 | + $service = $this->_getServiceInstance(); | |
| 121 | + $this->assertEquals('I', $service->arredondaNota(5.49)); | |
| 122 | + $this->assertEquals('S', $service->arredondaNota(6.50)); | |
| 123 | + $this->assertEquals('O', $service->arredondaNota(9.15)); | |
| 124 | + } | |
| 125 | +} | |
| 0 | 126 | \ No newline at end of file | ... | ... |