Últimos artigos:

Testando controladores do grails

24/09/2010 19:52

Olá Pessoal...

Neste artigo irei implementar um teste somente da lógica de um controlador para o framework grails.Utilizarei objetos mocks para isolar as lógicas externas ao controlador.

Dependencias:

  • gmock é um framework escrito em groovy para criar objetos mokcs.

Vamos ao trabalho:

Passo 1: implementando uma aplicação básica

Criando uma aplicação

  grails create-app Teste

Criando a classe de domínio pessoa

  grails create-domain-class teste.Pessoa

Adicionado o campo nome na classe de domínio pessoa

  package teste
  class Pessoa {
      String nome 
      static constraints = {
      }
  }

Criando o controlador

grails create-controller pessoa

Alterando o controlador

  package teste
  class PessoaController {
      
    def pessoaService
  
    def buscar = {
       def pessoa = pessoaService.buscarPessoa(params.id) 
       [pessoa:pessoa] 
    }
    
  }

Criando o serviço

 grails create-service pessoa

Alterando o serviço

package teste
class PessoaService {

    static transactional = true

    def buscaPessoa(id) {
       return new Pessoa(nome:"teste")
    }
}

Passo 2: implementando o teste

Adicionando a dependencia Gmock no arquivo BuildConfig.groovy


    dependencies {
        test "org.gmock:gmock:0.8.0"
    }

Alterando o arquivo de teste PessoaControllerTests.groovy


package teste
import grails.test.*
import org.gmock.*

@WithGMock
class PessoaControllerTests extends ControllerUnitTestCase {
    protected void setUp() {
        super.setUp()
    }

    protected void tearDown() {
        super.tearDown()
    }

    void testDeveriaBuscarPessoa() {
        def result = new Pessoa(id:1,nome:"TESTE")
        def service = new PessoaService()
        mock(service).buscarPessoa(1).returns(result)
        mock(controller).pessoaService.returns(service)
        play{
            controller.params.id = 1
            def acao = controller.buscar()
            assertEquals(result.nome,acao.pessoa.nome)
        }
    }
}

Agora é só executar o teste

    grails test-app --unit

A aplicação de exemplo está no github

Espero que o artigo ajude.

Qualquer dúvida sintam-se a vontade para me enviar um email: luiszandonadi@gmail.com

Internacionalização Rails com Netbeans

10/07/2010 15:52

Motivação

Suprir a necessidade de editar manualmente arquivos .yml no Netbeans.

Solução

Criar um plugin para facilitar o trabalho.

Desenvolvimento

O desenvolvimento de qualquer plugin no netbeans não é trivial pois a documentação é confusa.O site oficial contém apenas o javadoc e artigos de exemplo. O plugin é basicamente um painel onde é possível escolher qual arquivo editar e navegar pelos seus atributos usando a função de autocompletar.

Baixar??

Clique aqui

Como contribuir??

O código fonte do plugin está no github

git clone http://github.com/luiszandonadi/railsI18nSuite.git

Imagens do plugin em ação:

Plugin bloqueado pois é necessário selecionar um projeto ruby on rails como padrão.

De

Alterando um valor.

De blog

Plugin desbloqueado.

De blog

Inserindo nova chave e valor no arquivo.

De blog

Espero que gostem do plugin!!

Criação de um cliente usando gdata-api e gmail4j

15/06/2010 20:50

Neste artigo comentarei sobre o desenvolvimento de um cliente para o gmail e para o google calendar usando java.

Iniciei pesquisando alguns widgets na web, percebi que existiam muitos disponíveis porém nenhum deles integravam o google calendar e o gmail. Sendo assim tomei uma decisão: implementar o meu próprio cliente. Utilizei as bibliotecas Gmail4J e o GDATA API. O gdata-api tem uma boa documentação para desenvolvedorers java e tambem tem suporte a outras liguagens(Java, .NET, PHP, Python, JS, Obj-C), já a documentação do Gmail4J possui somente alguns exemplos.

Uso das API's

Exemplo gdata API em java:

// Cria o serviço e autentica
CalendarService myService = new CalendarService("exampleCo-exampleApp-1");
myService.setUserCredentials("teste@gmail.com", "mypassword");

// Consulta todos os eventos
URL feedUrl = new URL("http://www.google.com/calendar/feeds/default/allcalendars/full");
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);
System.out.println("Your calendars:");
System.out.println();
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
  CalendarEntry entry = resultFeed.getEntries().get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}

Exemplo do Gmail4J:

GmailClient client = new RssGmailClient();
GmailConnection connection = new HttpGmailConnection(
                 LoginDialog.getInstance().show("Enter Gmail Login"));
client.setConnection(connection);
final List<GmailMessage> messages = client.getUnreadMessages();
for (GmailMessage message : messages) {
    System.out.println(message);
}

Vamos ao aplicativo:

Funcionalidades:

  • Notificação de e-mails a cada 10 minutos.
  • Adicionar, remover e visualizar eventos do google agenda .

O projeto está disponível para contribuição no github.

Abraços a todos.