Skip to content

Commit

Permalink
Merge pull request #52 from jsirish/tests/codeCovUpdate
Browse files Browse the repository at this point in the history
TESTS: Increase Codecov score
  • Loading branch information
jsirish committed Apr 12, 2016
2 parents cfdfa60 + 1c11be4 commit b435f20
Show file tree
Hide file tree
Showing 5 changed files with 140 additions and 71 deletions.
4 changes: 4 additions & 0 deletions .scrutinizer.yml
Expand Up @@ -69,3 +69,7 @@ checks:

filter:
paths: [code/*, tests/*]

tools:
external_code_coverage:
timeout: 600
38 changes: 20 additions & 18 deletions code/FlexSlider.php
Expand Up @@ -28,25 +28,27 @@ public function populateDefaults()
public function updateCMSFields(FieldList $fields)
{
// Slides
$config = GridFieldConfig_RecordEditor::create();
if (class_exists('GridFieldSortableRows')) {
$config->addComponent(new GridFieldSortableRows('SortOrder'));
}
$config->removeComponentsByType('GridFieldAddExistingAutocompleter');
$config->removeComponentsByType('GridFieldDeleteAction');
$config->addComponent(new GridFieldDeleteAction(false));
$SlidesField = GridField::create('Slides', 'Slides', $this->owner->Slides()->sort('SortOrder'), $config);
if ($this->owner->ID) {
$config = GridFieldConfig_RecordEditor::create();
if (class_exists('GridFieldSortableRows')) {
$config->addComponent(new GridFieldSortableRows('SortOrder'));
}
$config->removeComponentsByType('GridFieldAddExistingAutocompleter');
$config->removeComponentsByType('GridFieldDeleteAction');
$config->addComponent(new GridFieldDeleteAction(false));
$SlidesField = GridField::create('Slides', 'Slides', $this->owner->Slides()->sort('SortOrder'), $config);

$fields->addFieldsToTab('Root.Slides', array(
HeaderField::create('SliderHD', 'Slides', 3),
$SlidesField,
ToggleCompositeField::create('ConfigHD', 'Slider Settings', array(
CheckboxField::create('Animate', 'Animate automatically'),
DropdownField::create('Animation', 'Animation option', $this->owner->dbObject('Animation')->enumValues()),
CheckboxField::create('Loop', 'Loop the carousel'),
//CheckboxField::create('ThumbnailNav', 'Thumbnail Navigation'),
)),
));
$fields->addFieldsToTab('Root.Slides', array(
HeaderField::create('SliderHD', 'Slides', 3),
$SlidesField,
ToggleCompositeField::create('ConfigHD', 'Slider Settings', array(
CheckboxField::create('Animate', 'Animate automatically'),
DropdownField::create('Animation', 'Animation option', $this->owner->dbObject('Animation')->enumValues()),
CheckboxField::create('Loop', 'Loop the carousel'),
//CheckboxField::create('ThumbnailNav', 'Thumbnail Navigation'),
)),
));
}
}

public function SlideShow()
Expand Down
23 changes: 6 additions & 17 deletions code/SlideImage.php
Expand Up @@ -55,40 +55,29 @@ public function validate()
return $result;
}

public function Thumbnail()
{
return $this->Image()->CroppedImage(80, 80);
}

public function Large()
{
if ($this->Image()->GetHeight() > 700) {
return $this->Image()->SetHeight(700);
} else {
return $this->Image();
}
}

public function providePermissions()
{
return array(
'Slide_EDIT' => 'Edit a Slide',
'Slide_DELETE' => 'Delete a Slide',
'Slide_CREATE' => 'Create a Slide',
'Slide_EDIT' => 'Slide Edit',
'Slide_DELETE' => 'Slide Delete',
'Slide_CREATE' => 'Slide Create',
);
}
public function canCreate($member = null)
{
return Permission::check('Slide_CREATE');
}

public function canEdit($member = null)
{
return Permission::check('Slide_EDIT');
}

public function canDelete($member = null)
{
return Permission::check('Slide_DELETE');
}

public function canView($member = null)
{
return true;
Expand Down
33 changes: 33 additions & 0 deletions tests/FlexSliderDataExtensionTest.php
@@ -0,0 +1,33 @@
<?php

class FlexSliderDataExtensionTest extends FlexSliderTest
{
public function testUpdateCMSFields()
{
$extension = new FlexSlider();
$object = Page::create();
$fields = $object->getCMSFields();
$extension->updateCMSFields($fields);
$this->assertNull($fields->dataFieldByName('Slides'));

$object->write();
$fields = $object->getCMSFields();
$extension->updateCMSFields($fields);
$this->assertNotNull($fields->dataFieldbyName('Slides'));
}

public function testGetSlideshow()
{
$object = singleton('Page');
$object->write();
$slide1 = $this->objFromFixture('SlideImage', 'slide1');
$image = $this->objFromFixture('Image', 'image1');
$slide1->ImageID = $image->ID;
$object->Slides()->add($slide1);
$slides = $object->SlideShow();
$this->assertInstanceOf('DataList', $slides);
}
}


Page::add_extension('FlexSlider');
113 changes: 77 additions & 36 deletions tests/SlideImageTest.php
Expand Up @@ -9,56 +9,97 @@ public function setUp()
parent::setUp();
}

public function testSlideImageCreation()
public function testGetCMSFields()
{
$this->logInWithPermission('Slide_CREATE');
$slide = $this->objFromFixture('SlideImage', 'slide1');

$this->assertTrue($slide->canCreate());

$slideID = $slide->ID;
$object = new SlideImage();
$fieldset = $object->getCMSFields();
$this->assertTrue(is_a($fieldset, 'FieldList'));
$this->assertNotNull($fieldset->dataFieldByName('Name'));
$this->assertNotNull($fieldset->dataFieldByName('Image'));
}

$this->assertTrue($slideID > 0);
public function testValidateName()
{
$object = $this->objFromFixture('SlideImage', 'slide1');
$object->Name = '';
$this->setExpectedException('ValidationException');
$object->write();
}

$getSlide = SlideImage::get()->byID($slideID);
$this->assertTrue($getSlide->ID == $slideID);
public function testValidateImage()
{
$object = $this->objFromFixture('SlideImage', 'slide1');
$object->ImageID = '';
$this->setExpectedException('ValidationException');
$object->write();
}

public function testSlideUpdate()
public function testCanView()
{
$object = $this->objFromFixture('SlideImage', 'slide1');
$image = $this->objFromFixture('Image', 'image1');
$object->ImageID = $image->ID;
$object->write();
$this->logInWithPermission('ADMIN');
$slide = $this->objFromFixture('SlideImage', 'slide1');
$slideID = $slide->ID;
$this->assertTrue($object->canView());
$this->logOut();
$nullMember = Member::create();
$nullMember->write();
$this->assertTrue($object->canView($nullMember));
$nullMember->delete();
}

public function testCanEdit()
{
$object = $this->objFromFixture('SlideImage', 'slide1');
$image = $this->objFromFixture('Image', 'image1');
$imageID = $image->ID;

$object->ImageID = $image->ID;
$object->write();
$objectID = $object->ID;
$this->logInWithPermission('ADMIN');
$originalName = $object->Name;
$this->assertEquals($originalName, 'Hello World');
$this->assertTrue($object->canEdit());
$object->Name = 'Changed Name';
$object->write();
$testEdit = SlideImage::get()->byID($objectID);
$this->assertEquals($testEdit->Name, 'Changed Name');
$this->logOut();

$this->logInWithPermission('Slide_EDIT');

$this->assertTrue($slide->canEdit());
$slide = SlideImage::get()->byID($slideID);
$newTitle = 'Updated Name for Slide';
$slide->Name = $newTitle;
$slide->ImageID = $imageID;
$slide->write();

$slide = SlideImage::get()->byiD($slideID);

$this->assertTrue($slide->Name == $newTitle);
}

public function testSlideImageDeletion()
public function testCanDelete()
{
$this->logInWithPermission('Slide_DELETE');
$slide = $this->objFromFixture('SlideImage', 'slide2');
$slideID = $slide->ID;
$object = $this->objFromFixture('SlideImage', 'slide1');
$image = $this->objFromFixture('Image', 'image1');
$object->ImageID = $image->ID;
$object->write();
$this->logInWithPermission('ADMIN');
$this->assertTrue($object->canDelete());
$checkObject = $object;
$object->delete();
$this->assertEquals($checkObject->ID, 0);
}

$this->assertTrue($slide->canDelete());
$slide->delete();
public function testCanCreate()
{
$object = singleton('SlideImage');
$this->logInWithPermission('ADMIN');
$this->assertTrue($object->canCreate());
$this->logOut();
$nullMember = Member::create();
$nullMember->write();
$this->assertFalse($object->canCreate($nullMember));
$nullMember->delete();
}

$slides = SlideImage::get()->column('ID');
$this->assertFalse(in_array($slideID, $slides));
public function testProvidePermissions()
{
$object = singleton('SlideImage');
$expected = array(
'Slide_EDIT' => 'Slide Edit',
'Slide_DELETE' => 'Slide Delete',
'Slide_CREATE' => 'Slide Create',
);
$this->assertEquals($expected, $object->providePermissions());
}
}

0 comments on commit b435f20

Please sign in to comment.