/**
 * PartnerReferenceEvaluatorTest.java
 * Created on Jun 3, 2008
 * (C) Copyright TANDBERG Television Ltd.
 */
package com.tandbergtv.watchpoint.pmm.job.unitTests;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;

import com.tandbergtv.watchpoint.pmm.dao.hibernate.HibernateContext;
import com.tandbergtv.watchpoint.pmm.entities.JobParameter;
import com.tandbergtv.watchpoint.pmm.job.referenceEvaluator.PartnerReferenceEvaluator;
import com.tandbergtv.watchpoint.pmm.job.util.JobScheduleInfoConstants;

/**
 * @author spuranik
 *
 */
public class PartnerReferenceEvaluatorTest extends TestCase {

	/*
	 * (non-Javadoc)
	 * 
	 * @see junit.framework.TestCase#setUp()
	 */
	@Override
	protected void setUp() throws Exception {
		try {
			HibernateContext.getContext().initializeContext();
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
		}
		super.setUp();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see junit.framework.TestCase#tearDown()
	 */
	@Override
	protected void tearDown() throws Exception {
		try {
			HibernateContext.getContext().closeContext();
		} catch (RuntimeException e) {
			System.out.println(e.getMessage());
		}
		super.tearDown();
	}
	
	@SuppressWarnings("unchecked")
	public void testJobParameterEvaluation()
	{
		// build a info object which contains job params and contextid		
		Map<String, Object> info = new HashMap<String, Object>();
		
		List<JobParameter> jobParams = new ArrayList<JobParameter>();
		
		JobParameter p1 = new JobParameter();
		p1.setName("ProviderId");
		p1.setValue("$Partner.ProviderId");
		jobParams.add(p1);
		
		JobParameter p2 = new JobParameter();
		p2.setName("TitleId");
		p2.setValue("$Title.Id");
		jobParams.add(p2);
		
		JobParameter p3 = new JobParameter();
		p3.setName("Name");
		p3.setValue("$Partner.Name");
		jobParams.add(p3);
		
		JobParameter p4 = new JobParameter();
		p4.setName("Id");
		p4.setValue("$Partner.Id");
		jobParams.add(p4);
		
		JobParameter p5 = new JobParameter();
		p5.setName("ContextId");
		p5.setValue("$Partner.ContextId");
		jobParams.add(p5);
		
		JobParameter p6 = new JobParameter();
		p6.setName("EmailId");
		p6.setValue("$Partner.EmailId");
		jobParams.add(p6);
		
		JobParameter p7 = new JobParameter();
		p7.setName("SomeText");
		p7.setValue("PlainText");
		jobParams.add(p7);
		
		info.put(JobScheduleInfoConstants.CONTEXTID, 1L);
		info.put(JobScheduleInfoConstants.JOB_PARAMETERS, jobParams);
		
		PartnerReferenceEvaluator evaluator = new PartnerReferenceEvaluator(); 
		evaluator.evaluate(null, info);
		
		List<JobParameter> evaluatedParams = (List<JobParameter>)info.get(JobScheduleInfoConstants.JOB_PARAMETERS);
		for(JobParameter parameter : evaluatedParams){
			System.out.println("Parameter Name: " + parameter.getName());
			System.out.println("Parameter Value: " + parameter.getValue());
		}
	}
}
