Package cat.quickdb.operations

Source Code of cat.quickdb.operations.ComplexOperationsTest

package cat.quickdb.operations;

import cat.quickdb.complexmodel.Many1;
import cat.quickdb.complexmodel.Many2;
import cat.quickdb.complexmodel.Parent;
import cat.quickdb.complexmodel.Reference;
import cat.quickdb.complexmodel.Single;
import cat.quickdb.complexmodel.Son;
import org.junit.*;
import junit.framework.Assert;
import quickdb.db.AdminBase;
import cat.quickdb.model.Alter1;
import cat.quickdb.model.Alter2;
import cat.quickdb.tests.QuickDBTests;
import java.util.ArrayList;

public class ComplexOperationsTest {

    private AdminBase admin;

    @Before
    public void configure() {
        this.admin = AdminBase.initialize(QuickDBTests.db, QuickDBTests.host,
                QuickDBTests.port, QuickDBTests.instanceDB,
                QuickDBTests.user, QuickDBTests.pass, QuickDBTests.scheme);
    }

    @Test
    public void testSingleObject(){
        Single single = new Single();
        single.setName("testing single");
        single.setNumber(345908);
        single.setDate(new java.sql.Date(new java.util.Date().getTime()));

        boolean value = admin.save(single);
        Assert.assertTrue(value);
    }

    @Test
    public void testQuerySystemSimpleCondition(){
        Reference ref = new Reference();
        ref.setValue("housemd");

        Parent parent = new Parent();
        parent.setDescription("this is a test for parent");
        parent.setReference(ref);

        boolean value = admin.save(parent);
        Assert.assertTrue(value);

        Parent p = new Parent();
        admin.obtain(p, "reference.value = 'housemd'");

        Assert.assertEquals(p.getReference().getValue(), "housemd");
        Assert.assertEquals(p.getDescription(), "this is a test for parent");
    }

    @Test
    public void testQuerySystemComplexCondition(){
        Reference ref = new Reference();
        ref.setValue("house md");

        Parent parent = new Parent();
        parent.setDescription("testing5");
        parent.setReference(ref);

        boolean value = admin.save(parent);
        Assert.assertTrue(value);

        Parent p = new Parent();
        admin.obtain(p, "reference.value = 'house md' && description = 'testing5'");

        Assert.assertEquals(p.getReference().getValue(), "house md");
        Assert.assertEquals(p.getDescription(), "testing5");
    }

    @Test
    public void testQuerySystemWithInheritance(){
        Reference ref = new Reference();
        ref.setValue("house");

        Son son = new Son();
        son.setData("data from son");
        son.setSonName("child");
        son.setDescription("parent description");
        son.setReference(ref);

        boolean value = admin.save(son);
        Assert.assertTrue(value);

        Son s = new Son();
        admin.obtain(s, "reference.value = 'house'");

        Assert.assertEquals(s.getReference().getValue(), "house");
        Assert.assertEquals(s.getDescription(), "parent description");
    }

    @Test
    public void testObtainJoin(){
        Reference ref = new Reference();
        ref.setValue("house");

        Son son = new Son();
        son.setData("data from son");
        son.setSonName("child");
        son.setDescription("parent description");
        son.setReference(ref);

        boolean value = admin.save(son);
        Assert.assertTrue(value);
       
        String sql = "SELECT Son.data, Parent.description, Reference.value " +
                "FROM Son " +
                "JOIN Parent ON Parent.id = Son.parent_id " +
                "JOIN Reference ON Reference.id = Parent.reference " +
                "WHERE Reference.value = 'house'";

        Object[] join = admin.obtainTable(sql, 3);
        for(int i = 0; i < join.length; i++){
            String[] s = (String[]) join[i];
            Assert.assertEquals("data from son", s[0]);
            Assert.assertEquals("parent description", s[1]);
            Assert.assertEquals("house", s[2]);
        }
    }

    @Test
    public void testManyToMany(){
        Many2 m2a = new Many2();
        m2a.setName("many2 - a");
        Many1 m1 = new Many1();
        m1.setDescription("description1 m2a");
        Many1 m2 = new Many1();
        m2.setDescription("description2 m2a");
        ArrayList<Many1> manys1 = new ArrayList<Many1>();
        manys1.add(m1);
        manys1.add(m2);
        m2a.setMany1(manys1);

        Many2 m2b = new Many2();
        m2b.setName("many2 - b");
        Many1 m3 = new Many1();
        m3.setDescription("description3 m2b");
        Many1 m4 = new Many1();
        m4.setDescription("description4 m2b");
        ArrayList<Many1> manys2 = new ArrayList<Many1>();
        manys2.add(m3);
        manys2.add(m4);
        m2b.setMany1(manys2);

        Many1 many = new Many1();
        many.setDescription("description of principal many");
        ArrayList<Many2> m = new ArrayList<Many2>();
        m.add(m2a);
        m.add(m2b);
        many.setMany2(m);

        Assert.assertTrue(admin.save(many));

        Many1 many1 = new Many1();
        admin.obtainWhere(many1, "description = 'description of principal many'");
        Assert.assertEquals("description4 m2b", ((Many1)((Many2)many1.getMany2().get(1)).getMany1().get(1)).getDescription());
    }

    @Test
    public void testAlterTable(){
        admin.executeQuery("DROP TABLE AlterTable");

        Alter1 alter1 = new Alter1();
        alter1.setName("alter table1");

        Assert.assertTrue(admin.save(alter1));

        Alter2 alter2 = new Alter2();
        alter2.setName("alter table2");
        alter2.setExtend(55.45);

        Assert.assertTrue(admin.save(alter2));
    }

    public static junit.framework.Test suite() {
        return new junit.framework.JUnit4TestAdapter(ComplexOperationsTest.class);
    }

}
TOP

Related Classes of cat.quickdb.operations.ComplexOperationsTest

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.