PHP Classes

File: tests/FilesystemAdapterTest.php

Recommend this page to a friend!
  Classes of Johnny Mast   Redbox PHP Scandir Filter   tests/FilesystemAdapterTest.php   Download  
File: tests/FilesystemAdapterTest.php
Role: Unit test script
Content type: text/plain
Description: Unit test script
Class: Redbox PHP Scandir Filter
Scan files for new or modified files
Author: By
Last change: Last minute changes
Date: 8 years ago
Size: 4,442 bytes
 

Contents

Class file image Download
<?php
namespace Redbox\Scan\Tests;
use
Symfony\Component\Yaml\Yaml as Yaml;
use
Redbox\Scan\Exception;
use
Redbox\Scan;

/**
 * This class will run tests against the default Filesystem adapter.
 *
 * @coversDefaultClass Scan\Adapter\Filesystem
 * @package Redbox\Scan\Tests
 */
class FilesystemAdapterTest extends \PHPUnit_Framework_TestCase
{

   
/**
     * This test will make sure that an PHPUnit_Framework_Error is thrown if there was no Adapter
     * set via either the constructor or via the scan method.
     */
   
public function test_filesystem_write_should_throw_exception_on_invalid_report_argument()
    {
        if (
phpversion() < 7.0) {
           
$this->setExpectedException('PHPUnit_Framework_Error');

        } elseif (
phpversion() >= 7.0) {
           
$this->setExpectedException('TypeError');
        }
       
$filesystem = new Scan\Adapter\Filesystem('somefile.yml');
       
$filesystem->write(new Assets\Report\InvalidReport());
    }

   
/**
     * This test will make sure if no argument is passed (it defaults to null) it
     * will return false.
     */
   
public function test_filesystem_write_fails_with_empty_argument()
    {
       
$filesystem = new Scan\Adapter\Filesystem('somefile.yml');
       
$this->assertFalse($filesystem->write());
    }

   
/**
     * Test that Filesystem::read() returns false if a non existing source file
     * is passed to the adapter.
     */
   
public function test_filesystem_read_fails_on_unknown_file()
    {
       
$filesystem = new Scan\Adapter\Filesystem('I do not exist');
       
$this->assertFalse($filesystem->read());
    }

   
/**
     * Test that Yaml throws an ParseException if the yml file was corrupted.
     *
     * @expectedException \Symfony\Component\Yaml\Exception\ParseException
     */
   
public function test_filesystem_read_files_that_could_not_be_parsed_throws_a_parse_exception()
    {
       
$filesystem = new Scan\Adapter\Filesystem(dirname(__FILE__).'/Assets/Data/Corrupt.yml');
       
$filesystem->read();
    }

   
/**
     * Test that Filesystem::read returns the correct information.
     */
   
public function test_filesystem_read_returns_correct_data()
    {
       
$data_file = dirname(__FILE__).'/Assets/Filesystem/data.yml';
       
$local_data = Yaml::parse(@file_get_contents($data_file));

       
/**
         * Create new filesystem adapter and read the same file.
         * Then we compare the report to the $local_data array.
         */
       
$filesystem = new Scan\Adapter\Filesystem($data_file);
       
$report = $filesystem->read();

       
/**
         * Compare the results
         */
       
$this->assertEquals($local_data['name'], $report->getName());
       
$this->assertEquals($local_data['path'], $report->getPath());
       
$this->assertEquals($local_data['date'], $report->getDate());
       
$this->assertEquals(array(), $report->getModifiedFiles());
       
$this->assertEquals(array(), $report->getNewfiles());
    }

   
/**
     * Compare a write and read operation on the filesystem adapter.
     * Lets hope this passes.
     */
   
public function test_filesystem_write_and_read_get_the_same_data()
    {
       
$src_file = dirname(__FILE__).'/Assets/Filesystem/data.yml';
       
$target_file = dirname(__FILE__).'/Assets/tmp/filesystem.yml';
       
$local_data = Yaml::parse(@file_get_contents($src_file));

       
/**
         * Read the source file and create a report from it.
         * We will write te file to a temp location and then read it
         * and compare the results.
         */
       
$fs1 = new Scan\Adapter\Filesystem($target_file);
       
$report1 = Scan\Report\Report::fromArray($local_data);
       
$fs1->write($report1);

       
/**
         * Read the test file and compare the results.
         */
       
$fs2 = new Scan\Adapter\Filesystem($target_file);
       
$report2 = $fs2->read();

       
/**
         * Here go comparing the 2 results.
         */
       
$this->assertEquals($report2->getName(), $report1->getName());
       
$this->assertEquals($report2->getPath(), $report1->getPath());
       
$this->assertEquals($report2->getDate(), $report1->getDate());
       
$this->assertEquals(array(), $report1->getModifiedFiles());
       
$this->assertEquals(array(), $report1->getNewfiles());

        unset(
$fs1);
        unset(
$fs2);
        unset(
$report1);
        unset(
$report2);
       
unlink($target_file);
    }
}