From 84af94092324eb18a8d4c175b4e3864d9d0d1055 Mon Sep 17 00:00:00 2001
From: Andrew Downes <mrdownes@hotmail.com>
Date: Tue, 26 Jan 2016 16:36:02 +0000
Subject: [PATCH] Updated to send in batches

---
 classes/log/store.php | 27 ++++++++++++---------------
 tests/TestCase.php    | 18 ++++++++++--------
 2 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/classes/log/store.php b/classes/log/store.php
index a498496..52c9e2b 100644
--- a/classes/log/store.php
+++ b/classes/log/store.php
@@ -95,22 +95,19 @@ class store extends php_obj implements log_writer {
         $translatorcontroller = new translator_controller();
 
         // Emits events to other APIs.
-        foreach ($events as $event) {
-            $event = (array) $event;
-            $this->error_log('');
-            $this->error_log_value('event', $event);
-            $moodleevent = $moodlecontroller->createEvent($event);
-            if (is_null($moodleevent)) {
-                continue;
-            }
-            $this->error_log_value('moodleevent', $moodleevent);
-            $translatorevents = $translatorcontroller->createEvents($moodleevent);
-            $this->error_log_value('translatorevents', $translatorevents);
-            foreach ($translatorevents as $index => $translatorevent) {
-                $xapievent = $xapicontroller->createEvent($translatorevent);
-                $this->error_log_value('xapievent', $xapievent);
-            }
+        foreach ($events as $index => $event) {
+            $events[$index] = (array) $event;
         }
+
+        $this->error_log('');
+        $this->error_log_value('events', $events);
+        $moodleevents = $moodlecontroller->createEvents($events);
+        $this->error_log_value('moodleevent', $moodleevents);
+        $translatorevents = $translatorcontroller->createEvents($moodleevents);
+        $this->error_log_value('translatorevents', $translatorevents);
+        $xapievents = $xapicontroller->createEvents($translatorevents);
+        $this->error_log_value('xapievents', $xapievents);
+
     }
 
     private function error_log_value($key, $value) {
diff --git a/tests/TestCase.php b/tests/TestCase.php
index 78b0d39..94c58c5 100644
--- a/tests/TestCase.php
+++ b/tests/TestCase.php
@@ -29,20 +29,22 @@ abstract class TestCase extends PhpUnitTestCase {
     public function testCreateEvent() {
         $input = $this->constructInput();
 
-        $moodle_event = $this->moodle_controller->createEvent($input);
-        $this->assertTrue($moodle_event != null, 'Check that the event exists in the expander controller.');
+        $moodle_events = $this->moodle_controller->createEvents([$input]);
+        $this->assertNotNull($moodle_events, 'Check that the event exists in the expander controller.');
 
-        $translator_event = $this->translator_controller->createEvent($moodle_event);
-        $this->assertTrue($translator_event != null, 'Check that the event exists in the translator controller.');
+        $translator_events = $this->translator_controller->createEvents($moodle_events);
+        $this->assertNotNull($translator_events, 'Check that the event exists in the translator controller.');
 
-        $xapi_event = $this->xapi_controller->createEvent($translator_event);
-        $this->assertTrue($xapi_event != null, 'Check that the event exists in the emitter controller.');
+        $xapi_events = $this->xapi_controller->createEvents($translator_events);
+        $this->assertNotNull($xapi_events, 'Check that the event exists in the emitter controller.');
 
-        $this->assertOutput($input, $xapi_event);
+        $this->assertOutput($input, $xapi_events);
     }
 
     protected function assertOutput($input, $output) {
-        $this->assertValidXapiStatement((new TinCanStatement($output))->asVersion('1.0.0'));
+        foreach ($output as $outputpart) {
+            $this->assertValidXapiStatement((new TinCanStatement($outputpart))->asVersion('1.0.0'));
+        }
     }
 
     protected function assertValidXapiStatement($output) {
-- 
GitLab