mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 05:18:52 +00:00
[ticket/14168] Add tests for attachment resync class
PHPBB3-14168
This commit is contained in:
parent
cebc064f4c
commit
583f42a2aa
3 changed files with 158 additions and 1 deletions
|
@ -93,6 +93,8 @@ class resync
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$this->set_type_constraints($type);
|
||||||
|
|
||||||
// Just check which elements are still having an assigned attachment
|
// Just check which elements are still having an assigned attachment
|
||||||
// not orphaned by querying the attachments table
|
// not orphaned by querying the attachments table
|
||||||
$sql = 'SELECT ' . $this->attach_sql_id . '
|
$sql = 'SELECT ' . $this->attach_sql_id . '
|
||||||
|
@ -113,7 +115,7 @@ class resync
|
||||||
|
|
||||||
if (sizeof($ids))
|
if (sizeof($ids))
|
||||||
{
|
{
|
||||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
$sql = 'UPDATE ' . $this->resync_table . '
|
||||||
SET ' . $type . '_attachment = 0
|
SET ' . $type . '_attachment = 0
|
||||||
WHERE ' . $this->db->sql_in_set($this->resync_sql_id, $ids);
|
WHERE ' . $this->db->sql_in_set($this->resync_sql_id, $ids);
|
||||||
$this->db->sql_query($sql);
|
$this->db->sql_query($sql);
|
||||||
|
|
81
tests/attachment/fixtures/resync.xml
Normal file
81
tests/attachment/fixtures/resync.xml
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<dataset>
|
||||||
|
<table name="phpbb_attachments">
|
||||||
|
<column>post_msg_id</column>
|
||||||
|
<column>topic_id</column>
|
||||||
|
<column>in_message</column>
|
||||||
|
<column>is_orphan</column>
|
||||||
|
<column>attach_comment</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>foo</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>0</value>
|
||||||
|
<value>foo2</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
<table name="phpbb_posts">
|
||||||
|
<column>post_id</column>
|
||||||
|
<column>post_text</column>
|
||||||
|
<column>poster_id</column>
|
||||||
|
<column>post_attachment</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>foo</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>foo</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
<table name="phpbb_privmsgs">
|
||||||
|
<column>msg_id</column>
|
||||||
|
<column>message_text</column>
|
||||||
|
<column>message_attachment</column>
|
||||||
|
<column>to_address</column>
|
||||||
|
<column>bcc_address</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>foo</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>2</value>
|
||||||
|
<value>2</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>foo</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>2</value>
|
||||||
|
<value>2</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
<table name="phpbb_topics">
|
||||||
|
<column>topic_id</column>
|
||||||
|
<column>forum_id</column>
|
||||||
|
<column>topic_title</column>
|
||||||
|
<column>topic_attachment</column>
|
||||||
|
<row>
|
||||||
|
<value>1</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>foo</value>
|
||||||
|
<value>1</value>
|
||||||
|
</row>
|
||||||
|
<row>
|
||||||
|
<value>2</value>
|
||||||
|
<value>1</value>
|
||||||
|
<value>bar</value>
|
||||||
|
<value>1</value>
|
||||||
|
</row>
|
||||||
|
</table>
|
||||||
|
</dataset>
|
74
tests/attachment/resync_test.php
Normal file
74
tests/attachment/resync_test.php
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
<?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.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
class phpbb_attachment_resync_test extends \phpbb_database_test_case
|
||||||
|
{
|
||||||
|
/** @var \phpbb\db\driver\driver_interface */
|
||||||
|
protected $db;
|
||||||
|
|
||||||
|
/** @var \phpbb\attachment\resync */
|
||||||
|
protected $resync;
|
||||||
|
|
||||||
|
public function getDataSet()
|
||||||
|
{
|
||||||
|
return $this->createXMLDataSet(dirname(__FILE__) . '/fixtures/resync.xml');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setUp()
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->db = $this->new_dbal();
|
||||||
|
$this->resync = new \phpbb\attachment\resync($this->db);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function data_resync()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array('', array(1), 'post_id', POSTS_TABLE, array('post_attachment' => '1'), array('post_attachment' => '1')),
|
||||||
|
array('post', array(1), 'post_id', POSTS_TABLE, array('post_attachment' => '1'), array('post_attachment' => '1')),
|
||||||
|
array('post', array(2), 'post_id', POSTS_TABLE, array('post_attachment' => '1'), array('post_attachment' => '0')),
|
||||||
|
array('topic', array(1), 'topic_id', TOPICS_TABLE, array('topic_attachment' => '1'), array('topic_attachment' => '1')),
|
||||||
|
array('topic', array(2), 'topic_id', TOPICS_TABLE, array('topic_attachment' => '1'), array('topic_attachment' => '0')),
|
||||||
|
array('message', array(1), 'msg_id', PRIVMSGS_TABLE, array('message_attachment' => '1'), array('message_attachment' => '1')),
|
||||||
|
array('message', array(2), 'msg_id', PRIVMSGS_TABLE, array('message_attachment' => '1'), array('message_attachment' => '0')),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider data_resync
|
||||||
|
*/
|
||||||
|
public function test_resync($type, $ids, $sql_id, $exist_table, $exist_data, $resync_data)
|
||||||
|
{
|
||||||
|
$sql_prefix = ($type) ?: 'post';
|
||||||
|
$sql = 'SELECT ' . $sql_prefix . '_attachment
|
||||||
|
FROM ' . $exist_table . '
|
||||||
|
WHERE ' . $sql_id . ' = ' . $ids[0];
|
||||||
|
$result = $this->db->sql_query($sql);
|
||||||
|
$data = $this->db->sql_fetchrow($result);
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$this->assertSame($exist_data, $data);
|
||||||
|
|
||||||
|
$this->resync->resync($type, $ids);
|
||||||
|
|
||||||
|
$sql = 'SELECT ' . $sql_prefix . '_attachment
|
||||||
|
FROM ' . $exist_table . '
|
||||||
|
WHERE ' . $sql_id . ' = ' . $ids[0];
|
||||||
|
$result = $this->db->sql_query($sql);
|
||||||
|
$data = $this->db->sql_fetchrow($result);
|
||||||
|
$this->db->sql_freeresult($result);
|
||||||
|
|
||||||
|
$this->assertSame($resync_data, $data);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue