Package jodd.db.oom.sqlgen

Source Code of jodd.db.oom.sqlgen.DbEntitySqlTest

// Copyright (c) 2003-2014, Jodd Team (jodd.org). All Rights Reserved.

package jodd.db.oom.sqlgen;

import jodd.db.oom.DbOomManager;
import jodd.db.oom.tst.BadBoy;
import jodd.db.oom.tst.BadGirl;
import jodd.db.oom.tst.Boy;
import jodd.db.oom.tst.Girl;
import org.junit.Before;
import org.junit.Test;

import java.util.Map;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;

public class DbEntitySqlTest {

  @Before
  public void setUp() throws Exception {

    DbOomManager.resetAll();
    DbOomManager dbOom = DbOomManager.getInstance();

    dbOom.registerType(Boy.class);
    dbOom.registerType(BadBoy.class);
    dbOom.registerType(BadGirl.class);
    dbOom.registerType(Girl.class);
  }

  protected void checkGirl(DbSqlBuilder b) {
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(3, params.entrySet().size());
    assertEquals(Integer.valueOf(1), params.get("girl.id").getValue());
    assertEquals("sanja", params.get("girl.name").getValue());
    assertEquals("c++", params.get("girl.speciality").getValue());
  }

  protected void checkBadGirl1(DbSqlBuilder b) {
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(2, params.entrySet().size());
    assertEquals(Integer.valueOf(2), params.get("badGirl.fooid").getValue());
    assertEquals(".net", params.get("badGirl.foospeciality").getValue());
  }

  protected void checkBadGirl2(DbSqlBuilder b) {
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(3, params.entrySet().size());
    assertEquals(Integer.valueOf(2), params.get("badGirl.fooid").getValue());
    assertEquals(".net", params.get("badGirl.foospeciality").getValue());
    assertNull(params.get("badGirl.fooname").getValue());
  }

  protected void checkBadGirl3(DbSqlBuilder b) {
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(1, params.entrySet().size());
    assertEquals(Integer.valueOf(2), params.get("badGirl.fooid").getValue());
  }

  protected void checkBadGirl4(DbSqlBuilder b) {
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(1, params.entrySet().size());
    assertEquals("2", params.get("p0").getValue().toString());
  }

  protected void checkGirl1(DbSqlBuilder b) {
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(1, params.entrySet().size());
    assertEquals("sanja", params.get("p0").getValue());
  }

  @Test
  public void testInsert() {
    Girl g = new Girl(1, "sanja", "c++");
    DbSqlBuilder b = DbEntitySql.insert(g);
    assertEquals("insert into GIRL (ID, NAME, SPECIALITY) values (:girl.id, :girl.name, :girl.speciality)", b.generateQuery());
    checkGirl(b);
  }

  @Test
  public void testTruncate() {
    Girl g = new Girl(1, "sanja", "c++");
    assertEquals("delete from GIRL", DbEntitySql.truncate(g).generateQuery());
    assertEquals("delete from GIRL", DbEntitySql.truncate(Girl.class).generateQuery());
  }

  @Test
  public void testUpdate() {
    Girl g = new Girl(1, "sanja", "c++");
    DbSqlBuilder b = DbEntitySql.update(g);
    assertEquals("update GIRL Girl_ set ID=:girl.id, NAME=:girl.name, SPECIALITY=:girl.speciality  where (1=1)",
        b.generateQuery());
    checkGirl(b);

    BadGirl bg = new BadGirl(Integer.valueOf(2), null, ".net");
    b = DbEntitySql.update(bg);
    assertEquals(
        "update GIRL BadGirl_ set ID=:badGirl.fooid, SPECIALITY=:badGirl.foospeciality  where (BadGirl_.ID=:badGirl.fooid)",
        b.generateQuery());
    checkBadGirl1(b);

    b = DbEntitySql.updateAll(bg);
    assertEquals(
        "update GIRL BadGirl_ set ID=:badGirl.fooid, NAME=:badGirl.fooname, SPECIALITY=:badGirl.foospeciality  where (BadGirl_.ID=:badGirl.fooid)",
        b.generateQuery());
    checkBadGirl2(b);
  }

  @Test
  public void testUpdateColumn() {
    BadGirl bg = new BadGirl(Integer.valueOf(1), "sanja", "c++");
    DbSqlBuilder b = DbEntitySql.updateColumn(bg, "fooname", "Anja");
    assertEquals(
        "update GIRL BadGirl_ set NAME=:p0 where (BadGirl_.ID=:badGirl.fooid)",
        b.generateQuery());
    Map<String, ParameterValue> params = b.getQueryParameters();
    assertEquals(2, params.entrySet().size());
    assertEquals(Integer.valueOf(1), params.get("badGirl.fooid").getValue());
    assertEquals("Anja", params.get("p0").getValue());
  }

  @Test
  public void testDelete() {
    Girl g = new Girl(1, "sanja", "c++");
    DbSqlBuilder b = DbEntitySql.delete(g);
    assertEquals("delete from GIRL where (GIRL.ID=:girl.id and GIRL.NAME=:girl.name and GIRL.SPECIALITY=:girl.speciality)",
        b.generateQuery());
    checkGirl(b);

    BadGirl bg = new BadGirl(Integer.valueOf(2), null, ".net");
    b = DbEntitySql.delete(bg);
    assertEquals(
        "delete from GIRL where (GIRL.ID=:badGirl.fooid and GIRL.SPECIALITY=:badGirl.foospeciality)",
        b.generateQuery());
    checkBadGirl1(b);

    b = DbEntitySql.deleteByAll(bg);
    assertEquals(
        "delete from GIRL where (GIRL.ID=:badGirl.fooid and GIRL.NAME=:badGirl.fooname and GIRL.SPECIALITY=:badGirl.foospeciality)",
        b.generateQuery());
    checkBadGirl2(b);

    b = DbEntitySql.deleteById(bg);
    assertEquals(
        "delete from GIRL where (GIRL.ID=:badGirl.fooid)",
        b.generateQuery());
    checkBadGirl3(b);

    b = DbEntitySql.deleteById(bg, 2);
    assertEquals(
        "delete from GIRL where GIRL.ID=:p0",
        b.generateQuery());
    checkBadGirl4(b);
  }

  @Test
  public void testFrom() {
    Girl g = new Girl(1, "sanja", "c++");

    assertEquals("select Girl_.ID, Girl_.NAME, Girl_.SPECIALITY from GIRL Girl_ ",
        DbEntitySql.from(g).generateQuery());

    assertEquals("select BadGirl_.ID, BadGirl_.NAME, BadGirl_.SPECIALITY from GIRL BadGirl_ ",
        DbEntitySql.from(BadGirl.class).generateQuery());

    assertEquals("select ggg.ID, ggg.NAME, ggg.SPECIALITY from GIRL ggg ",
        DbEntitySql.from(BadGirl.class, "ggg").generateQuery());
  }

  @Test
  public void testFind() {
    Girl g = new Girl(1, "sanja", "c++");
    DbSqlBuilder b = DbEntitySql.find(g);
    assertEquals("select Girl_.ID, Girl_.NAME, Girl_.SPECIALITY from GIRL Girl_ where (Girl_.ID=:girl.id and Girl_.NAME=:girl.name and Girl_.SPECIALITY=:girl.speciality)",
        b.generateQuery());
    checkGirl(b);

    b = DbEntitySql.findByAll(g);
    assertEquals("select Girl_.ID, Girl_.NAME, Girl_.SPECIALITY from GIRL Girl_ where (Girl_.ID=:girl.id and Girl_.NAME=:girl.name and Girl_.SPECIALITY=:girl.speciality)",
        b.generateQuery());
    checkGirl(b);

    BadGirl bg = new BadGirl(Integer.valueOf(2), null, ".net");
    b = DbEntitySql.find(bg);
    assertEquals("select BadGirl_.ID, BadGirl_.NAME, BadGirl_.SPECIALITY from GIRL BadGirl_ where (BadGirl_.ID=:badGirl.fooid and BadGirl_.SPECIALITY=:badGirl.foospeciality)",
        b.generateQuery());
    checkBadGirl1(b);

    b = DbEntitySql.findByAll(bg);
    assertEquals("select BadGirl_.ID, BadGirl_.NAME, BadGirl_.SPECIALITY from GIRL BadGirl_ where (BadGirl_.ID=:badGirl.fooid and BadGirl_.NAME=:badGirl.fooname and BadGirl_.SPECIALITY=:badGirl.foospeciality)",
        b.generateQuery());
    checkBadGirl2(b);

    b = DbEntitySql.findByColumn(Girl.class, "name", "sanja");
    assertEquals("select Girl_.ID, Girl_.NAME, Girl_.SPECIALITY from GIRL Girl_ where Girl_.NAME=:p0",
        b.generateQuery());
    checkGirl1(b);

    b = DbEntitySql.findByColumn(BadGirl.class, "fooname", "sanja");
    assertEquals("select BadGirl_.ID, BadGirl_.NAME, BadGirl_.SPECIALITY from GIRL BadGirl_ where BadGirl_.NAME=:p0",
        b.generateQuery());
    checkGirl1(b);

    b = DbEntitySql.findForeign(BadBoy.class, bg);
    assertEquals("select BadBoy_.ID, BadBoy_.GIRL_ID, BadBoy_.NAME from BOY BadBoy_ where BadBoy_.GIRL_ID=:p0",
        b.generateQuery());
    checkBadGirl4(b);

    b = DbEntitySql.findById(bg);
    assertEquals("select BadGirl_.ID, BadGirl_.NAME, BadGirl_.SPECIALITY from GIRL BadGirl_ where (BadGirl_.ID=:badGirl.fooid)",
        b.generateQuery());
    checkBadGirl3(b);

    b = DbEntitySql.findById(bg, 2);
    assertEquals("select BadGirl_.ID, BadGirl_.NAME, BadGirl_.SPECIALITY from GIRL BadGirl_ where BadGirl_.ID=:p0",
        b.generateQuery());
    checkBadGirl4(b);
  }

  @Test
  public void testCount() {

    Girl g = new Girl(1, "sanja", "c++");
    DbSqlBuilder b = DbEntitySql.count(g);
    assertEquals("select count(*) from GIRL Girl_ where (Girl_.ID=:girl.id and Girl_.NAME=:girl.name and Girl_.SPECIALITY=:girl.speciality)",
        b.generateQuery());
    checkGirl(b);

    BadGirl bg = new BadGirl();
    b = DbEntitySql.count(bg);
    assertEquals("select count(*) from GIRL BadGirl_ where (1=1)",
        b.generateQuery());

    bg = new BadGirl(Integer.valueOf(2), null, ".net");
    b = DbEntitySql.count(bg);
    assertEquals("select count(*) from GIRL BadGirl_ where (BadGirl_.ID=:badGirl.fooid and BadGirl_.SPECIALITY=:badGirl.foospeciality)",
        b.generateQuery());
    checkBadGirl1(b);

    b = DbEntitySql.countAll(bg);
    assertEquals("select count(*) from GIRL BadGirl_ where (BadGirl_.ID=:badGirl.fooid and BadGirl_.NAME=:badGirl.fooname and BadGirl_.SPECIALITY=:badGirl.foospeciality)",
        b.generateQuery());
    checkBadGirl2(b);

    b = DbEntitySql.count(BadGirl.class);
    assertEquals("select count(*) from GIRL BadGirl_",
        b.generateQuery());

  }

  @Test
  public void testIncreaseDecrease() {
    DbSqlBuilder b = DbEntitySql.increaseColumn(BadBoy.class, 1, "nejm", 5, true);
    assertEquals("update BOY set NAME=NAME+:p0 where BOY.ID=:p1",
        b.generateQuery());

    b = DbEntitySql.increaseColumn(BadBoy.class, 1, "nejm", 5, false);
    assertEquals("update BOY set NAME=NAME-:p0 where BOY.ID=:p1",
        b.generateQuery());

  }

}
TOP

Related Classes of jodd.db.oom.sqlgen.DbEntitySqlTest

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.