package org.netevolved.tincan; import java.util.ArrayList; import java.util.Date; import org.entermediadb.asset.MediaArchive; import org.ijsolutions.testbench.TestBench; import org.ijsolutions.testbench.learninggroup.LearningGroup; import org.ijsolutions.testbench.modules.TestBenchModule; import org.openedit.BaseTestCase; import org.openedit.Data; import org.openedit.WebPageRequest; import org.openedit.data.BaseData; import org.openedit.data.Searcher; import org.openedit.event.WebEvent; import com.rusticisoftware.tincan.Statement; import com.rusticisoftware.tincan.StatementsResult; public class TinCanTest extends BaseTestCase { public void testReadStatements() throws Exception { WebPageRequest req = getFixture().createPageRequest("/bootstrapfrontend/admin/import/runimport.html"); TestBenchModule mod = (TestBenchModule) getBean("TestBenchModule"); TestBench bench = mod.getTestBench(req); bench.saveSetting("lrs-auth","Basic OWVjZmYwN2NjNGI5NjYwZTQxMjUwNmFkOWZhNDJkNDc0YjFhYjA3NDo3ZTU2MDhkYzkwZTBiNjNhYWI4OWNiZWRmNGQyZDI2ODc5ZWExNmFl" ); bench.saveSetting("lrs-endpoint", "http://34.227.195.177/data/xAPI"); MediaArchive archive = bench.getMediaArchive(); TinCan can = bench.getTinCan(); WebEvent coursedetails = new WebEvent(); coursedetails.setName("Test Course"); Date now = new Date(); can.composeStatement( req.getUser(), "http://testbenchtesting/experienced","http://testbenchtesting/123", coursedetails, false); //sends statement StatementsResult statements = can.getStatements(now, null); assertTrue(statements.getStatements().size() > 0); } public void testWebEvents() throws Exception { WebPageRequest req = getFixture().createPageRequest("/bootstrapfrontend/admin/import/runimport.html"); TestBenchModule mod = (TestBenchModule) getBean("TestBenchModule"); TestBench bench = mod.getTestBench(req); bench.getSearcher("webeventlistenerfilter").reIndexAll(); bench.getSearcher("webeventlistener").reIndexAll(); bench.saveSetting("lrs-auth","Basic OWVjZmYwN2NjNGI5NjYwZTQxMjUwNmFkOWZhNDJkNDc0YjFhYjA3NDo3ZTU2MDhkYzkwZTBiNjNhYWI4OWNiZWRmNGQyZDI2ODc5ZWExNmFl" ); bench.saveSetting("lrs-endpoint", "http://34.227.195.177/data/xAPI"); TinCan can = bench.getTinCan(); Date now = new Date(); Data coursedetails = new BaseData(); WebEvent event = new WebEvent(); event.setOperation("completed"); event.setSearchType("test"); event.setUser(req.getUser()); event.setProperty("activity", "http://someactivity"); event.setProperty("verb", "http://someverb"); event.setCatalogId(bench.getCatalogId()); event.setSource(coursedetails); event.setValue("name", "Test Course"); bench.getEventManager().fireEvent(event); Thread.sleep(4000); StatementsResult statements = can.getStatements(now, null); assertTrue(statements.getStatements().size() > 0); } public void testCourseLaunch() throws Exception { //This simulates opening this page in a browser: WebPageRequest req = getFixture().createPageRequest("/bootstrapfrontend/classes/testcourse/index.html"); TestBenchModule mod = (TestBenchModule) getBean("TestBenchModule"); TestBench bench = mod.getTestBench(req); Searcher courses = bench.getSearcher("learningGroup"); //Create a new learning group if it doesn't exist Data course = (Data) courses.searchById("testcourse"); if(course == null) { course = new LearningGroup(); course.setId("testcourse"); course.setName("Test Course"); courses.saveData(course, req.getUser()); } bench.getLearningGroupSearcher().addLearningGroup((LearningGroup) course, true); bench.getLearningGroupSearcher().configureCourses((LearningGroup) course, true); Date now = new Date(); //This actually runs the code, simulates the user opening the class by clicking on the class home link getFixture().getEngine().executePathActions(req); //Get the statements, make sure there is a new one TinCan can = bench.getTinCan(); StatementsResult result = can.getStatements(now, null); assertTrue(result.getStatements().size() > 0); //Grab the first statement, make sure it makes sense Statement statement = result.getStatements().get(0); assertEquals(statement.getVerb().getDisplay().get("en_us"), "Opened"); assertEquals(statement.getVerb().getId(), "http://localhost:8080/bootstrapfrontend/classes/testcourse/index.html"); assertEquals(statement.getActor().getName(), "The Administrator"); } }