<?php

require_once 'Swift/Mime/EmbeddedFile.php';
require_once 'Swift/Mime/AttachmentTest.php';
require_once 'Swift/Mime/Grammar.php';

class Swift_Mime_EmbeddedFileTest extends Swift_Mime_AttachmentTest
{
    public function testNestingLevelIsAttachment()
    { //Overridden
    }

    public function testNestingLevelIsEmbedded()
    {
        $file = $this->_createEmbeddedFile($this->_createHeaderSet(),
            $this->_createEncoder(), $this->_createCache()
            );
        $this->assertEqual(
            Swift_Mime_MimeEntity::LEVEL_RELATED, $file->getNestingLevel()
            );
    }

    public function testIdIsAutoGenerated()
    {
        $headers = $this->_createHeaderSet(array(), false);
        $this->_checking(Expectations::create()
            -> one($headers)->addIdHeader('Content-ID', pattern('/^.*?@.*?$/D'))
            -> ignoring($headers)
            );
        $file = $this->_createEmbeddedFile($headers, $this->_createEncoder(),
            $this->_createCache()
            );
    }

    public function testDefaultDispositionIsAttachment()
    { //Overridden
    }

    public function testDefaultDispositionIsInline()
    {
        $headers = $this->_createHeaderSet(array(), false);
        $this->_checking(Expectations::create()
            -> one($headers)->addParameterizedHeader('Content-Disposition', 'inline')
            -> ignoring($headers)
            );
        $file = $this->_createEmbeddedFile($headers, $this->_createEncoder(),
            $this->_createCache()
            );
    }

    // -- Private helpers

    protected function _createAttachment($headers, $encoder, $cache,
        $mimeTypes = array())
    {
        return $this->_createEmbeddedFile($headers, $encoder, $cache, $mimeTypes);
    }

    private function _createEmbeddedFile($headers, $encoder, $cache)
    {
        return new Swift_Mime_EmbeddedFile($headers, $encoder, $cache, new Swift_Mime_Grammar());
    }
}
