Programação Web Aula 10 - Testes, Javascript, Ajax



Documentos relacionados
Programação Web Aula 8 - Rails (Introdução)

Tutorial Básico. Instalando e testando o Ruby on Rails no Windows

1º passo: Instalando a rvm.

II Semana de Tecnologia da Informação. Rails Framework

Test-driven Development no Rails Começando seu projeto com o pé direito. 2007, Nando Vieira

Aula 03 - Projeto Java Web

Começando com Ruby on

V1.1 SITE EM UM SITE 11/2015 MINUTOS APRENDA A PROGRAMAR IMAGINE FAZER O SEU PRIMEIRO PROGRAMA EM 180 SEGUNDOS

formação em WeB developer

FRWTC800 - Desenvolvimento Web com Ruby on Rails

Ajax com R ails, interatividade e usabilidade ao alcance de todos

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

Versão Manual FoRc. Última Atualização: Maio/2007. Daniel Schmitz

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Lista de operadores de comparação - > Maior que - < Menor que - <= Menor ou igual a - >= Maior ou igual a - === Igual a -!

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

4 O Workflow e a Máquina de Regras

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

WEBSITE. Como utilizar um site Assistente de Criação para criar seu próprio site

Como instalar o Ocomon passo a passo.

Associação Educacional Dom Bosco Curso de Engenharia 1º ano

Mais sobre uso de formulários Site sem Ajax

Microsoft Access XP Módulo Um

Sumário. Parte I Introdução Introdução O Rails é ágil Explorando o conteúdo Agradecimentos... 19

Desenvolvimento de Aplicações para Internet Aula 8

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Como gerar arquivos para Sphinx Operador

2013 GVDASA Sistemas Cheques 1

JSP: JAVA SERVER PAGES

O Framework Rails. Diego Rubin

Sistema Click Principais Comandos

Universidade Federal de Santa Maria UFSM Centro de Tecnologia CT. Power Point. Básico

Desenvolvimento de aplicação web com framework JavaServer Faces e Hibernate

02 - Usando o SiteMaster - Informações importantes

LINX POSTOS AUTOSYSTEM

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Manual do Usuário CFCWeb BA

PROVA BRASIL NO VISUAL CLASS

Manual das funcionalidades Webmail AASP

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Manual do Usuário - ProJuris Web - Fila de s Página 1 de 8

MANUAL C R M ÍNDICE. Sobre o módulo de CRM Definindo a Campanha... 3

Programação Web Prof. Wladimir

MANUAL DE INSTALAÇÃO LUZ DO SABER

5 Detalhes da Implementação

PHP Conference Brasil

Validando dados de páginas WEB

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração O livro

Resumo das funcionalidades

Iniciação à Informática

Lista de Revisão. 3. Analise a afirmativa a seguir como verdadeira ou falsa e justifique.

Manual de digitação de contas Portal AFPERGS

Criando um script simples

UNIVERSIDADE FEDERAL DO PARANÁ. CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o.

Módulo Domínio Atendimento - Versão 8.0A-06

Desenvolvendo plugins WordPress usando Orientação a Objetos

ASP.NET Gerando relatórios com o ReportViewer

JSP: JAVA SERVER PAGES

MICROSOFT EXCEL AVANÇADO

Table of Contents. PowerPoint XP

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

Como usar HTML em seus anúncios. ncios no MercadoLivre

Facebook Instruções de integração com PayPal

UNIVERSIDADE FEDERAL DO AMAPÁ PRÓ REITORIA DE ADMINISTRAÇÃO E PLANEJAMENTO DEPARTAMENTO DE INFORMÁTICA TREINAMENTO EM INFORMÁTICA MÓDULO V

Ambiente Web PHP Problemas Frameworks CakePHP Symfony Zend Framework Prado CodeIgniter Demonstração

Validação de formulário : CEP, e CPF

Desenvolvimento de Aplicações para Internet Aula 11

JavaScript. JavaScript é uma linguagem de script usada em navegadores web. É uma linguagem dinâmica, estruturada e orientada em objetos.

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager

ÍNDICE 1 INTRODUÇÃO ACESSO ABERTURA DE PROTOCOLO CONSULTA DE PROTOCOLO PROTOCOLO PENDENTE CONFIRMAÇÃO DE RECEBIMENTO.

Versão 8.2C-01. Versão Final da Apostila de Novidades

Oficina de produção de tutoriais. WALESKA - TUTORIAL Audacity

Sistema Operacional Unidade 5 - Iniciando o modo texto. QI ESCOLAS E FACULDADES Curso Técnico em Informática

Tutorial do administrador do HelpCenterLive (Sistema de Ajuda)

PROGRAMAÇÃO PARA INTERNET. Fonte: Raul Paradeda

Tutorial de instalação do ambiente Ruby, Ruby on Rails e MySQL no Ubuntu

Vamos iniciar a nossa exploração do HTTP baixando um arquivo em HTML simples - bastante pequeno, que não contém objetos incluídos.

Módulo Básico. Assando Sites. Relacionamentos, Validação, Consultas e Páginas Dinâmicas. Assando Sites

Tecnologias para apresentação de dados - Java Script. Aécio Costa

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

MANUAL DE UTILIZAÇÃO

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

Interfaces Gráficas parte 3

TUTORIAL AUTODESK 360 COLABORAÇÃO E ARMAZENAMENTO DE ARQUIVOS

MANUAL DE UTILIZAÇÃO SISTEMA DE CADASTRO INTRANET

W o r d p r e s s 1- TELA DE LOGIN

Parte I. Demoiselle Mail

Drupal. Desenvolvimento de Módulos

15. OLHA QUEM ESTÁ NA WEB!

Simulador do Processador Neander T&D-Bench Simulator Manual do Usuário. por Júlio César Maccali. revisado por Prof. Christian Zambenedetti

Transcrição:

Programação Web Aula 10 - Testes, Javascript, Ajax Bruno Müller Junior Departamento de Informática UFPR 28 de Abril de 2014

1 Ambientes de Execução 2 Testes Um exemplo Acrescentando Validação Validação Especíca do CPF Teste da validação Especíca do CPF Teste de Unidade Executar o teste 3 Ajax Criando a busca Busca usando Ajax Arquivo de renderização Mais informações

Ambientes de Execução Uma aplicação rails é criada já com três ambientes (environment): desenvolvimento, testes e produção. Cada uma tem um BD sicamente diferente. As diferenças entre eles podem ser vistas no arquivo config/database.yml.

Testes Uma das virtudes do framework Rails é possibilidade de usar ambiente(s) de testes. Existem várias suites de testes, cada uma instalada como uma gem. Exemplo: cucumber http://cukes.info/ A maioria das suites implementa TDD Test Driven Development. Testes de unidade: para modelos. Testes Funcionais: para views. Testes de Integração: para controllers. Um bom guia: http://guides.rubyonrails.org/testing.html

Um exemplo Um exemplo Como exemplo, considere uma aplicação que deve receber dados de pessoas, em especial CPF. O CPF digitado deve ser testado para vericar se é válido. Criando o exemplo: > rails new cpf; cd cpf > rails g scaffold Pessoa cpf:string nome:string \ sobrenome:string data_nascimento:date > rake db:migrate

Acrescentando Validação Acrescentando Validação Validação de presença: Insere direto no Modelo (app/models/pessoa.rb) validates_presence_of :cpf Validação de Formato: XXX.XXX.XXX/XX validates :cpf, format: { with: /\d{3}.\d{3}\.\d{3}\-\d{2}/, message: "inválido!"} validates é uma helper function com um monte de funcionalidades: http://guides.rubyonrails.org/ active_record_validations.html#validation-helpers

Validação Especíca do CPF Validação Especíca do CPF A validação anterior inclui helpers genéricos. No CPF, há um cálculo de DV que tem de ser calculado. Para incluir: Indicar o módulo de validação (no modelo): include ActiveModel::Validations validates_with CpfValidator Criar o arquivo de validação em lib/validators/cpf_validator.rb: http://www.inf. ufpr.br/bmuller/ci320/10/cpf_validator.rb. Acrescentar diretório (lib/validators) à aplicação em config/application.rb config.autoload_paths += %W(#{config.root}/lib/validators)

Teste da validação Especíca do CPF Teste da validação Especíca do CPF Método 1: Digitar vários cpfs válidos/inválidos (Método antigo). O problema aqui é como (re)testar tudo se for feita uma mudança no cálculo. Método 2: Usar o modelo de testes do Rails. rake test Alguns testes já foram incluídos na geração da aplicação (new) e na geração do modelo ou do controlador ou da view. Estes testes estão no diretório test, que tem os seguintes subdiretórios: > ls test/ controllers fixtures helpers integration mailers models test_helper.rb

Teste de Unidade Teste de Unidade 1 Criar a xture (massa de dados para testes) em test/fixture 2 Já existe o arquivo pessoas.yml. 3 Criar massa de dados com cpfs válidos E inválidos. (http: //www.inf.ufpr.br/bmuller/ci320/10/pessoas.yml.) 4 Criar o teste no modelo test/unit/pessoa_test.rb (http: //www.inf.ufpr.br/bmuller/ci320/10/pessoa_test.rb.) 5 Para detalhes, veja http://guides.rubyonrails.org/ testing.html#unit-testing-your-models 6 assert: denição to state or declare positively and often forcefully or aggressively

Executar o teste Executar o teste 1 Preparar e inicializar o banco de dados do ambiente test 1 rake db:test:prepare - executa migraçõees pendentes e carrega o esquema do banco de dados do ambiente test 2 rake db:test:load - recria o banco de dados de teste a partir do arquivo db/schema.rb 2 Executar o(s) Unit Test('s) 1 Para um teste especíco: ruby -Itest test/unit/pessoa_test.rb 2 Para executar todos os testes de unidade: rake test:units 3 Para executar toda a suite de testes: rake test

Ajax Para demonstrar o uso de Ajax, vamos incrementar o exemplo anterior com uma busca na própria janela de listagem. Prelúdio: editar app/view/pessoas/index.html.erb; copiar o <table>.. </table para o arquivo _tabela_pessoas.html.erb. substituir no index por: <%= render 'tabela_pessoas' %> A alteração foi só perfumaria. A aplicação funciona normalmente.

Criando a busca Criando a busca Para fazer a busca (por nome), precisamos de: Um campo para a busca (form_tag, e incluí-lo no _index.html.erb. Deixei um pronto em (http://www.inf.ufpr.br/bmuller/ CI320/10/index.html.erb.) Observe que o nome do parâmetro é :nome Acrescentar uma ação no controlador baseado neste parâmetro. Deixei um pronto em (http://www.inf.ufpr.br/bmuller/ CI320/10/pessoas_controller.rb.) O campo de busca funciona. Verique. Só não usa Ajax.

Busca usando Ajax Busca usando Ajax O último passo é usar Ajax para renderizar somente a partial _tabela_pessoas.html.erb (e não toda a view). 1 indicar que a busca deve usar Ajax: <%= form_tag(pessoas_path, { :method => :get, :remote => true }) do %> 2 Criar um <div> sobre o qual deverá ocorrer a renderização. <div id=''ajax_load''> <%= render 'tabela_pessoas' %> </div> 3 Indicar no controller que é para responder Javascript: respond_to do format format.html # index.html.erb format.js format.json { render json: @pessoas } end

Arquivo de renderização Arquivo de renderização O último passo é criar o arquivo JS que deve responder à requisição. Como o controller que responde JS é o index, o arquivo é o app/views/pessoas/index.js.erb: $('div#ajax_load').html('<p>procurando, aguarde...</p>') $('div#ajax_load').html('<%= escape_javascript(render %"tabela_pessoas") %>') Alternando o :remote entre true e false, teremos renderização usando Ajax (respond_to... format.js) ou HTML (respond_to... format.html) http: //api.rubyonrails.org/classes/actionview/helpers/ JavaScriptHelper.html#method-i-escape_javascript

Mais informações Mais informações O objetivo não foi esgotar o assunto, mas conceituar. Assim como existe a variável params, também existem outras. Destaque à variável session, que é capaz de preservar informações entre interações. Muito útil para saber as funcionalidades disponíveis para um usuário (no caso de login/senha). Aulas muito interessantes: railscasts (pago, mas tem partes livres). O último trabalho pede login/senha. Tem vários tutoriais, como por exemplo http: //rails-4-0.railstutorial.org/book/modeling_users.