function testPush() { $topic0 = uniqid('topic-'); $topic1 = uniqid('topic-'); $callback = uniqid('callback-'); $payload = array('user' => 'peter', 'path' => '/Readme.txt'); $subscriptions = new \OCA\Web_Hooks\Subscriptions(); $subscriber0 = $subscriptions->add($callback, $topic0); $subscriber1 = $subscriptions->add($callback, $topic1); $notifications = new \OCA\Web_Hooks\Notifications(); $notifications->add($payload, $subscriber0); $notifications->add($payload, $subscriber1); $receivedNotifications = array(); $cron = new \OCA\Web_Hooks\Cron($notifications, $subscriptions, function ($notification) use(&$receivedNotifications) { $receivedNotifications[] = $notification; return true; }); $cron->pushNotifications(); $this->assertEquals(2, count($receivedNotifications)); foreach ($receivedNotifications as $one) { $this->assertTrue(is_array($one)); $this->assertArrayHasKey('id', $one); $this->assertArrayHasKey('topic', $one); $this->assertArrayHasKey('callback', $one); $this->assertArrayHasKey('payload', $one); } $remainingNotifications = $notifications->all(); $this->assertEquals(0, count($remainingNotifications)); }
/** * @param $topic * @param integer $count */ private function assertNotifications($count) { // use second instance to make sure the database is used $storage2 = new \OCA\Web_Hooks\Notifications(); $subscribers = $storage2->all(); $this->assertEquals($count, count($subscribers)); return $subscribers; }