Package com.google.code.gaeom.test

Source Code of com.google.code.gaeom.test.TestActivationTracking$A

package com.google.code.gaeom.test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import org.junit.Ignore;
import org.junit.Test;

import com.google.appengine.api.datastore.Key;
import com.google.code.gaeom.ObjectStore;
import com.google.code.gaeom.ObjectStoreSession;

public class TestActivationTracking extends AbstractLocalTest
{
  public static class A
  {
    A b;
    String name;
  }

  ObjectStore os = ObjectStore.Factory.create();

  private Key load()
  {
    A a = new A();
    a.name = "Sally";
    a.b = new A();
    a.b.name = "Fred";

    ObjectStoreSession oss = os.beginSession();

    Key key = oss.store(a).now();
    assertTrue(oss.isActivated(a));
    assertTrue(oss.isActivated(a.b));
    return key;
  }

  @Test
  public void testActivationTracking()
  {
    Key key = load();

    ObjectStoreSession oss2 = os.beginSession();
    A a2 = oss2.load(key).activate(0).now();
    assertTrue(oss2.isActivated(a2));
    assertFalse(oss2.isActivated(a2.b));
    assertNull(a2.b.name);
    oss2.refresh(a2.b).now();
    assertTrue(oss2.isActivated(a2.b));
    assertEquals("Fred", a2.b.name);

    ObjectStoreSession oss3 = os.beginSession();
    A a3 = oss3.load(key).now();
    assertTrue(oss3.isActivated(a3));
    assertTrue(oss3.isActivated(a3.b));
    assertEquals("Fred", a3.b.name);
  }

  @Test
  public void testExplicitActivationOfPreLoadedUnactivatedObjects()
  {
    load();
    ObjectStoreSession oss2 = os.beginSession();
    Iterable<A> as = oss2.find(A.class).activate(0).now();

    for (A a : as)
      assertTrue(oss2.isActivated(a));
  }

  @Ignore
  @Test
  public void testExplicitActivationOfPreLoadedUnactivatedObjects2()
  {
    A a = new A();
    a.name = "Sally";
    a.b = new A();
    a.b.name = "Fred";
    a.b.b = new A();
    a.b.b.name = "Martha";

    ObjectStoreSession oss = os.beginSession();

    Key key = oss.store(a).now();
    assertTrue(oss.isActivated(a));
    assertTrue(oss.isActivated(a.b));
    Key key1 = oss.getKey(a.b);

    ObjectStoreSession oss2 = os.beginSession();
    oss2.load(key1).activate(0).now()//load a.b activated, but a.b.b unactivated
   
    A a1 = oss2.load(key).now(); // load the whole graph
    assertTrue(oss2.isActivated(a1));
    assertTrue(oss2.isActivated(a1.b));
    assertTrue(oss2.isActivated(a1.b.b));
  }

  @Test(expected = IllegalArgumentException.class)
  public void testDetectStoreUnactivated()
  {
    Key key = load();
    ObjectStoreSession oss2 = os.beginSession();
    A a = oss2.load(key).activate(0).now();

    a.b.name = "bob";
    oss2.store(a.b).now();
  }

}
TOP

Related Classes of com.google.code.gaeom.test.TestActivationTracking$A

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.