/**
* 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 java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import javax.faces.component.html.HtmlSelectOneMenu;
import javax.faces.convert.Converter;
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 org.yaml.snakeyaml.nodes.Node;
import org.yaml.snakeyaml.nodes.ScalarNode;
import com.comcast.cats.config.ui.RackService;
import com.comcast.cats.config.ui.RackServiceImpl;
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 SlotConnectionConstructorRepresenterTest
{
SettopSlotConfigServiceImpl settopSlotConfigService;
RackServiceImpl rackService;
SlotConnectionBean slotConnection;
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;
String MAC_ADDRESS = "12:23:34:45:45:45";
String SETTOP_NAME = "Settop";
String ID = "0";
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 );
settopSlotConfigService = new SettopSlotConfigServiceImpl();
settopSlotConfigService.init();
rackService = new RackServiceImpl();
rackService.init();
slotConnection = new SlotConnectionBean();
Rack rack = rackService.findRack( RACK_1 );
Slot slot = rackService.findSlotByRack( RACK_1, 1 );
SettopDesc settop = new SettopDesc();
settop.setId( "1" );
settop.setHostMacAddress( MAC_ADDRESS );
settop.setName( SETTOP_NAME );
slotConnection.setSettop( settop );
slotConnection.setRack( rack );
slotConnection.setSlot( slot );
}
@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();
rackService.refresh();
settopSlotConfigService = null;
rackService = null;
slotConnection = null;
}
catch ( FileNotFoundException e )
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Test
public void SlotRepresentationTest()
{
Rack rack = rackService.findRack( RACK_1 );
SlotConnectionRepresenter representer = new SlotConnectionRepresenter();
Node node = representer.represent( rack );
System.out.println( "Node :" + node.getTag() + ":" );
assertEquals( SlotConnectionRepresenter.RACK_TAG, node.getTag().toString() );
assertEquals( rack.getName(), ( ( ScalarNode ) node ).getValue() );
Slot slot = rack.getSlots().get( 0 );
Node node1 = representer.represent( slot );
System.out.println( "Node :" + node1.getTag() + ":" );
assertEquals( SlotConnectionRepresenter.SLOT_TAG, node1.getTag().toString() );
assertEquals( rack.getName() + SlotConnectionRepresenter.SLOT_DELIMITER + slot.getNumber(),
( ( ScalarNode ) node1 ).getValue() );
}
@Test
public void SlotConstructorTest()
{
settopSlotConfigService.saveSlotConnection( slotConnection );
settopSlotConfigService.refresh();
// SlotConnectionConstructor constructor = new
// SlotConnectionConstructor();
}
}