<?php

namespace SilverStripe\Blog\Tests;

use SilverStripe\Blog\Model\Blog;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\ORM\FieldType\DBDatetime;
use SilverStripe\Security\Member;

/**
 * @mixin PHPUnit_Framework_TestCase
 * @coversDefaultClass \SilverStripe\Blog\Model\BlogPostFilter
 */
class BlogPostFilterTest extends SapphireTest
{
    /**
     * @var string
     */
    protected static $fixture_file = 'blog.yml';

    public function setUp()
    {
        parent::setUp();

        DBDatetime::set_mock_now('2013-10-10 20:00:00');
    }

    public function tearDown()
    {
        DBDatetime::clear_mock_now();

        parent::tearDown();
    }

    /**
     * Tests that unpublished articles are not returned
     * @covers ::augmentSQL
     */
    public function testFilter()
    {
        $member = Member::currentUser();

        if ($member) {
            $member->logout();
        }

        /**
         * @var Blog $blog
         */
        $blog = $this->objFromFixture(Blog::class, 'FirstBlog');

        $this->assertEquals(3, $blog->AllChildren()->Count(), 'Filtered blog posts');

        DBDatetime::set_mock_now('2020-01-01 00:00:00');

        $this->assertEquals(5, $blog->AllChildren()->Count(), 'Unfiltered blog posts');
    }
}