package org.sakaiproject.conditions.impl; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.sakaiproject.conditions.api.EvaluationAction; import org.sakaiproject.conditions.api.Condition; import org.sakaiproject.conditions.api.ConditionService; import org.sakaiproject.conditions.api.Rule; import org.sakaiproject.event.api.Event; import junit.framework.TestCase; public class TestConditionService extends TestCase { private ConditionService conditionService; public void setUp() { conditionService = new ToyConditionsService(); conditionService.registerConditionTemplates(new MyConditionTemplateSet()); } public void testRegisterTemplates() { assertEquals("Gradebook", conditionService.getConditionTemplateSetForService("sakai.service.gradebook").getDisplayName()); } public void testSaveRuleAndNotify() { EvaluationAction command = new ToyCommand(); String resourceId = "zach-makes-the-best-conditions"; List<Condition> conditions = new ArrayList<Condition>(); conditions.add(numberLessThan100()); conditionService.addRule("gradebook.newgrade",new BaseRule(resourceId, conditions, command, Rule.Conjunction.OR)); ((ToyConditionsService)conditionService).dispatchAnEvent(newUserEvent()); assertEquals(0, ToyMessagePad.messages.size()); ((ToyConditionsService)conditionService).dispatchAnEvent(newGrade69Event()); assertEquals("I've been hit!",ToyMessagePad.messages.get(0)); } private Event newGrade69Event() { return new Event() { public String getContext() { // TODO Auto-generated method stub return null; } public String getEvent() { return "gradebook.newgrade"; } public boolean getModify() { // TODO Auto-generated method stub return false; } public int getPriority() { // TODO Auto-generated method stub return 0; } public String getResource() { return "69"; } public String getSessionId() { // TODO Auto-generated method stub return null; } public String getUserId() { // TODO Auto-generated method stub return null; } public Date getEventTime() { // TODO Auto-generated method stub return null; } }; } private Event newUserEvent() { return new Event() { public String getContext() { // TODO Auto-generated method stub return null; } public String getEvent() { return "users.new-user"; } public boolean getModify() { // TODO Auto-generated method stub return false; } public int getPriority() { // TODO Auto-generated method stub return 0; } public String getResource() { return "zt10"; } public String getSessionId() { // TODO Auto-generated method stub return null; } public String getUserId() { // TODO Auto-generated method stub return null; } public Date getEventTime() { // TODO Auto-generated method stub return null; } }; } private Condition numberLessThan100() { return new Condition() { public Object getArgument() { // TODO Auto-generated method stub return null; } public String getMethod() { // TODO Auto-generated method stub return null; } public String getOperator() { // TODO Auto-generated method stub return null; } public String getReceiver() { // TODO Auto-generated method stub return null; } public boolean evaluate(Object arg0) { return Integer.parseInt(((Event)arg0).getResource()) < 100; } public Class<?> classFromEvent() { // TODO Auto-generated method stub return null; } public String eventType() { // TODO Auto-generated method stub return null; } }; } }