1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-13 01:54:12 +02:00

Fixes #4465 Some nested comments were not displaying. The number of DB queries when nested comments is active has now been dramatically reduced. Comments unit test added.

This commit is contained in:
Cameron
2021-03-25 13:52:05 -07:00
parent 56d4855192
commit 9053e6170f
3 changed files with 243 additions and 68 deletions

View File

@@ -0,0 +1,119 @@
<?xml version='1.0' encoding='utf-8' ?>
<e107Export version="2.3.1 (git)" timestamp="1616700542" >
<database>
<dbTable name="comments">
<item>
<field name="comment_id">1</field>
<field name="comment_pid">0</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700193</field>
<field name="comment_comment">blue</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
<item>
<field name="comment_id">2</field>
<field name="comment_pid">0</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700266</field>
<field name="comment_comment">red</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
<item>
<field name="comment_id">3</field>
<field name="comment_pid">0</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700270</field>
<field name="comment_comment">green</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
<item>
<field name="comment_id">4</field>
<field name="comment_pid">2</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">Re: New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700295</field>
<field name="comment_comment">sub-red 1</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
<item>
<field name="comment_id">5</field>
<field name="comment_pid">2</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">Re: New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700310</field>
<field name="comment_comment">sub-red 2</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
<item>
<field name="comment_id">6</field>
<field name="comment_pid">4</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">Re: New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700310</field>
<field name="comment_comment">sub-red 1 child-1</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
<item>
<field name="comment_id">7</field>
<field name="comment_pid">4</field>
<field name="comment_item_id">55</field>
<field name="comment_subject">Re: New Title</field>
<field name="comment_author_id">1</field>
<field name="comment_author_name">admin</field>
<field name="comment_author_email">nowhere@mail.com</field>
<field name="comment_datestamp">1616700310</field>
<field name="comment_comment">sub-red 1 child-2</field>
<field name="comment_blocked">0</field>
<field name="comment_ip">0000:0000:0000:0000:0000:ffff:7f00:0001</field>
<field name="comment_type">profile</field>
<field name="comment_lock">0</field>
<field name="comment_share">0</field>
</item>
</dbTable>
</database>
</e107Export>

View File

@@ -9,6 +9,19 @@
protected function _before()
{
if(e107::getDb()->isEmpty('comments'))
{
$path = codecept_data_dir().'comments/commentsSetup.xml';
$result = e107::getXml()->e107Import($path);
if(!empty($result['failed']))
{
$this->fail("Vstore setup failed. ".print_r($result['failed'], true));
}
}
try
{
@@ -101,6 +114,33 @@
$this->assertStringContainsString('e-comment-form',$result);
}
public function testLoadNested()
{
$result = $this->cm->loadNested(55,'profile', 'desc');
$this->assertNotempty($result['profile']);
$this->assertCount(2, $result['profile'][2]);
$this->assertCount(2, $result['profile'][4]);
}
public function testGetNested()
{
$this->cm->loadNested(55, 'profile', 'desc');
$result = $this->cm->getNested(4, 'profile');
$this->assertEquals('sub-red 1 child-1', $result[0]['comment_comment']);
$this->assertEquals('sub-red 1 child-2', $result[1]['comment_comment']);
$result = $this->cm->getNested(2, 'profile');
$this->assertEquals('sub-red 2', $result[0]['comment_comment']);
$this->assertEquals('sub-red 1', $result[1]['comment_comment']);
}
/*
public function testGetComments()
{