Skip to content

Commit

Permalink
Merge e448c28 into 458bc8b
Browse files Browse the repository at this point in the history
  • Loading branch information
muskie9 committed May 30, 2018
2 parents 458bc8b + e448c28 commit 44e5da9
Show file tree
Hide file tree
Showing 5 changed files with 227 additions and 3 deletions.
51 changes: 49 additions & 2 deletions src/Model/Testimonial.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
namespace Dynamic\Elements\Model;

use SilverStripe\ORM\DataObject;
use SilverStripe\Security\Permission;
use SilverStripe\Security\PermissionProvider;

/**
* Class Testimonial
Expand All @@ -14,7 +16,7 @@
* @property string $Position
* @property string $Affiliation
*/
class Testimonial extends DataObject
class Testimonial extends DataObject implements PermissionProvider
{
/**
* @var string
Expand Down Expand Up @@ -65,6 +67,51 @@ class Testimonial extends DataObject
private static $summary_fields = [
'Title',
'Content.Summary',
'Name'
'Name',
];

/**
* @return array
*/
public function providePermissions()
{
return ['Testimonial_MANAGE' => 'Manage Testimonials'];
}

/**
* @param null $member
* @param array $context
* @return bool|int
*/
public function canCreate($member = null, $context = [])
{
return Permission::check('Testimonial_MANAGE', 'any', $member);
}

/**
* @param null $member
* @return bool|int
*/
public function canEdit($member = null)
{
return Permission::check('Testimonial_MANAGE', 'any', $member);
}

/**
* @param null $member
* @return bool|int
*/
public function canDelete($member = null)
{
return Permission::check('Testimonial_MANAGE', 'any', $member);
}

/**
* @param null $member
* @return bool
*/
public function canView($member = null)
{
return true;
}
}
37 changes: 37 additions & 0 deletions src/Model/TestimonialCategory.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,41 @@ class TestimonialCategory extends DataObject
'Testimonials' => Testimonial::class,
'TestimonialElements' => ElementTestimonials::class,
];

/**
* @param null $member
* @param array $context
* @return bool
*/
public function canCreate($member = null, $context = [])
{
return Testimonial::singleton()->canCreate($member, $context);
}

/**
* @param null $member
* @return bool
*/
public function canEdit($member = null)
{
return Testimonial::singleton()->canEdit($member);
}

/**
* @param null $member
* @return bool
*/
public function canDelete($member = null)
{
return Testimonial::singleton()->canDelete($member);
}

/**
* @param null $member
* @return bool
*/
public function canView($member = null)
{
return true;
}
}
55 changes: 55 additions & 0 deletions tests/Model/TestimonialCategoryTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

namespace Dynamic\Elements\Tests\Model;

use Dynamic\Elements\Model\TestimonialCategory;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Security\Member;

/**
* Class TestimonialCategoryTest
* @package Dynamic\Elements\Tests\Model
*/
class TestimonialCategoryTest extends SapphireTest
{
/**
* @var string
*/
protected static $fixture_file = '../fixtures.yml';

/**
*
*/
public function testCanCreate()
{
$this->assertTrue(TestimonialCategory::singleton()->canCreate($this->objFromFixture(Member::class, 'site-owner')));
$this->assertFalse(TestimonialCategory::singleton()->canCreate(Member::singleton()));
}

/**
*
*/
public function testCanEdit()
{
$this->assertTrue($this->objFromFixture(TestimonialCategory::class, 'one')->canEdit($this->objFromFixture(Member::class, 'site-owner')));
$this->assertFalse($this->objFromFixture(TestimonialCategory::class, 'one')->canEdit(Member::singleton()));
}

/**
*
*/
public function testCanDelete()
{
$this->assertTrue($this->objFromFixture(TestimonialCategory::class, 'one')->canDelete($this->objFromFixture(Member::class, 'site-owner')));
$this->assertFalse($this->objFromFixture(TestimonialCategory::class, 'one')->canDelete(Member::singleton()));
}

/**
*
*/
public function testCanView()
{
$this->assertTrue($this->objFromFixture(TestimonialCategory::class, 'one')->canView($this->objFromFixture(Member::class, 'site-owner')));
$this->assertTrue($this->objFromFixture(TestimonialCategory::class, 'one')->canView(Member::singleton()));
}
}
55 changes: 55 additions & 0 deletions tests/Model/TestimonialTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

namespace Dynamic\Elements\Tests\Model;

use Dynamic\Elements\Model\Testimonial;
use SilverStripe\Dev\SapphireTest;
use SilverStripe\Security\Member;

/**
* Class TestimonialTest
* @package Dynamic\Elements\Tests\Model
*/
class TestimonialTest extends SapphireTest
{
/**
* @var string
*/
protected static $fixture_file = '../fixtures.yml';

/**
*
*/
public function testCanCreate()
{
$this->assertTrue(Testimonial::singleton()->canCreate($this->objFromFixture(Member::class, 'site-owner')));
$this->assertFalse(Testimonial::singleton()->canCreate(Member::singleton()));
}

/**
*
*/
public function testCanEdit()
{
$this->assertTrue($this->objFromFixture(Testimonial::class, 'one')->canEdit($this->objFromFixture(Member::class, 'site-owner')));
$this->assertFalse($this->objFromFixture(Testimonial::class, 'one')->canEdit(Member::singleton()));
}

/**
*
*/
public function testCanDelete()
{
$this->assertTrue($this->objFromFixture(Testimonial::class, 'one')->canDelete($this->objFromFixture(Member::class, 'site-owner')));
$this->assertFalse($this->objFromFixture(Testimonial::class, 'one')->canDelete(Member::singleton()));
}

/**
*
*/
public function testCanView()
{
$this->assertTrue($this->objFromFixture(Testimonial::class, 'one')->canView($this->objFromFixture(Member::class, 'site-owner')));
$this->assertTrue($this->objFromFixture(Testimonial::class, 'one')->canView(Member::singleton()));
}
}
32 changes: 31 additions & 1 deletion tests/fixtures.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,33 @@
SilverStripe\Security\Group:
administrators:
Title: Administrators
site-owners:
Title: "Site Owners"
SilverStripe\Security\Permission:
administrators:
Code: ADMIN
Type: 1
Group: =>SilverStripe\Security\Group.administrators
testimonials:
Code: Testimonial_MANAGE
Type: 1
Group: =>SilverStripe\Security\Group.site-owners
SilverStripe\Security\Member:
admin:
FirstName: Default
Surname: Admin
Email: admin@dynamicagency.com
Groups: =>SilverStripe\Security\Group.administrators
site-owner:
FirstName: "Site"
Surname: "Owner"
Email: "owner"
Password: "owner"
Groups: =>SilverStripe\Security\Group.site-owners
default:
FirstName: Default
Surname: User
Email: user@dynamicagency.com
Dynamic\Elements\Model\TestimonialCategory:
one:
Title: "Category Foo"
Expand Down Expand Up @@ -56,4 +86,4 @@ Dynamic\Elements\Model\Testimonial:
Name: "Anonymous"
Position: "Wouldn't you like to know"
Affiliation: "That's hidden"
TestimonialCategories: =>Dynamic\Elements\Model\TestimonialCategory.three
TestimonialCategories: =>Dynamic\Elements\Model\TestimonialCategory.three

0 comments on commit 44e5da9

Please sign in to comment.