package org.societies.cis.directory;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import org.societies.cis.directory.CisDirectory;
import org.societies.api.schema.cis.community.Criteria;
import org.societies.api.schema.cis.community.MembershipCrit;
import org.societies.api.schema.cis.directory.CisAdvertisementRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.annotation.Rollback;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:META-INF/TestCISDirectory-context.xml"})
public class TestCISDirectory extends AbstractTransactionalJUnit4SpringContextTests{
@Autowired
private CisDirectory cisDir;
private CisAdvertisementRecord cisAdvert1;
private CisAdvertisementRecord cisAdvert2;
private CisAdvertisementRecord cisAdvert2new;
// private static SessionFactory sessionfactory;
// private static Configuration configuration;
@Before
public void setUp() throws Exception {
//CIS DIR INSTANCE
// cisDir = CisDirectory.class.newInstance();
assertTrue(null != cisDir);
//CIS ADVERT 1
cisAdvert1 = CisAdvertisementRecord.class.newInstance();
MembershipCrit memberCrit1 = new MembershipCrit();
List<Criteria> criteria1 = new ArrayList<Criteria>();
Criteria crit1a = new Criteria();
crit1a.setAttrib("location");
crit1a.setOperator("=");
crit1a.setRank(1);
crit1a.setValue1("Dublin");
criteria1.add(crit1a);
Criteria crit1b = new Criteria();
crit1b.setAttrib("age");
crit1b.setOperator(">");
crit1b.setRank(2);
crit1b.setValue1("18");
criteria1.add(crit1b);
cisAdvert1.setName("record1");
cisAdvert1.setId("pubs.societies.org");
cisAdvert1.setCssownerid("pubs1.societies.org");
memberCrit1.setCriteria(criteria1);
cisAdvert1.setMembershipCrit(memberCrit1);
assertTrue(null != cisAdvert1);
System.out.println("CIS ADVERT not null");
assertTrue(null != cisAdvert1.getMembershipCrit());
System.out.println("getMembershipCrit not null");
assertTrue(null != cisAdvert1.getMembershipCrit().getCriteria());
System.out.println("getCriteria not null");
//CIS ADVERT 2
MembershipCrit memberCrit2 = new MembershipCrit();
List<Criteria> criteria2 = new ArrayList<Criteria>();
Criteria crit2a = new Criteria();
crit2a.setAttrib("location");
crit2a.setOperator("=");
crit2a.setRank(1);
crit2a.setValue1("London");
criteria2.add(crit1a);
Criteria crit2b = new Criteria();
crit2b.setAttrib("age");
crit2b.setOperator("<=");
crit2b.setRank(2);
crit2b.setValue1("23");
criteria2.add(crit2b);
cisAdvert2 = CisAdvertisementRecord.class.newInstance();
cisAdvert2.setName("record2");
cisAdvert2.setId("olympics.societies.org");
cisAdvert2.setCssownerid("leona1.societies.org");
memberCrit2.setCriteria(criteria2);
cisAdvert2.setMembershipCrit(memberCrit2);
assertTrue(null != cisAdvert2);
//create CIS Advertisement 2 new
cisAdvert2new = CisAdvertisementRecord.class.newInstance();
cisAdvert2new.setName("record2new");
cisAdvert2new.setId("leona2@societies.org");
cisAdvert2new.setCssownerid("leona2.societies.org");
assertTrue(null != cisAdvert2new);
}
@After
public void tearDown() throws Exception {
}
@Test
@Rollback(true)
public void addCISREcordtest() {
try {
System.out.println("+++++++++++++++++++++++ ADDING CIS_ADVERT1...");
System.out.println("Name is = " + cisAdvert1.getName());
System.out.println("ID is = " + cisAdvert1.getId());
System.out.println("Owner ID is = " + cisAdvert1.getCssownerid());
System.out.println("Criteria count = " + cisAdvert1.getMembershipCrit().getCriteria().size());
cisDir.addCisAdvertisementRecord(cisAdvert1);
} catch (Exception e) {
e.printStackTrace();
assert(false);
}
System.out.println("CIS_ADVERT1 added successfully.");
List<CisAdvertisementRecord> listResults = null;
Future<List<CisAdvertisementRecord>> asyncResult = cisDir.findAllCisAdvertisementRecords();
try {
listResults = asyncResult.get();
} catch (InterruptedException e) {
e.printStackTrace();
assert(false);
} catch (ExecutionException e) {
e.printStackTrace();
assert(false);
}
String returnedCISid = listResults.get(0).getId();
System.out.println("Result found =" + listResults.get(0).getId());
assert(returnedCISid.equals(cisAdvert1.getId()) );
cisDir.deleteCisAdvertisementRecord(cisAdvert1);
}
@Ignore
public void findallCISREcordtest() {
}
@Test
@Rollback(true)
public void deleteCISREcordtest() {
System.out.println("+++++++++++++++++++++++ Test Delete Record");
try {
cisDir.addCisAdvertisementRecord(cisAdvert1);
}catch (Exception e) {
assert(false);
e.printStackTrace();
}
try {
cisDir.deleteCisAdvertisementRecord(cisAdvert1);
}catch (Exception e) {
assert(false);
e.printStackTrace();
}
List<CisAdvertisementRecord> listResults = null;
Future<List<CisAdvertisementRecord>> asyncResult = cisDir.findAllCisAdvertisementRecords();
try {
listResults = asyncResult.get();
} catch (InterruptedException e) {
e.printStackTrace();
assert(false);
} catch (ExecutionException e) {
e.printStackTrace();
assert(false);
}
int count = listResults.size();
if (count==0)
assert(true);
else {
String returnedCISid = listResults.get(0).getId();
System.out.println("Result found = " + returnedCISid);
assert(false);
}
}
@Test
@Rollback(true)
public void modifyCISREcordtest() {
System.out.println("+++++++++++++++++++++++ Test UPDATE Record");
try {
cisDir.addCisAdvertisementRecord(cisAdvert1);
}catch (Exception e) {
assert(false);
e.printStackTrace();
}
try {
cisDir.updateCisAdvertisementRecord(cisAdvert1, cisAdvert2);
}catch (Exception e) {
assert(false);
e.printStackTrace();
}
List<CisAdvertisementRecord> listResults = null;
Future<List<CisAdvertisementRecord>> asyncResult = cisDir.findAllCisAdvertisementRecords();
try {
listResults = asyncResult.get();
} catch (InterruptedException e) {
e.printStackTrace();
assert(false);
} catch (ExecutionException e) {
e.printStackTrace();
assert(false);
}
String returnedCISid = listResults.get(0).getId();
System.out.println("Result found = " + returnedCISid);
assert(returnedCISid.equals(cisAdvert2.getId()));
}
}