Package org.jboss.seam.example.guice.test

Source Code of org.jboss.seam.example.guice.test.GuiceTest

package org.jboss.seam.example.guice.test;

import org.jboss.seam.example.guice.JuiceBar;
import org.jboss.seam.example.guice.Juice;
import org.jboss.seam.example.guice.AppleJuice;
import org.jboss.seam.example.guice.Orange;
import org.jboss.seam.example.guice.OrangeJuice;
import org.jboss.seam.mock.SeamTest;
import org.testng.annotations.Test;

import com.google.inject.Injector;
import com.google.inject.Key;

/**
* @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
*/
public class GuiceTest extends SeamTest
{
   @Test
   public void testGuiceInjector() throws Exception
   {
      new ComponentTest()
      {
         @Override
         protected void testComponents() throws Exception
         {
            Injector injector = (Injector) getInstance("guiceExampleInjector");

            Object juiceInstance = injector.getInstance(Juice.class);
            assert juiceInstance instanceof AppleJuice : juiceInstance;

            Object orangeInstance = injector.getInstance(Key.get(Juice.class, Orange.class));
            assert orangeInstance instanceof OrangeJuice : orangeInstance;
         }
      }.run();
   }

   @Test
   public void testGuiceIntegration() throws Exception
   {
      new ComponentTest()
      {
         @Override
         protected void testComponents() throws Exception
         {
            JuiceBar juiceBar = (JuiceBar) getInstance("juiceBar");

            Juice juiceOfTheDay = juiceBar.getJuiceOfTheDay();
            assert "Apple Juice".equals(juiceOfTheDay.getName()) : juiceOfTheDay.getName();
            Juice anotherJuice = juiceBar.getAnotherJuice();
            assert "Orange Juice".equals(anotherJuice.getName()) : anotherJuice.getName();

            Juice juiceOfTheDay2 = juiceBar.getJuiceOfTheDay();
            assert juiceOfTheDay != juiceOfTheDay2 : "A new instance should be created by Guice.";
            Juice anotherJuice2 = juiceBar.getAnotherJuice();
            assert anotherJuice == anotherJuice2 : "Different instances returned for the singleton object.";
         }
      }.run();
   }

   @Test
   public void testGuiceDisinjection() throws Exception
   {
      new ComponentTest()
      {
         @Override
         protected void testComponents() throws Exception
         {
            JuiceTestBar juiceBar = (JuiceTestBar) getInstance("juiceTestBar");
            juiceBar.getJuiceOfTheDay(); // Call a method to trigger Guice injection

            assert juiceBar.getJuiceOfTheDay() != null;
            assert juiceBar.getAnotherJuice() != null;

            // Reflection to obtain the field value would not work here due to the proxy
            assert juiceBar.getJuiceOfTheDayBypassInterceptors() == null
                        : "Value injected by Guice was not cleared after the call";
            assert juiceBar.getAnotherJuiceBypassInterceptors() == null
                        : "Value injected by Guice was not cleared after the call";        
         }
      }.run();
   }
}
TOP

Related Classes of org.jboss.seam.example.guice.test.GuiceTest

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.