Package org.nutz.dao.test.normal

Source Code of org.nutz.dao.test.normal.FieldFilterTest

package org.nutz.dao.test.normal;

import static org.junit.Assert.*;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;
import org.nutz.dao.DaoException;
import org.nutz.dao.FieldFilter;
import org.nutz.dao.test.DaoCase;
import org.nutz.dao.test.meta.EmtryObject;
import org.nutz.dao.test.meta.Pet;
import org.nutz.trans.Atom;

public class FieldFilterTest extends DaoCase {

  private static Pet pet(String name) {
    Pet p = new Pet();
    p.setName(name);
    return p;
  }

  @Override
  protected void before() {
    dao.create(Pet.class, true);
    dao.insert(pet("xb"));
  }

  @Test
  public void test_insert_by_filter() {
    // insert one pet
    final Pet p = pet("xh").setNickName("XiaoHei");
    FieldFilter.create(Pet.class, "id|name").run(new Atom() {
      public void run() {
        dao.insert(p);
      }
    });
    Pet p2 = dao.fetch(Pet.class, p.getId());
    assertNull(p2.getNickName());
  }

  @Test
  public void test_update_by_filter() {
    final Pet p = dao.fetch(Pet.class, "xb");
    p.setNickName("XiaoBai");
    FieldFilter.create(Pet.class, "id|name").run(new Atom() {
      public void run() {
        dao.update(p);
      }
    });
    Pet p2 = dao.fetch(Pet.class, p.getId());
    assertNull(p2.getNickName());
  }

  @Test
  public void test_select_by_filter() {
    dao.update(dao.fetch(Pet.class, "xb").setNickName("XiaoBai"));
    assertEquals("XiaoBai", dao.fetch(Pet.class, "xb").getNickName());
    final Pet[] pets = new Pet[1];
    FieldFilter.create(Pet.class, "id|name").run(new Atom() {
      public void run() {
        pets[0] = dao.fetch(Pet.class, "xb");
      }
    });
    assertNull(pets[0].getNickName());
  }

  @Test
  public void test_query_by_filter() {
    dao.update(dao.fetch(Pet.class, "xb").setNickName("XiaoBai"));
    assertEquals("XiaoBai", dao.fetch(Pet.class, "xb").getNickName());
    final List<Pet> pets = new ArrayList<Pet>();
    FieldFilter.create(Pet.class, "id|name").run(new Atom() {
      public void run() {
        pets.add(dao.query(Pet.class, null, null).get(0));
      }
    });
    assertNull(pets.get(0).getNickName());
  }

  // Issue 435
  @Test(expected = DaoException.class)
  public void test_filter_no_field_match() {
    dao.create(EmtryObject.class, true);
    final EmtryObject obj = new EmtryObject();

    // 应该抛出一个DaoException,因为没有任何的字段需要插入!
    FieldFilter.create(EmtryObject.class, "id").run(new Atom() {
      public void run() {
        dao.insert(obj);
      }
    });

  }
}
TOP

Related Classes of org.nutz.dao.test.normal.FieldFilterTest

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.