Unverified Commit 7097767f authored by Viral Solani's avatar Viral Solani Committed by GitHub

Merge pull request #120 from bvipul/develop

Page and Settings Test Cases
parents 130e2c18 86e27311
...@@ -57,7 +57,7 @@ class BlogCategoriesController extends Controller ...@@ -57,7 +57,7 @@ class BlogCategoriesController extends Controller
$this->blogcategory->create($request->all()); $this->blogcategory->create($request->all());
return redirect() return redirect()
->route('admin.blogcategories.index') ->route('admin.blogCategories.index')
->with('flash_success', trans('alerts.backend.blogcategories.created')); ->with('flash_success', trans('alerts.backend.blogcategories.created'));
} }
...@@ -67,10 +67,10 @@ class BlogCategoriesController extends Controller ...@@ -67,10 +67,10 @@ class BlogCategoriesController extends Controller
* *
* @return mixed * @return mixed
*/ */
public function edit(BlogCategory $blogcategory, EditBlogCategoriesRequest $request) public function edit(BlogCategory $blogCategory, EditBlogCategoriesRequest $request)
{ {
return view('backend.blogcategories.edit') return view('backend.blogcategories.edit')
->with('blogcategory', $blogcategory); ->with('blogcategory', $blogCategory);
} }
/** /**
...@@ -79,12 +79,12 @@ class BlogCategoriesController extends Controller ...@@ -79,12 +79,12 @@ class BlogCategoriesController extends Controller
* *
* @return mixed * @return mixed
*/ */
public function update(BlogCategory $blogcategory, UpdateBlogCategoriesRequest $request) public function update(BlogCategory $blogCategory, UpdateBlogCategoriesRequest $request)
{ {
$this->blogcategory->update($blogcategory, $request->all()); $this->blogcategory->update($blogCategory, $request->all());
return redirect() return redirect()
->route('admin.blogcategories.index') ->route('admin.blogCategories.index')
->with('flash_success', trans('alerts.backend.blogcategories.updated')); ->with('flash_success', trans('alerts.backend.blogcategories.updated'));
} }
...@@ -94,12 +94,12 @@ class BlogCategoriesController extends Controller ...@@ -94,12 +94,12 @@ class BlogCategoriesController extends Controller
* *
* @return mixed * @return mixed
*/ */
public function destroy(BlogCategory $blogcategory, DeleteBlogCategoriesRequest $request) public function destroy(BlogCategory $blogCategory, DeleteBlogCategoriesRequest $request)
{ {
$this->blogcategory->delete($blogcategory); $this->blogcategory->delete($blogCategory);
return redirect() return redirect()
->route('admin.blogcategories.index') ->route('admin.blogCategories.index')
->with('flash_success', trans('alerts.backend.blogcategories.deleted')); ->with('flash_success', trans('alerts.backend.blogcategories.deleted'));
} }
} }
...@@ -32,17 +32,17 @@ class PagesTableController extends Controller ...@@ -32,17 +32,17 @@ class PagesTableController extends Controller
{ {
return Datatables::of($this->pages->getForDataTable()) return Datatables::of($this->pages->getForDataTable())
->escapeColumns(['title']) ->escapeColumns(['title'])
->addColumn('status', function ($pages) { ->addColumn('status', function ($page) {
return $pages->status_label; return $page->status_label;
}) })
->addColumn('created_at', function ($pages) { ->addColumn('created_at', function ($page) {
return Carbon::parse($pages->created_at)->toDateString(); return $page->created_at->toDateString();
}) })
->addColumn('updated_at', function ($pages) { ->addColumn('created_by', function ($page) {
return Carbon::parse($pages->updated_at)->toDateString(); return $page->created_by;
}) })
->addColumn('actions', function ($pages) { ->addColumn('actions', function ($page) {
return $pages->action_buttons; return $page->action_buttons;
}) })
->make(true); ->make(true);
} }
......
...@@ -45,27 +45,9 @@ class SettingsController extends Controller ...@@ -45,27 +45,9 @@ class SettingsController extends Controller
public function update(Setting $setting, UpdateSettingsRequest $request) public function update(Setting $setting, UpdateSettingsRequest $request)
{ {
$this->settings->update($setting, $request->except(['_token', '_method'])); $this->settings->update($setting, $request->except(['_token', '_method']));
return redirect() return redirect()
->route('admin.settings.edit', $setting->id) ->route('admin.settings.edit', $setting->id)
->with('flash_success', trans('alerts.backend.settings.updated')); ->with('flash_success', trans('alerts.backend.settings.updated'));
} }
/**
* @param Setting $setting
* @param Request $request
* Remove logo or favicon icon
*
* @return mixed
*/
public function removeIcon(Request $request)
{
$this->settings->removeicon($request->data);
return json_encode(
[
'status' => true,
]
);
}
} }
<?php
namespace App\Http\Controllers\Backend\Settings;
use App\Http\Controllers\Controller;
use App\Models\Settings\Setting;
use App\Repositories\Backend\Settings\SettingsRepository;
use Illuminate\Http\Request;
/**
* Class SettingsLogoController.
*/
class SettingsLogoController extends Controller
{
protected $settings;
/**
* @param \App\Repositories\Backend\Settings\SettingsRepository $settings
*/
public function __construct(SettingsRepository $settings)
{
$this->settings = $settings;
}
/**
* Remove logo or favicon icon
*
* @param \App\Models\Settings\Setting $setting
* @param \Illuminate\Http\Request $request
*
* @return mixed
*/
public function destroy(Setting $setting, Request $request)
{
$this->settings->removeLogo($setting, $request->data);
return json_encode([
'status' => true
]);
}
}
...@@ -4,13 +4,15 @@ namespace App\Models\Page; ...@@ -4,13 +4,15 @@ namespace App\Models\Page;
use App\Models\BaseModel; use App\Models\BaseModel;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use App\Models\Page\Traits\Attribute\PageAttribute; use App\Models\Page\Traits\PageRelationship;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Page\Traits\Attribute\PageAttribute;
class Page extends BaseModel class Page extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
PageRelationship,
PageAttribute { PageAttribute {
// PageAttribute::getEditButtonAttribute insteadof ModelTrait; // PageAttribute::getEditButtonAttribute insteadof ModelTrait;
} }
...@@ -29,6 +31,17 @@ class Page extends BaseModel ...@@ -29,6 +31,17 @@ class Page extends BaseModel
*/ */
protected $guarded = ['id']; protected $guarded = ['id'];
/**
* The default values for attributes
*
* @var array
*/
protected $attributes = [
'created_by' => 1
];
protected $with = ['owner'];
public function __construct(array $attributes = []) public function __construct(array $attributes = [])
{ {
parent::__construct($attributes); parent::__construct($attributes);
......
...@@ -13,8 +13,8 @@ trait PageAttribute ...@@ -13,8 +13,8 @@ trait PageAttribute
public function getActionButtonsAttribute() public function getActionButtonsAttribute()
{ {
return '<div class="btn-group action-btn"> return '<div class="btn-group action-btn">
'.$this->getEditButtonAttribute('edit-cms-pages', 'admin.pages.edit').' '.$this->getEditButtonAttribute('edit-page', 'admin.pages.edit').'
'.$this->getDeleteButtonAttribute('delete-cms-pages', 'admin.pages.destroy').' '.$this->getDeleteButtonAttribute('delete-page', 'admin.pages.destroy').'
</div>'; </div>';
} }
......
<?php
namespace App\Models\Page\Traits;
use App\Models\Access\User\User;
trait PageRelationship
{
public function owner()
{
return $this->belongsTo(User::class, 'created_by');
}
}
\ No newline at end of file
...@@ -132,7 +132,7 @@ class BlogsRepository extends BaseRepository ...@@ -132,7 +132,7 @@ class BlogsRepository extends BaseRepository
/** /**
* Creating Tags. * Creating Tags.
* *
* @param Array($tags) * @param Array $tags
* *
* @return array * @return array
*/ */
......
...@@ -224,9 +224,15 @@ class EloquentHistoryRepository implements HistoryContract ...@@ -224,9 +224,15 @@ class EloquentHistoryRepository implements HistoryContract
{ {
$assets = json_decode($assets, true); $assets = json_decode($assets, true);
$count = 1; $count = 1;
$asset_count = count($assets) + 1; $asset_count = 1;
$flag = false;
if (count($assets)) { if (is_array($assets) || $assets instanceof \Countable) {
$asset_count = count($assets) + 1;
$flag = true;
}
if ($flag) {
foreach ($assets as $name => $values) { foreach ($assets as $name => $values) {
$key = explode('_', $name)[0]; $key = explode('_', $name)[0];
$type = explode('_', $name)[1]; $type = explode('_', $name)[1];
......
...@@ -25,12 +25,14 @@ class PagesRepository extends BaseRepository ...@@ -25,12 +25,14 @@ class PagesRepository extends BaseRepository
public function getForDataTable() public function getForDataTable()
{ {
return $this->query() return $this->query()
->leftjoin(config('access.users_table'), config('access.users_table').'.id', '=', config('module.pages.table').'.created_by')
->select([ ->select([
config('module.pages.table').'.id', config('module.pages.table').'.id',
config('module.pages.table').'.title', config('module.pages.table').'.title',
config('module.pages.table').'.status', config('module.pages.table').'.status',
config('module.pages.table').'.created_at', config('module.pages.table').'.created_at',
config('module.pages.table').'.updated_at', config('module.pages.table').'.updated_at',
config('access.users_table').'.first_name as created_by'
]); ]);
} }
...@@ -47,7 +49,7 @@ class PagesRepository extends BaseRepository ...@@ -47,7 +49,7 @@ class PagesRepository extends BaseRepository
throw new GeneralException(trans('exceptions.backend.pages.already_exists')); throw new GeneralException(trans('exceptions.backend.pages.already_exists'));
} }
//Making extra fields // Making extra fields
$input['page_slug'] = str_slug($input['title']); $input['page_slug'] = str_slug($input['title']);
$input['status'] = isset($input['status']) ? 1 : 0; $input['status'] = isset($input['status']) ? 1 : 0;
$input['created_by'] = auth()->id(); $input['created_by'] = auth()->id();
...@@ -75,7 +77,7 @@ class PagesRepository extends BaseRepository ...@@ -75,7 +77,7 @@ class PagesRepository extends BaseRepository
throw new GeneralException(trans('exceptions.backend.pages.already_exists')); throw new GeneralException(trans('exceptions.backend.pages.already_exists'));
} }
//Making extra fields // Making extra fields
$input['page_slug'] = str_slug($input['title']); $input['page_slug'] = str_slug($input['title']);
$input['status'] = isset($input['status']) ? 1 : 0; $input['status'] = isset($input['status']) ? 1 : 0;
$input['updated_by'] = access()->user()->id; $input['updated_by'] = access()->user()->id;
......
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
namespace App\Repositories\Backend\Settings; namespace App\Repositories\Backend\Settings;
use App\Exceptions\GeneralException;
use App\Models\Settings\Setting; use App\Models\Settings\Setting;
use App\Exceptions\GeneralException;
use App\Repositories\BaseRepository; use App\Repositories\BaseRepository;
use Illuminate\Support\Facades\Storage;
/** /**
* Class SettingsRepository. * Class SettingsRepository.
...@@ -16,29 +17,61 @@ class SettingsRepository extends BaseRepository ...@@ -16,29 +17,61 @@ class SettingsRepository extends BaseRepository
*/ */
const MODEL = Setting::class; const MODEL = Setting::class;
/**
* Site Logo Path
*
* @var string
*/
protected $site_logo_path;
/**
* Favicon path
*
* @var string
*/
protected $favicon_path;
/**
* Storage Class Object
*
* @var \Illuminate\Support\Facades\Storage
*/
protected $storage;
/**
* Constructor
*/
public function __construct()
{
$this->site_logo_path = 'img'. DIRECTORY_SEPARATOR . 'logo' . DIRECTORY_SEPARATOR;
$this->favicon_path = 'img' . DIRECTORY_SEPARATOR . 'favicon' . DIRECTORY_SEPARATOR;
$this->storage = Storage::disk('public');
}
/** /**
* @param \App\Models\Settings\Setting $setting * @param \App\Models\Settings\Setting $setting
* @param $input * @param Array $input
* *
* @throws \App\Exceptions\GeneralException * @throws \App\Exceptions\GeneralException
* *
* return bool * @return bool
*/ */
public function update(Setting $setting, array $input) public function update(Setting $setting, array $input)
{ {
if (isset($input['logo'])) { if (! empty($input['logo'])) {
$image_upload = $this->uploadlogoimage($setting, $input['logo']); $this->removeLogo($setting, 'logo');
$input['logo'] = $image_upload;
$input['logo'] = $this->uploadLogo($setting, $input['logo'], 'logo');
} }
if (isset($input['favicon'])) { if (! empty($input['favicon'])) {
$image_upload = $this->uploadfaviconimage($setting, $input['favicon']); $this->removeLogo($setting, 'favicon');
$input['favicon'] = $image_upload;
$input['favicon'] = $this->uploadLogo($setting, $input['favicon'], 'favicon');
} }
if ($setting->update($input)) { if ($setting->update($input))
return true; return true;
}
throw new GeneralException(trans('exceptions.backend.settings.update_error')); throw new GeneralException(trans('exceptions.backend.settings.update_error'));
} }
...@@ -46,63 +79,32 @@ class SettingsRepository extends BaseRepository ...@@ -46,63 +79,32 @@ class SettingsRepository extends BaseRepository
/* /*
* Upload logo image * Upload logo image
*/ */
public function uploadlogoimage($setting, $logo) public function uploadLogo($setting, $logo, $type)
{ {
$image_name_ex = $logo->getClientOriginalExtension(); $path = $type == "logo" ? $this->site_logo_path : $this->favicon_path;
if ($setting->logo) { $image_name = time() . $logo->getClientOriginalName();
if (file_exists(public_path().'/img/site_logo/'.$setting->logo)) {
unlink('img/site_logo/'.$setting->logo);
}
}
$image_name = time().$logo->getClientOriginalName(); $this->storage->put($path . $image_name, file_get_contents($logo->getRealPath()));
$destinationPath = public_path('img/site_logo');
$logo->move($destinationPath, $image_name);
return $image_name; return $image_name;
} }
/* /*
* Upload favicon icon image * remove logo or favicon icon
*/ */
public function uploadfaviconimage($setting, $logo) public function removeLogo(Setting $setting, $type)
{ {
$image_name_ex = $logo->getClientOriginalExtension(); $path = $type == "logo" ? $this->site_logo_path : $this->favicon_path;
if ($setting->favicon) { if ($setting->$type && $this->storage->exists($path . $setting->$type)) {
if (file_exists(public_path().'/img/favicon_icon/'.$setting->favicon)) { $this->storage->delete($path . $setting->$type);
unlink('img/favicon_icon/'.$setting->favicon);
}
} }
$image_name = time().$logo->getClientOriginalName(); $result = $setting->update([ $type => null ]);
$destinationPath = public_path('/img/favicon_icon');
$logo->move($destinationPath, $image_name);
return $image_name; if($result) return true;
}
/* throw new GeneralException(trans('exceptions.backend.settings.update_error'));
* remove logo or favicon icon
*/
public function removeicon($input)
{
$setting = $this->query()->get();
if ($input == 'logo') {
if ($setting[0]->logo) {
if (file_exists(public_path().'/img/site_logo/'.$setting[0]->logo)) {
unlink('img/site_logo/'.$setting[0]->logo);
}
$this->query()->update(['logo' => null]);
}
} else {
if ($setting[0]->favicon) {
if (file_exists(public_path().'/img/favicon_icon/'.$setting[0]->favicon)) {
unlink('img/favicon_icon/'.$setting[0]->favicon);
}
}
$this->query()->update(['favicon' => null]);
}
} }
} }
<?php
use Faker\Generator as Faker;
use App\Models\Access\User\User;
use App\Models\BlogCategories\BlogCategory;
$factory->define(BlogCategory::class, function (Faker $faker) {
return [
'name' => $faker->word,
'status' => $faker->numberBetween(0, 1),
'created_by' => function () {
return factory(User::class)->create()->id;
},
];
});
...@@ -16,7 +16,7 @@ class CreateBlogCategoriesTable extends Migration ...@@ -16,7 +16,7 @@ class CreateBlogCategoriesTable extends Migration
$table->increments('id'); $table->increments('id');
$table->string('name', 191); $table->string('name', 191);
$table->boolean('status')->default(1); $table->boolean('status')->default(1);
$table->integer('created_by')->unsigned(); $table->integer('created_by')->unsigned()->nullable();
$table->integer('updated_by')->unsigned()->nullable(); $table->integer('updated_by')->unsigned()->nullable();
$table->timestamps(); $table->timestamps();
$table->softDeletes(); $table->softDeletes();
......
...@@ -18,7 +18,7 @@ class MenuTableSeeder extends Seeder ...@@ -18,7 +18,7 @@ class MenuTableSeeder extends Seeder
'id' => 1, 'id' => 1,
'type' => 'backend', 'type' => 'backend',
'name' => 'Backend Sidebar Menu', 'name' => 'Backend Sidebar Menu',
'items' => '[{"view_permission_id":"view-access-management","icon":"fa-users","open_in_new_tab":0,"url_type":"route","url":"","name":"Access Management","id":11,"content":"Access Management","children":[{"view_permission_id":"view-user-management","open_in_new_tab":0,"url_type":"route","url":"admin.access.user.index","name":"User Management","id":12,"content":"User Management"},{"view_permission_id":"view-role-management","open_in_new_tab":0,"url_type":"route","url":"admin.access.role.index","name":"Role Management","id":13,"content":"Role Management"},{"view_permission_id":"view-permission-management","open_in_new_tab":0,"url_type":"route","url":"admin.access.permission.index","name":"Permission Management","id":14,"content":"Permission Management"}]},{"view_permission_id":"view-module","icon":"fa-wrench","open_in_new_tab":0,"url_type":"route","url":"admin.modules.index","name":"Module","id":1,"content":"Module"},{"view_permission_id":"view-menu","icon":"fa-bars","open_in_new_tab":0,"url_type":"route","url":"admin.menus.index","name":"Menus","id":3,"content":"Menus"},{"view_permission_id":"view-page","icon":"fa-file-text","open_in_new_tab":0,"url_type":"route","url":"admin.pages.index","name":"Pages","id":2,"content":"Pages"},{"view_permission_id":"view-email-template","icon":"fa-envelope","open_in_new_tab":0,"url_type":"route","url":"admin.emailtemplates.index","name":"Email Templates","id":8,"content":"Email Templates"},{"view_permission_id":"edit-settings","icon":"fa-gear","open_in_new_tab":0,"url_type":"route","url":"admin.settings.edit?id=1","name":"Settings","id":9,"content":"Settings"},{"view_permission_id":"view-blog","icon":"fa-commenting","open_in_new_tab":0,"url_type":"route","url":"","name":"Blog Management","id":15,"content":"Blog Management","children":[{"view_permission_id":"view-blog-category","open_in_new_tab":0,"url_type":"route","url":"admin.blogcategories.index","name":"Blog Category Management","id":16,"content":"Blog Category Management"},{"view_permission_id":"view-blog-tag","open_in_new_tab":0,"url_type":"route","url":"admin.blogtags.index","name":"Blog Tag Management","id":17,"content":"Blog Tag Management"},{"view_permission_id":"view-blog","open_in_new_tab":0,"url_type":"route","url":"admin.blogs.index","name":"Blog Management","id":18,"content":"Blog Management"}]},{"view_permission_id":"view-faq","icon":"fa-question-circle","open_in_new_tab":0,"url_type":"route","url":"admin.faqs.index","name":"Faq Management","id":19,"content":"Faq Management"}]', 'items' => '[{"view_permission_id":"view-access-management","icon":"fa-users","open_in_new_tab":0,"url_type":"route","url":"","name":"Access Management","id":11,"content":"Access Management","children":[{"view_permission_id":"view-user-management","open_in_new_tab":0,"url_type":"route","url":"admin.access.user.index","name":"User Management","id":12,"content":"User Management"},{"view_permission_id":"view-role-management","open_in_new_tab":0,"url_type":"route","url":"admin.access.role.index","name":"Role Management","id":13,"content":"Role Management"},{"view_permission_id":"view-permission-management","open_in_new_tab":0,"url_type":"route","url":"admin.access.permission.index","name":"Permission Management","id":14,"content":"Permission Management"}]},{"view_permission_id":"view-module","icon":"fa-wrench","open_in_new_tab":0,"url_type":"route","url":"admin.modules.index","name":"Module","id":1,"content":"Module"},{"view_permission_id":"view-menu","icon":"fa-bars","open_in_new_tab":0,"url_type":"route","url":"admin.menus.index","name":"Menus","id":3,"content":"Menus"},{"view_permission_id":"view-page","icon":"fa-file-text","open_in_new_tab":0,"url_type":"route","url":"admin.pages.index","name":"Pages","id":2,"content":"Pages"},{"view_permission_id":"view-email-template","icon":"fa-envelope","open_in_new_tab":0,"url_type":"route","url":"admin.emailtemplates.index","name":"Email Templates","id":8,"content":"Email Templates"},{"view_permission_id":"edit-settings","icon":"fa-gear","open_in_new_tab":0,"url_type":"route","url":"admin.settings.edit?id=1","name":"Settings","id":9,"content":"Settings"},{"view_permission_id":"view-blog","icon":"fa-commenting","open_in_new_tab":0,"url_type":"route","url":"","name":"Blog Management","id":15,"content":"Blog Management","children":[{"view_permission_id":"view-blog-category","open_in_new_tab":0,"url_type":"route","url":"admin.blogCategories.index","name":"Blog Category Management","id":16,"content":"Blog Category Management"},{"view_permission_id":"view-blog-tag","open_in_new_tab":0,"url_type":"route","url":"admin.blogtags.index","name":"Blog Tag Management","id":17,"content":"Blog Tag Management"},{"view_permission_id":"view-blog","open_in_new_tab":0,"url_type":"route","url":"admin.blogs.index","name":"Blog Management","id":18,"content":"Blog Management"}]},{"view_permission_id":"view-faq","icon":"fa-question-circle","open_in_new_tab":0,"url_type":"route","url":"admin.faqs.index","name":"Faq Management","id":19,"content":"Faq Management"}]',
'created_by' => 1, 'created_by' => 1,
'created_at' => Carbon::now(), 'created_at' => Carbon::now(),
]; ];
......
{
"/js/frontend.js": "/js/frontend.945469bbbc12df3ad9e1.js",
"/js/backend.js": "/js/backend.79d9e4698dadbc0d93c7.js",
"/mix.js": "/mix.247ab120fe7680658924.js",
"/css/frontend.css": "/css/frontend.3af0a6cbd7d1d8d042f2a37e97008b7c.css",
"/css/backend.css": "/css/backend.f8550f50504e5b8ef6055285205f223a.css",
"/css/backend-custom.css": "/css/backend-custom.18e74fbe4c755b817a022d6d3d4e76b1.css",
"/js/backend-custom.js": "/js/backend-custom.e6ea05e1824d0dd8e7c62027c135b7f2.js",
"/js/dataTable.js": "/js/dataTable.f968d300a6a0b871f138f114361259c8.js"
}
\ No newline at end of file
...@@ -126,6 +126,7 @@ return [ ...@@ -126,6 +126,7 @@ return [
'status' => 'Status', 'status' => 'Status',
'createdat' => 'Created At', 'createdat' => 'Created At',
'updatedat' => 'Updated At', 'updatedat' => 'Updated At',
'createdby' => 'Created By',
'all' => 'All', 'all' => 'All',
], ],
], ],
...@@ -200,7 +201,7 @@ return [ ...@@ -200,7 +201,7 @@ return [
'companydetails' => 'Company Contact Details', 'companydetails' => 'Company Contact Details',
'mail' => 'Mail Settings', 'mail' => 'Mail Settings',
'footer' => 'Footer Settings', 'footer' => 'Footer Settings',
'terms' => 'Terms & Condition Settings', 'terms' => 'Terms and Condition Settings',
'google' => 'Google Analytics Track Code', 'google' => 'Google Analytics Track Code',
], ],
......
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
processing: true, processing: true,
serverSide: true, serverSide: true,
ajax: { ajax: {
url: '{{ route("admin.blogcategories.get") }}', url: '{{ route("admin.blogCategories.get") }}',
type: 'post' type: 'post'
}, },
columns: [ columns: [
......
<!--Action Button--> <!--Action Button-->
@if(Active::checkUriPattern('admin/blogcategories')) @if(Active::checkUriPattern('admin/blogCategories'))
<div class="btn-group"> <div class="btn-group">
<button type="button" class="btn btn-warning btn-flat dropdown-toggle" data-toggle="dropdown">Export <button type="button" class="btn btn-warning btn-flat dropdown-toggle" data-toggle="dropdown">Export
<span class="caret"></span> <span class="caret"></span>
...@@ -21,9 +21,9 @@ ...@@ -21,9 +21,9 @@
<span class="sr-only">Toggle Dropdown</span> <span class="sr-only">Toggle Dropdown</span>
</button> </button>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
<li><a href="{{route('admin.blogcategories.index')}}"><i class="fa fa-list-ul"></i> {{trans('menus.backend.blogcategories.all')}}</a></li> <li><a href="{{route('admin.blogCategories.index')}}"><i class="fa fa-list-ul"></i> {{trans('menus.backend.blogcategories.all')}}</a></li>
@permission('create-blog-category') @permission('create-blog-category')
<li><a href="{{route('admin.blogcategories.create')}}"><i class="fa fa-plus"></i> {{trans('menus.backend.blogcategories.create')}}</a></li> <li><a href="{{route('admin.blogCategories.create')}}"><i class="fa fa-plus"></i> {{trans('menus.backend.blogcategories.create')}}</a></li>
@endauth @endauth
</ul> </ul>
</div> </div>
\ No newline at end of file
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<th>{{ trans('labels.backend.pages.table.title') }}</th> <th>{{ trans('labels.backend.pages.table.title') }}</th>
<th>{{ trans('labels.backend.pages.table.status') }}</th> <th>{{ trans('labels.backend.pages.table.status') }}</th>
<th>{{ trans('labels.backend.pages.table.createdat') }}</th> <th>{{ trans('labels.backend.pages.table.createdat') }}</th>
<th>{{ trans('labels.backend.pages.table.updatedat') }}</th> <th>{{ trans('labels.backend.pages.table.createdby') }}</th>
<th>{{ trans('labels.general.actions') }}</th> <th>{{ trans('labels.general.actions') }}</th>
</tr> </tr>
</thead> </thead>
...@@ -77,10 +77,10 @@ ...@@ -77,10 +77,10 @@
{data: 'title', name: '{{config('module.pages.table')}}.title'}, {data: 'title', name: '{{config('module.pages.table')}}.title'},
{data: 'status', name: '{{config('module.pages.table')}}.status'}, {data: 'status', name: '{{config('module.pages.table')}}.status'},
{data: 'created_at', name: '{{config('module.pages.table')}}.created_at'}, {data: 'created_at', name: '{{config('module.pages.table')}}.created_at'},
{data: 'updated_at', name: '{{config('module.pages.table')}}.updated_at'}, {data: 'created_by', name: '{{config('access.users_table')}}.first_name'},
{data: 'actions', name: 'actions', searchable: false, sortable: false} {data: 'actions', name: 'actions', searchable: false, sortable: false}
], ],
order: [[3, "asc"]], order: [[1, "asc"]],
searchDelay: 500, searchDelay: 500,
dom: 'lBfrtip', dom: 'lBfrtip',
buttons: { buttons: {
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
* Blogs Categories Management * Blogs Categories Management
*/ */
Route::group(['namespace' => 'BlogCategories'], function () { Route::group(['namespace' => 'BlogCategories'], function () {
Route::resource('blogcategories', 'BlogCategoriesController', ['except' => ['show']]); Route::resource('blogCategories', 'BlogCategoriesController', ['except' => ['show']]);
//For DataTables //For DataTables
Route::post('blogcategories/get', 'BlogCategoriesTableController') Route::post('blogCategories/get', 'BlogCategoriesTableController')
->name('blogcategories.get'); ->name('blogCategories.get');
}); });
...@@ -6,5 +6,5 @@ ...@@ -6,5 +6,5 @@
Route::group(['namespace' => 'Settings'], function () { Route::group(['namespace' => 'Settings'], function () {
Route::resource('settings', 'SettingsController', ['except' => ['show', 'create', 'save', 'index', 'destroy']]); Route::resource('settings', 'SettingsController', ['except' => ['show', 'create', 'save', 'index', 'destroy']]);
Route::post('removeicon', 'SettingsController@removeIcon')->name('removeicon'); Route::post('removeicon/{setting}', 'SettingsLogoController@destroy')->name('removeIcon');
}); });
<?php
namespace Tests\Feature\Backend;
use Tests\TestCase;
use App\Models\Settings\Setting;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\Storage;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ManageSettingsTest extends TestCase
{
protected $setting;
public function setUp()
{
parent::setUp();
$this->setting = Setting::find(1);
$this->actingAs($this->admin);
}
/** @test */
public function setting_page_shows_different_tabs()
{
$this->get(route('admin.settings.edit', $this->setting))
->assertSee(__('labels.backend.settings.seo'))
->assertSee(__('labels.backend.settings.companydetails'))
->assertSee(__('labels.backend.settings.mail'))
->assertSee(__('labels.backend.settings.footer'))
->assertSee(__('labels.backend.settings.terms'))
->assertSee(__('labels.backend.settings.google'));
}
/** @test */
public function it_can_update_a_valid_site_logo()
{
$this->patch(route('admin.settings.update', $this->setting), [
'logo' => UploadedFile::fake()->image('logo.jpg', 226, 48)
]);
Storage::disk('public')->assertExists('img/logo/' . $this->setting->logo);
}
/** @test */
public function it_throws_error_for_valid_site_logo()
{
$this->withExceptionHandling();
$this->patch(route('admin.settings.update', $this->setting), [
'logo' => UploadedFile::fake()->image('logo.jpg', 200, 500)
])
->assertSessionHasErrors('logo');
}
/** @test */
public function it_can_update_site_favicon()
{
$this->patch(route('admin.settings.update', $this->setting), [
'favicon' => UploadedFile::fake()->image('favicon.jpg', 16, 16)
]);
Storage::disk('public')->assertExists('img/favicon/' . $this->setting->favicon);
}
/** @test */
public function it_throws_error_for_valid_site_favicon()
{
$this->withExceptionHandling();
$this->patch(route('admin.settings.update', $this->setting), [
'favicon' => UploadedFile::fake()->image('favicon.jpg', 200, 500)
])
->assertSessionHasErrors('favicon');
}
}
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\BlogCategories\BlogCategory;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class ManageBlogCategoriesTest extends TestCase
{
/** @test */
public function a_user_can_view_blog_categories_index_page()
{
$this->actingAs($this->admin)
->get(route('admin.blogCategories.index'))
->assertViewIs('backend.blogcategories.index')
->assertSee(trans('labels.backend.blogcategories.management'))
->assertSee(trans('labels.backend.blogcategories.table.title'))
->assertSee(trans('labels.backend.blogcategories.table.status'))
->assertSee('Export')
->assertSee('Action');
}
/** @test */
public function a_user_can_create_a_blog_category()
{
$this->actingAs($this->admin);
$category = make(BlogCategory::class);
$this->post(route('admin.blogCategories.store'), $category->toArray());
$this->assertDatabaseHas(config('module.blog_categories.table'), ['name' => $category->name]);
}
/** @test */
public function a_blog_category_requires_a_name_while_creating()
{
$this->actingAs($this->admin)->withExceptionHandling();
$category = make(BlogCategory::class, ['name' => '']);
$this->post(route('admin.blogCategories.store'), $category->toArray())
->assertSessionHasErrors('name');
}
// public function a_blog_category_requires_a_name_while_updating()
// {
// $this->actingAs($this->admin)->withExceptionHandling();
// $category = create(BlogCategory::class);
// $this->post(route('admin.blogCategories.store'), $category->toArray())
// ->assertSessionHasErrors('name');
// }
/** @test */
public function a_user_can_update_a_blog_category()
{
$this->actingAs($this->admin);
$category = create(BlogCategory::class);
$this->patch(route('admin.blogCategories.update', $category), ['name' => 'New Category']);
$this->assertDatabaseHas(config('module.blog_categories.table'), ['name' => 'New Category', 'id' => $category->id]);
}
/** @test */
public function a_user_can_delete_a_blog_category()
{
$this->actingAs($this->admin);
$category = create(BlogCategory::class);
$this->delete(route('admin.blogCategories.destroy', $category));
$this->assertDatabaseMissing(config('module.blog_categories.table'), ['name' => $category->name, 'id' => $category->id, 'deleted_at' => null]);
}
}
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class BlogCategoryTest extends TestCase
{
/**
* A basic test example.
*
* @return void
*/
public function testExample()
{
$this->assertTrue(true);
}
}
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Models\Page\Page;
use App\Models\Access\User\User;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Foundation\Testing\RefreshDatabase;
class PageTest extends TestCase
{
/** @test */
public function it_has_an_owner()
{
$this->actingAs($this->admin);
$page = create(Page::class);
$this->assertInstanceOf(User::class, $page->owner);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment