Package org.openengsb.core.edbi.jdbc

Source Code of org.openengsb.core.edbi.jdbc.JdbcServiceTest

/**
* Licensed to the Austrian Association for Software Tool Integration (AASTI)
* under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright
* ownership. The AASTI licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.openengsb.core.edbi.jdbc;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.mockito.Mockito.mock;

import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openengsb.core.edbi.jdbc.sql.Column;
import org.openengsb.core.edbi.jdbc.sql.DataType;
import org.openengsb.core.edbi.jdbc.sql.PrimaryKeyConstraint;
import org.openengsb.core.edbi.jdbc.sql.Table;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;

public class JdbcServiceTest extends AbstractH2DatabaseTest {

    JdbcService service;

    JdbcTemplate jdbc;
    NamedParameterJdbcTemplate jdbcn;

    Table table;

    @Before
    public void setUp() throws Exception {
        service = new JdbcService(getDataSource());

        jdbc = new JdbcTemplate(getDataSource());
        jdbcn = new NamedParameterJdbcTemplate(getDataSource());

        table = new Table("TEST",
            new Column("ID", new DataType("IDENTITY")),
            new Column("NAME", new DataType("VARCHAR")),
            new Column("AGE", new DataType("INT")));

        table.addElement(new PrimaryKeyConstraint("ID"));

        jdbc.execute("CREATE TABLE `TEST` (ID IDENTITY PRIMARY KEY, NAME VARCHAR, AGE INT)");
    }

    @After
    public void tearDown() throws Exception {
        service = null;
        jdbc = null;
        jdbcn = null;
        table = null;
    }

    @SuppressWarnings("unchecked")
    @Test
    public void insert_indexRecordsIntoTable() throws Exception {
        List<IndexRecord> records = getRecords();

        service.insert(table, records);

        List<Map<String, Object>> rows = jdbc.queryForList("SELECT * FROM `TEST`");
        Map<String, Object> row;

        row = rows.get(0);
        assertEquals(1L, row.get("ID"));
        assertEquals("Arthur", row.get("NAME"));
        assertEquals(42, row.get("AGE"));

        row = rows.get(1);
        assertEquals(2L, row.get("ID"));
        assertEquals("Ford", row.get("NAME"));
        assertNull(row.get("AGE"));
    }

    @Test
    public void update_updatesRecordsCorrectly() throws Exception {
        List<IndexRecord> records = getRecords();
        service.insert(table, records);

        records.get(0).addValue("ID", 1L, Types.BIGINT);
        records.get(0).addValue("NAME", "Zaphod");

        records.get(1).addValue("ID", 2L, Types.BIGINT);
        records.get(1).addValue("AGE", 44, Types.INTEGER);

        service.update(table, records);

        List<Map<String, Object>> rows = jdbc.queryForList("SELECT * FROM `TEST`");
        Map<String, Object> row;

        row = rows.get(0);
        assertEquals(1L, row.get("ID"));
        assertEquals("Zaphod", row.get("NAME"));
        assertEquals(42, row.get("AGE"));

        row = rows.get(1);
        assertEquals(2L, row.get("ID"));
        assertEquals("Ford", row.get("NAME"));
        assertEquals(44, row.get("AGE"));
    }

    private List<IndexRecord> getRecords() {
        JdbcIndex<?> index = mock(JdbcIndex.class);

        List<IndexRecord> records = new ArrayList<>();

        IndexRecord record1 = new IndexRecord(index);
        record1.addValue("NAME", "Arthur", Types.VARCHAR);
        record1.addValue("AGE", 42, Types.INTEGER);
        record1.addValue("FOO", "BAR", Types.VARCHAR);

        IndexRecord record2 = new IndexRecord(index);
        record2.addValue("NAME", "Ford", Types.VARCHAR);

        records.add(record1);
        records.add(record2);

        return records;
    }

}
TOP

Related Classes of org.openengsb.core.edbi.jdbc.JdbcServiceTest

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.