Package org.javalite.activejdbc

Source Code of org.javalite.activejdbc.OptimisticLockingOverrideVersionColumnTest

package org.javalite.activejdbc;

import org.javalite.activejdbc.annotations.VersionColumn;
import org.javalite.activejdbc.test.ActiveJDBCTest;
import org.javalite.activejdbc.test_models.Item;
import org.junit.Test;

/**
* @author Igor Polevoy
*/
public class OptimisticLockingOverrideVersionColumnTest extends ActiveJDBCTest {

    @Test
    public void shouldSetVersionToOneWhenCreatingNewRecord(){
        deleteAndPopulateTable("items");
        Item m = new Item();
        m.set("item_number", 1);
        m.set("item_description", "descr 1");
        m.saveIt();
        Item m1 = Item.findById(1);
        a(m1.get("lock_version")).shouldBeEqual(1);
    }


    @Test
    public void shouldAdvanceVersionWhenRecordIsUpdated(){
        deleteAndPopulateTable("items");
        Item m = new Item();
        m.set("item_number", 1);
        m.set("item_description", "descr 1");
        m.saveIt();

        m = Item.findById(1);
        m.set("item_description", "descr 2").saveIt();
        a(m.get("lock_version")).shouldBeEqual(2);// this will ensure that the value is updated in the model itself
        m = Item.findById(1);
        a(m.get("lock_version")).shouldBeEqual(2);

        m = Item.findById(1);
        m.set("item_description", "descr 3").saveIt();
        m = Item.findById(1);
        a(m.get("lock_version")).shouldBeEqual(3);

    }

    @Test(expected = StaleModelException.class)
    public void shouldThrowExceptionWhenVersionCollisionHappens(){
        deleteAndPopulateTable("items");
        Item m = new Item();
        m.set("item_number", 1);
        m.set("item_description", "descr 2").saveIt();
        m.saveIt();

        Item m1 = Item.findById(1);
        Item m2 = Item.findById(1);

        m1.set("item_description", "descr 5").saveIt();
        m2.set("item_description", "descr 6").saveIt(); //<<<<================ this will cause the StaleModelException
    }
}
TOP

Related Classes of org.javalite.activejdbc.OptimisticLockingOverrideVersionColumnTest

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.