/**
* Copyright 2014 Comcast Cable Communications Management, LLC
*
* This file is part of CATS.
*
* CATS is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CATS is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with CATS. If not, see <http://www.gnu.org/licenses/>.
*/
package com.comcast.cats.config.ui;
import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertNotNull;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.List;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.convert.Converter;
import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.shrinkwrap.resolver.api.DependencyResolvers;
import org.jboss.shrinkwrap.resolver.api.maven.MavenDependencyResolver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.comcast.cats.config.ui.RackController;
import com.comcast.cats.config.ui.RackService;
import com.comcast.cats.config.ui.SettopSlotConfigService;
import com.comcast.cats.config.ui.SettopSlotConfigServiceImpl;
import com.comcast.cats.config.ui.SlotConnectionBean;
import com.comcast.cats.config.utility.SlotConnectionRepresenter;
import com.comcast.cats.domain.SettopDesc;
import com.comcast.cats.info.ConfigServiceConstants;
import com.comcast.cats.info.SettopInfo;
import com.comcast.cats.local.domain.Rack;
import com.comcast.cats.local.domain.Slot;
import com.comcast.cats.service.util.YAMLUtils;
@RunWith( Arquillian.class )
public class RackControllerTest
{
@Inject
RackController rackController;
@Inject
SettopSlotConfigService settopSlotConfigService;
@Inject
RackService rackService;
static String yamlFilePath = "/usr/test_tmp/";
String RACK_1 = "04-04-R09";
String RACK_2 = "dummyrack";
String[] rackNames =
{ RACK_1, RACK_2 };
int INITIAL_NO_OF_SLOTS = 4;
static
{
System.setProperty( ConfigServiceConstants.CONFIG_PATH, yamlFilePath );
}
@Deployment
public static WebArchive createDeployment()
{
MavenDependencyResolver resolver = DependencyResolvers.use( MavenDependencyResolver.class )
.loadMetadataFromPom( "pom.xml" );
return ShrinkWrap.create(WebArchive.class)
.addClasses( HtmlSelectOneMenu.class, YAMLUtils.class, Converter.class, SettopInfo.class, DevRack.class)
.addAsLibraries(resolver.artifact("org.yaml:snakeyaml:1.10").resolveAsFiles())
.addAsLibraries(resolver.artifact("commons-lang:commons-lang:2.3").resolveAsFiles())
.addAsLibraries(resolver.artifact("log4j:log4j:1.2.14").resolveAsFiles())
.addAsLibraries(resolver.artifact("org.jboss.spec.javax.servlet:jboss-servlet-api_3.0_spec:1.0.0.Final").resolveAsFiles())
.addAsLibraries(resolver.artifact("org.primefaces:primefaces:3.4.1").resolveAsFiles())
.addAsLibraries(resolver.artifact("com.comcast.cats:ir-common:3.2.0.5").resolveAsFiles())
/* .addAsLibraries(resolver.artifact("org.jboss.spec.javax.faces:jboss-jsf-api_2.0_spec:1.0.0.Final").resolveAsFiles())*/
.addPackage( SlotConnectionRepresenter.class.getPackage() )
.addPackage( SettopSlotConfigServiceImpl.class.getPackage() )
.addPackage( Slot.class.getPackage() )
.addAsResource(new File("src/test/resources", "rackconfig.catsrack"))
.addAsResource(new File("src/test/resources", "settops.catsrack"))
.addAsResource(new File("src/test/resources", "settopTypes.catsrack"))
.addPackage( SettopDesc.class.getPackage() )
.addAsWebInfResource( new File("src/main/webapp/WEB-INF/beans.xml"))
.addAsWebInfResource( new File("src/main/webapp/WEB-INF/faces-config.xml"))
.setWebXML(new File("src/main/webapp/WEB-INF/web.xml"));
}
@Before
public void setUp()
{
int[] noOfSlots =
{ INITIAL_NO_OF_SLOTS, INITIAL_NO_OF_SLOTS };
DevRack devRack = new DevRack();
devRack.dumpRacksToFile( devRack.create( rackNames, noOfSlots ),
yamlFilePath + System.getProperty( "file.separator" ) + RackService.RACK_CONFIG );
rackController.refresh();
}
@After
public void tearDown()
{
try
{
File file = new File( yamlFilePath + System.getProperty( "file.separator" ) + RackService.RACK_CONFIG );
PrintWriter writer;
writer = new PrintWriter( file );
writer.print( "" );
writer.close();
File file2 = new File( yamlFilePath + System.getProperty( "file.separator" )
+ SettopSlotConfigService.SLOT_MAPPING_CONFIG );
PrintWriter writer2 = new PrintWriter( file2 );
writer2.print( "" );
writer2.close();
rackController.refresh();
}
catch ( FileNotFoundException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void getRackListTest()
{
List< Rack > racks = rackController.getRackList();
assertNotNull( racks );
assertEquals( rackNames.length, racks.size() );
}
@Test
public void getNoOfEmptySlotsTest()
{
rackController.refresh();
assertEquals( INITIAL_NO_OF_SLOTS, rackController.getNoOfEmptySlots( RACK_1 ) );
SlotConnectionBean slotConnection = new SlotConnectionBean();
Rack rack = rackController.getRackList().get( 0 );
Slot slot = rackService.findSlotByRack( rack.getName(), 1 );
SettopDesc settop = new SettopDesc();
slotConnection.setSettop( settop );
settop.setId( "1" );
slotConnection.setRack( rack );
slotConnection.setSlot( slot );
settopSlotConfigService.saveSlotConnection( slotConnection );
assertEquals( INITIAL_NO_OF_SLOTS - 1, rackController.getNoOfEmptySlots( rack.getName() ) );
}
@Test
public void getSettopTest()
{
rackController.refresh();
SlotConnectionBean slotConnection = new SlotConnectionBean();
Rack rack = rackController.getRackList().get( 0 );
Slot slot = rackService.findSlotByRack( rack.getName(), 1 );
SettopDesc settop = new SettopDesc();
settop.setId( "2" );
settop.setName( "Settop" );
slotConnection.setSettop( settop );
slotConnection.setRack( rack );
slotConnection.setSlot( slot );
settopSlotConfigService.saveSlotConnection( slotConnection );
assertEquals( settop.getName(), rackController.getSettopName( slot ) );
}
@Test
public void getSelectedRackTest()
{
rackController.refresh();
Rack rack = rackController.getRackList().get( 0 );
rackController.setSelectedRack( rack );
assertEquals( rack, rackController.getSelectedRack() );
}
@Test
public void getAsObjectTest()
{
rackController.refresh();
Rack rack1 = rackService.findRack( RACK_1 );
Rack rack = ( Rack ) rackController.getAsObject( null, null, RACK_1 );
assertEquals( rack1, rack );
}
@Test
public void getAsStringTest()
{
rackController.refresh();
Rack rack1 = rackService.findRack( RACK_1 );
String rackName = rackController.getAsString( null, null, rack1 );
assertEquals( RACK_1, rackName );
}
}