Package base

Source Code of base.BaseTest

package base;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import models.InternshipFamiliar;
import models.Profile;
import models.Profile.ProfileType;
import models.Residence;
import models.Subscriber;
import models.User;
import models.UserProfile;

import org.junit.Before;

import play.Play;
import play.modules.siena.SienaFixtures;
import play.mvc.Http.Cookie;
import play.test.FunctionalTest;
import play.vfs.VirtualFile;

import com.google.appengine.api.NamespaceManager;

public abstract class BaseTest extends FunctionalTest {
 
  protected Map<String, Cookie> cookies = new HashMap<String, Cookie>();
 
  @Before
    public void setup() {
    SienaFixtures.deleteAllModels();
    SienaFixtures.loadModels("subscribers.yml");
    for(Subscriber subscriber : Subscriber.findAll()) {
      System.out.println("Subscriber: " + subscriber.name);
    }
    loadResidenceA();
    loadResidenceB();
  }
 
  private void loadResidenceB() {
    String old = NamespaceManager.get();
    try {
      Subscriber subscriber = Subscriber.findByName("B");
      assertTrue(subscriber.name.equals("B"));
      NamespaceManager.set(String.valueOf(subscriber.name));
      SienaFixtures.deleteAllModels();
      SienaFixtures.loadModels("subscriber_B.yml");
      assertTrue("En total tiene que haber 1 residencia ", Residence.count()==1);
      assertTrue("La residencia kirikiño tiene registrados 6 usuarios.  ",
          User.findAll().size()==6);
      Residence residence = Residence.findByName("kirikiño");
      assertTrue(residence.name.equals("kirikiño"));
      assertTrue(Profile.findAll().size()==3);
      /*Configuracion del administrador*/
      addProfileToUser("laura.garcia", Profile.ProfileType.ADMIN);
      assertTrue("Debe existir un administrador para la residencia Kirikiño",
          User.getAdmins().size()==1);
      assertTrue("El usuario laura.garcia debe ser administrador",
          User.findByUsername("laura.garcia").isAdmin());
      /*Configuracion de la Familia 1*/
      addProfileToUser("eva.perez", Profile.ProfileType.INTERNSHIP);
      assertTrue("La residencia tiene registrado a eva.perez",
          UserProfile.findByProfile(Profile.findByType(ProfileType.INTERNSHIP)).size()==1);
      User eva = User.findByUsername("eva.perez");
      assertTrue("El username de la interna es eva.perez", eva.username.equals("eva.perez"));
      assertTrue("El username de la interna (" + eva.id + ") es eva.perez", User.findById(eva.id).username.equals("eva.perez"));
      addProfileToUser("juan.gomez", Profile.ProfileType.FAMILIAR);
      addProfileToUser("abel.martin", Profile.ProfileType.FAMILIAR);
      assertTrue("La residencia tiene registrados dos familiares (juan.gomez y abel.martin)",
          UserProfile.findByProfile(Profile.findByType(ProfileType.FAMILIAR)).size()==2);
      createFamiliarRelation(User.findByUsername("eva.perez"), User.findByUsername("juan.gomez"));
      createFamiliarRelation(User.findByUsername("eva.perez"), User.findByUsername("abel.martin"));
      int familiars = 2;
      assertTrue("eva.perez tiene " + familiars + " familiares",
          InternshipFamiliar.getByInternship(User.findByUsername("eva.perez")).size()==familiars);
      /*Configuración de la Familia 2*/
      addProfileToUser("judith.agirre", Profile.ProfileType.INTERNSHIP);
      User judith = User.findByUsername("judith.agirre");
      assertTrue("El username de la interna es judith.agirre", judith.username.equals("judith.agirre"));
      assertTrue("El username de la interna (" + judith.id + ") es judith.agirrez",
          User.findById(judith.id).username.equals("judith.agirre"));
      addProfileToUser("tomas.cuenca", Profile.ProfileType.FAMILIAR);
      assertTrue("La residencia tiene registrados 3 familiares (juan.gomez, abel.martin y tomas.cuenca)",
          UserProfile.findByProfile(Profile.findByType(ProfileType.FAMILIAR)).size()==3);
      createFamiliarRelation(User.findByUsername("judith.agirre"), User.findByUsername("tomas.cuenca"));
      familiars = 1;
      assertTrue("judith.agirre tiene " + familiars + " familiares",
          InternshipFamiliar.getByInternship(User.findByUsername("judith.agirre")).size()==familiars);
    } finally {
      NamespaceManager.set(old);
    }
  }
 
  private void loadResidenceA() {
    String old = NamespaceManager.get();
    try {
      Subscriber subscriber = Subscriber.findByName("A");
      assertTrue(subscriber.name.equals("A"));
      NamespaceManager.set(String.valueOf(subscriber.name));
      SienaFixtures.deleteAllModels();
      SienaFixtures.loadModels("subscriber_A.yml");
      Residence residence = Residence.findByName("egaña");
      assertTrue(residence.name.equals("egaña"));
      assertTrue(Profile.findAll().size()==3);
      assertTrue("El número de usuarios debe ser 7", User.findAll().size()==7);
      //Eduardo Perrino (eduardo.perrino) es administrador de la residencia A
      addProfileToUser("eduardo.perrino", Profile.ProfileType.ADMIN);
      assertTrue("Debe existir un administrador para la residencia Egaña",
        User.getAdmins().size()==1);
      assertTrue("El usuario eduardo.perrino debe ser administrador",
        User.findByUsername("eduardo.perrino").isAdmin());
      // Juan Lopez (juan.lopez) es familiar del interno Aitor Luengo (aitor.luengo)
      addProfileToUser("aitor.luengo", Profile.ProfileType.INTERNSHIP);
      assertTrue("No se ha añadido el interno aitor.luengo",
        UserProfile.findByProfile(Profile.findByType(ProfileType.INTERNSHIP)).size()==1);
      addProfileToUser("juan.lopez", Profile.ProfileType.FAMILIAR);
      assertTrue("No se ha añadido el familiar juan.lopez",
        UserProfile.findByProfile(Profile.findByType(ProfileType.FAMILIAR)).size()==1);
      createFamiliarRelation(User.findByUsername("aitor.luengo"), User.findByUsername("juan.lopez"));
      assertTrue(InternshipFamiliar.getAll().size()==1);
      System.out.println(InternshipFamiliar.getByFamiliar(User.findByUsername("juan.lopez")).get(0).username);
      assertEquals("Objetos diferentes",
        InternshipFamiliar.getByFamiliar(User.findByUsername("juan.lopez")).get(0).username,
        User.findByUsername("aitor.luengo").username);
      assertEquals("Objetos diferentes",
        InternshipFamiliar.getByInternship(User.findByUsername("aitor.luengo")).get(0).username,
        User.findByUsername("juan.lopez").username);
      // Maria lekua (maria.lekua) es familiar de la interna Arantxa Martín (arantxa.martin)
      addProfileToUser("arantxa.martin", Profile.ProfileType.INTERNSHIP);
      assertTrue(UserProfile.findByProfile(Profile.findByType(ProfileType.INTERNSHIP)).size()==2);
      addProfileToUser("maria.lekua", Profile.ProfileType.FAMILIAR);
      assertTrue(UserProfile.findByProfile(Profile.findByType(ProfileType.FAMILIAR)).size()==2);
      createFamiliarRelation(User.findByUsername("arantxa.martin"), User.findByUsername("maria.lekua"));
      assertEquals("Objetos diferentes",
        InternshipFamiliar.getByFamiliar(User.findByUsername("maria.lekua")).get(0).username,
        User.findByUsername("arantxa.martin").username);
      assertEquals("Objetos diferentes",
        InternshipFamiliar.getByInternship(User.findByUsername("arantxa.martin")).get(0).username,
        User.findByUsername("maria.lekua").username);
      NamespaceManager.set(old);
    finally {
      NamespaceManager.set(old);
    }
  }
 
  private void addProfileToUser(String username, ProfileType profile) {
    UserProfile user_profile = new UserProfile(User.findByUsername(username),
        Profile.findByType(profile));
    user_profile.insert();
  }
 
  private void createFamiliarRelation(User internship, User familiar) {
    InternshipFamiliar internshipFamiliar = new InternshipFamiliar(internship, familiar);
    internshipFamiliar.insert();
  }
 
  protected static File locateFile(String filename) {
    VirtualFile vfFile;
    for (VirtualFile vf : Play.javaPath) {
      vfFile = vf.child(filename);
      if(vfFile!=null && vfFile.exists()) {
        return vfFile.getRealFile();
      }
    }
    return null;
  }

}
TOP

Related Classes of base.BaseTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.