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.