mirror of
https://github.com/phpbb/phpbb.git
synced 2025-04-20 15:53:14 +02:00
[ticket/14168] Add tests for attachment resync class
PHPBB3-14168
This commit is contained in:
parent
cebc064f4c
commit
583f42a2aa
@ -93,6 +93,8 @@ class resync
|
||||
return;
|
||||
}
|
||||
|
||||
$this->set_type_constraints($type);
|
||||
|
||||
// Just check which elements are still having an assigned attachment
|
||||
// not orphaned by querying the attachments table
|
||||
$sql = 'SELECT ' . $this->attach_sql_id . '
|
||||
@ -113,7 +115,7 @@ class resync
|
||||
|
||||
if (sizeof($ids))
|
||||
{
|
||||
$sql = 'UPDATE ' . POSTS_TABLE . '
|
||||
$sql = 'UPDATE ' . $this->resync_table . '
|
||||
SET ' . $type . '_attachment = 0
|
||||
WHERE ' . $this->db->sql_in_set($this->resync_sql_id, $ids);
|
||||
$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…
x
Reference in New Issue
Block a user