/tests/notification/notification_test.php
https://github.com/marc1706/phpbb · PHP · 338 lines · 285 code · 37 blank · 16 comment · 0 complexity · 5c482448fbb29872e0abe9e489a32572 MD5 · raw file
- <?php
- /**
- *
- * This file is part of the phpBB Forum Software package.
- *
- * @copyright (c) phpBB Limited <https://www.phpbb.com>
- * @license GNU General Public License, version 2 (GPL-2.0)
- *
- * For full copyright and license information, please see
- * the docs/CREDITS.txt file.
- *
- */
- require_once __DIR__ . '/base.php';
- class phpbb_notification_test extends phpbb_tests_notification_base
- {
- protected $notifications, $db, $container, $user, $config, $auth, $cache;
- public function getDataSet()
- {
- return $this->createXMLDataSet(__DIR__ . '/fixtures/notification.xml');
- }
- public function test_get_notification_type_id()
- {
- // They should be inserted the first time
- $post_type_id = $this->notifications->get_notification_type_id('notification.type.post');
- $quote_type_id = $this->notifications->get_notification_type_id('notification.type.quote');
- $test_type_id = $this->notifications->get_notification_type_id('test');
- self::assertEquals(array(
- 'test' => $test_type_id,
- 'notification.type.quote' => $quote_type_id,
- 'notification.type.post' => $post_type_id,
- ),
- $this->notifications->get_notification_type_ids(array(
- 'test',
- 'notification.type.quote',
- 'notification.type.post',
- )
- ));
- self::assertEquals($quote_type_id, $this->notifications->get_notification_type_id('notification.type.quote'));
- try
- {
- self::assertEquals(false, $this->notifications->get_notification_type_id('fail'));
- self::fail('Non-existent type should throw an exception');
- }
- catch (Exception $e) {}
- }
- public function test_get_subscription_types()
- {
- $subscription_types = $this->notifications->get_subscription_types();
- self::assertArrayHasKey('NOTIFICATION_GROUP_MISCELLANEOUS', $subscription_types);
- self::assertArrayHasKey('NOTIFICATION_GROUP_POSTING', $subscription_types);
- self::assertArrayHasKey('notification.type.bookmark', $subscription_types['NOTIFICATION_GROUP_POSTING']);
- self::assertArrayHasKey('notification.type.post', $subscription_types['NOTIFICATION_GROUP_POSTING']);
- self::assertArrayHasKey('notification.type.quote', $subscription_types['NOTIFICATION_GROUP_POSTING']);
- self::assertArrayHasKey('notification.type.topic', $subscription_types['NOTIFICATION_GROUP_POSTING']);
- self::assertArrayHasKey('notification.type.pm', $subscription_types['NOTIFICATION_GROUP_MISCELLANEOUS']);
- //get_subscription_types
- //get_subscription_methods
- }
- public function test_subscriptions()
- {
- $expected_subscriptions = array(
- 'notification.type.forum' => array('notification.method.board'),
- 'notification.type.post' => array('notification.method.board'),
- 'notification.type.topic' => array('notification.method.board'),
- 'notification.type.quote' => array('notification.method.board'),
- 'notification.type.bookmark' => array('notification.method.board'),
- 'test' => array('notification.method.board'),
- 'notification.type.pm' => array('notification.method.board'),
- );
- $subscriptions = $this->notifications->get_global_subscriptions(2);
- foreach ($expected_subscriptions as $item_type => $methods)
- {
- self::assertArrayHasKey($item_type, $subscriptions);
- $this->assert_array_content_equals($methods, $subscriptions[$item_type]);
- }
- foreach ($subscriptions as $item_type => $methods)
- {
- $this->assert_array_content_equals($methods, $expected_subscriptions[$item_type]);
- }
- $this->notifications->delete_subscription('notification.type.post', 0, 'notification.method.board', 2);
- self::assertArrayNotHasKey('notification.type.post', $this->notifications->get_global_subscriptions(2));
- $this->notifications->add_subscription('notification.type.post', 0, 'notification.method.board', 2);
- self::assertArrayHasKey('notification.type.post', $this->notifications->get_global_subscriptions(2));
- }
- public function test_notifications()
- {
- $this->db->sql_query('DELETE FROM phpbb_notification_types');
- $types = array('notification.type.quote', 'notification.type.bookmark', 'notification.type.post', 'test');
- foreach ($types as $id => $type)
- {
- $this->getConnection()->createQueryTable('insertNotification', 'INSERT INTO phpbb_notification_types ' .
- $this->db->sql_build_array('INSERT', array(
- 'notification_type_id' => ($id + 1),
- 'notification_type_name' => $type,
- 'notification_type_enabled' => 1,
- ))
- );
- }
- // Used to test post notifications later
- $this->db->sql_query('INSERT INTO ' . TOPICS_WATCH_TABLE . ' ' . $this->db->sql_build_array('INSERT', array(
- 'topic_id' => 2,
- 'notify_status' => NOTIFY_YES,
- 'user_id' => 0,
- )));
- self::assertEquals(array(
- 'notifications' => array(),
- 'unread_count' => 0,
- 'total_count' => 0,
- ), $this->notifications->load_notifications('notification.method.board', array(
- 'count_unread' => true,
- )));
- $this->notifications->add_notifications('test', array(
- 'post_id' => '1',
- 'topic_id' => '1',
- 'post_time' => 1349413321,
- ));
- $this->notifications->add_notifications('test', array(
- 'post_id' => '2',
- 'topic_id' => '2',
- 'post_time' => 1349413322,
- ));
- $this->notifications->add_notifications('test', array(
- 'post_id' => '3',
- 'topic_id' => '2',
- 'post_time' => 1349413323,
- ));
- $this->notifications->add_notifications(array('notification.type.quote', 'notification.type.bookmark', 'notification.type.post', 'test'), array(
- 'post_id' => '4',
- 'topic_id' => '2',
- 'post_time' => 1349413324,
- 'poster_id' => 2,
- 'topic_title' => 'test-title',
- 'post_subject' => 'Re: test-title',
- 'forum_id' => 2,
- 'forum_name' => 'Your first forum',
- 'post_username' => '',
- 'post_text' => 'test text',
- ));
- $this->db->sql_query('INSERT INTO ' . BOOKMARKS_TABLE . ' ' . $this->db->sql_build_array('INSERT', array(
- 'topic_id' => 2,
- 'user_id' => 0,
- )));
- $this->notifications->add_notifications(array('notification.type.quote', 'notification.type.bookmark', 'notification.type.post', 'test'), array(
- 'post_id' => '5',
- 'topic_id' => '2',
- 'post_time' => 1349413325,
- 'poster_id' => 2,
- 'topic_title' => 'test-title',
- 'post_subject' => 'Re: test-title',
- 'forum_id' => 2,
- 'forum_name' => 'Your first forum',
- 'post_username' => '',
- 'post_text' => 'test text',
- ));
- $this->notifications->delete_subscription('test');
- $this->notifications->add_notifications('test', array(
- 'post_id' => '6',
- 'topic_id' => '2',
- 'post_time' => 1349413326,
- ));
- $this->assert_notifications(
- array(
- array(
- 'item_id' => 1,
- 'item_parent_id' => 1,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413321,
- 'notification_data' => array(),
- ),
- array(
- 'item_id' => 2,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413322,
- 'notification_data' => array(),
- ),
- array(
- 'item_id' => 3,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413323,
- 'notification_data' => array(),
- ),
- array(
- 'item_id' => 4,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413324,
- 'notification_data' => array(
- 'poster_id' => 2,
- 'topic_title' => 'test-title',
- 'post_subject' => 'Re: test-title',
- 'post_username' => '',
- 'forum_id' => 2,
- 'forum_name' => 'Your first forum',
- ),
- ),
- array(
- 'item_id' => 5,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413325,
- 'notification_data' => array(
- 'poster_id' => 2,
- 'topic_title' => 'test-title',
- 'post_subject' => 'Re: test-title',
- 'post_username' => '',
- 'forum_id' => 2,
- 'forum_name' => 'Your first forum',
- ),
- ),
- )
- );
- // Now test updating -------------------------------
- $this->notifications->update_notifications('test', array(
- 'post_id' => '1',
- 'topic_id' => '2', // change parent_id
- 'post_time' => 1349413321,
- ));
- $this->notifications->update_notifications('test', array(
- 'post_id' => '3',
- 'topic_id' => '2',
- 'post_time' => 1234, // change time
- ));
- $this->notifications->update_notifications(array('notification.type.quote', 'notification.type.bookmark', 'notification.type.post', 'test'), array(
- 'post_id' => '5',
- 'topic_id' => '2',
- 'poster_id' => 2,
- 'topic_title' => 'test-title2', // change topic_title
- 'post_subject' => 'Re: test-title2', // change post_subject
- 'forum_id' => 3, // change forum_id
- 'forum_name' => 'Your second forum', // change forum_name
- 'post_username' => '',
- 'post_text' => 'test text2',
- 'post_time' => 1349413325,
- ));
- $this->assert_notifications(
- array(
- array(
- 'item_id' => 3,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1234,
- 'notification_data' => array(),
- ),
- array(
- 'item_id' => 1,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413321,
- 'notification_data' => array(),
- ),
- array(
- 'item_id' => 2,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413322,
- 'notification_data' => array(),
- ),
- array(
- 'item_id' => 4,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413324,
- 'notification_data' => array(
- 'poster_id' => 2,
- 'topic_title' => 'test-title',
- 'post_subject' => 'Re: test-title',
- 'post_username' => '',
- 'forum_id' => 2,
- 'forum_name' => 'Your first forum',
- ),
- ),
- array(
- 'item_id' => 5,
- 'item_parent_id' => 2,
- 'user_id' => 0,
- 'notification_read' => 0,
- 'notification_time' => 1349413325,
- 'notification_data' => array(
- 'poster_id' => 2,
- 'topic_title' => 'test-title2',
- 'post_subject' => 'Re: test-title2',
- 'post_username' => '',
- 'forum_id' => 3,
- 'forum_name' => 'Your second forum',
- ),
- ),
- )
- );
- }
- }