From b9d363f6ccd53244b3dd47dd4f42b650797b5157 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 5 Oct 2012 14:26:09 +0200 Subject: [feature/soft-delete] Add unit tests for set_topic_visibility() PHPBB3-9567 --- .../fixtures/set_topic_visibility.xml | 136 +++++++++++++++++++++ .../set_topic_visibility_test.php | 103 ++++++++++++++++ 2 files changed, 239 insertions(+) create mode 100644 tests/content_visibility/fixtures/set_topic_visibility.xml create mode 100644 tests/content_visibility/set_topic_visibility_test.php (limited to 'tests/content_visibility') diff --git a/tests/content_visibility/fixtures/set_topic_visibility.xml b/tests/content_visibility/fixtures/set_topic_visibility.xml new file mode 100644 index 0000000000..e950977575 --- /dev/null +++ b/tests/content_visibility/fixtures/set_topic_visibility.xml @@ -0,0 +1,136 @@ + + + + topic_id + forum_id + topic_visibility + topic_title + topic_first_post_id + topic_last_post_id + topic_delete_user + topic_delete_time + topic_delete_reason + + + 1 + 1 + 1 + Approved + 1 + 1 + 0 + 0 + + + + + 2 + 1 + 2 + Soft deleted + 4 + 5 + 2 + 123 + + +
+ + post_id + poster_id + topic_id + forum_id + post_visibility + post_text + post_delete_user + post_delete_time + post_delete_reason + + 1 + 1 + 1 + 1 + 1 + Approved + 2 + + + + + 2 + 1 + 1 + 1 + 2 + Soft deleted + 2 + 123 + manually + + + 3 + 1 + 1 + 1 + 0 + Unapproved + 0 + 0 + + + + + 4 + 1 + 2 + 1 + 2 + Soft deleted by topic soft delete + 2 + 123 + + + + 5 + 1 + 2 + 1 + 2 + Soft deleted before the topic was soft deleted + 2 + 120 + manually + + + 6 + 1 + 2 + 1 + 0 + Unapproved before the topic was soft deleted + + + + +
+ + user_id + user_posts + username + username_clean + user_permissions + user_sig + user_occ + user_interests + + 1 + 1 + user 1 + user 1 + + + + + +
+
diff --git a/tests/content_visibility/set_topic_visibility_test.php b/tests/content_visibility/set_topic_visibility_test.php new file mode 100644 index 0000000000..a1aedc6a5b --- /dev/null +++ b/tests/content_visibility/set_topic_visibility_test.php @@ -0,0 +1,103 @@ +createXMLDataSet(dirname(__FILE__) . '/fixtures/set_topic_visibility.xml'); + } + + public function set_topic_visibility_data() + { + return array( + array( + ITEM_DELETED, 1, 1, + 2, time(), 'delete', false, + array( + array('post_id' => 1, 'post_visibility' => 2, 'post_delete_reason' => ''), + array('post_id' => 2, 'post_visibility' => 2, 'post_delete_reason' => 'manually'), + array('post_id' => 3, 'post_visibility' => 0, 'post_delete_reason' => ''), + ), + array( + array('topic_visibility' => 2, 'topic_first_post_id' => 1, 'topic_last_post_id' => 3, 'topic_delete_reason' => 'delete'), + ), + ), + array( + ITEM_DELETED, 1, 1, + 2, time(), 'delete-forced', true, + array( + array('post_id' => 1, 'post_visibility' => 2, 'post_delete_reason' => ''), + array('post_id' => 2, 'post_visibility' => 2, 'post_delete_reason' => ''), + array('post_id' => 3, 'post_visibility' => 2, 'post_delete_reason' => ''), + ), + array( + array('topic_visibility' => 2, 'topic_first_post_id' => 1, 'topic_last_post_id' => 3, 'topic_delete_reason' => 'delete-forced'), + ), + ), + array( + ITEM_APPROVED, 2, 1, + 2, time(), 'approved', false, + array( + array('post_id' => 4, 'post_visibility' => 1, 'post_delete_reason' => ''), + array('post_id' => 5, 'post_visibility' => 2, 'post_delete_reason' => 'manually'), + array('post_id' => 6, 'post_visibility' => 0, 'post_delete_reason' => ''), + ), + array( + array('topic_visibility' => 1, 'topic_first_post_id' => 4, 'topic_last_post_id' => 4, 'topic_delete_reason' => 'approved'), + ), + ), + array( + ITEM_APPROVED, 2, 1, + 2, time(), 'approved-forced', true, + array( + array('post_id' => 4, 'post_visibility' => 1, 'post_delete_reason' => ''), + array('post_id' => 5, 'post_visibility' => 1, 'post_delete_reason' => ''), + array('post_id' => 6, 'post_visibility' => 1, 'post_delete_reason' => ''), + ), + array( + array('topic_visibility' => 1, 'topic_first_post_id' => 4, 'topic_last_post_id' => 6, 'topic_delete_reason' => 'approved-forced'), + ), + ), + ); + } + + /** + * @dataProvider set_topic_visibility_data + */ + public function test_set_topic_visibility($visibility, $topic_id, $forum_id, $user_id, $time, $reason, $force_update_all, $expected_posts, $expected_topic) + { + global $db; + + $db = $this->new_dbal(); + + phpbb_content_visibility::set_topic_visibility($visibility, $topic_id, $forum_id, $user_id, $time, $reason, $force_update_all); + + $result = $db->sql_query('SELECT post_id, post_visibility, post_delete_reason + FROM phpbb_posts + WHERE topic_id = ' . $topic_id . ' + ORDER BY post_id ASC'); + + $this->assertEquals($expected_posts, $db->sql_fetchrowset($result)); + $db->sql_freeresult($result); + + $result = $db->sql_query('SELECT topic_visibility, topic_first_post_id, topic_last_post_id, topic_delete_reason + FROM phpbb_topics + WHERE topic_id = ' . $topic_id); + + $this->assertEquals($expected_topic, $db->sql_fetchrowset($result)); + $db->sql_freeresult($result); + } +} -- cgit v1.2.1