Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
project
drupal
Commits
3d2aad9e
Commit
3d2aad9e
authored
Sep 12, 2012
by
webchick
Browse files
Issue
#1757232
by peximo, plach: Improve test coverage for the entity form controller.
parent
12100bab
Changes
3
Hide whitespace changes
Inline
Side-by-side
core/modules/system/lib/Drupal/system/Tests/Entity/EntityFormTest.php
0 → 100644
View file @
3d2aad9e
<?php
/**
* @file
* Definition of Drupal\system\Tests\Entity\EntityFormTest.
*/
namespace
Drupal\system\Tests\Entity
;
use
Drupal\simpletest\WebTestBase
;
/**
* Tests the Entity Form Controller.
*/
class
EntityFormTest
extends
WebTestBase
{
/**
* Modules to enable.
*
* @var array
*/
public
static
$modules
=
array
(
'entity_test'
,
'language'
);
public
static
function
getInfo
()
{
return
array
(
'name'
=>
'Entity form'
,
'description'
=>
'Tests the entity form controller.'
,
'group'
=>
'Entity API'
,
);
}
function
setUp
()
{
parent
::
setUp
();
$web_user
=
$this
->
drupalCreateUser
(
array
(
'administer entity_test content'
));
$this
->
drupalLogin
(
$web_user
);
}
/**
* Tests basic form CRUD functionality.
*/
function
testFormCRUD
()
{
$langcode
=
LANGUAGE_NOT_SPECIFIED
;
$name1
=
$this
->
randomName
(
8
);
$name2
=
$this
->
randomName
(
8
);
$edit
=
array
(
'name'
=>
$name1
,
'uid'
=>
mt_rand
(
0
,
128
),
"field_test_text[
$langcode
][0][value]"
=>
$this
->
randomName
(
16
),
);
$this
->
drupalPost
(
'entity-test/add'
,
$edit
,
t
(
'Save'
));
$entity
=
$this
->
loadEntityByName
(
$name1
);
$this
->
assertTrue
(
$entity
,
t
(
'Entity found in the database.'
));
$edit
[
'name'
]
=
$name2
;
$this
->
drupalPost
(
'entity-test/manage/'
.
$entity
->
id
()
.
'/edit'
,
$edit
,
t
(
'Save'
));
$entity
=
$this
->
loadEntityByName
(
$name1
);
$this
->
assertFalse
(
$entity
,
'The entity has been modified.'
);
$entity
=
$this
->
loadEntityByName
(
$name2
);
$this
->
assertTrue
(
$entity
,
'Modified entity found in the database.'
);
$this
->
assertNotEqual
(
$entity
->
get
(
'name'
),
$name1
,
'The entity name has been modified.'
);
$this
->
drupalPost
(
'entity-test/manage/'
.
$entity
->
id
()
.
'/edit'
,
array
(),
t
(
'Delete'
));
$entity
=
$this
->
loadEntityByName
(
$name2
);
$this
->
assertFalse
(
$entity
,
t
(
'Entity not found in the database.'
));
}
/**
* Loads a test entity by name always resetting the storage controller cache.
*/
protected
function
loadEntityByName
(
$name
)
{
$entity_type
=
'entity_test'
;
// Always load the entity from the database to ensure that changes are
// correctly picked up.
entity_get_controller
(
$entity_type
)
->
resetCache
();
return
current
(
entity_load_multiple_by_properties
(
$entity_type
,
array
(
'name'
=>
$name
)));
}
}
core/modules/system/tests/modules/entity_test/entity_test.module
View file @
3d2aad9e
...
...
@@ -13,6 +13,9 @@ function entity_test_entity_info() {
'label'
=>
t
(
'Test entity'
),
'entity class'
=>
'Drupal\entity_test\EntityTest'
,
'controller class'
=>
'Drupal\entity_test\EntityTestStorageController'
,
'form controller class'
=>
array
(
'default'
=>
'Drupal\entity_test\EntityTestFormController'
,
),
'base table'
=>
'entity_test'
,
'fieldable'
=>
TRUE
,
'entity keys'
=>
array
(
...
...
@@ -27,6 +30,65 @@ function entity_test_entity_info() {
return
$items
;
}
/**
* Implements hook_permission().
*/
function
entity_test_permission
()
{
$permissions
=
array
(
'administer entity_test content'
=>
array
(
'title'
=>
t
(
'Administer entity_test content'
),
'description'
=>
t
(
'Manage entity_test content'
),
),
);
return
$permissions
;
}
/**
* Implements hook_menu().
*/
function
entity_test_menu
()
{
$items
=
array
();
$items
[
'entity-test/add'
]
=
array
(
'title'
=>
'Add an entity_test'
,
'page callback'
=>
'entity_test_add'
,
'access arguments'
=>
array
(
'administer entity_test content'
),
'type'
=>
MENU_NORMAL_ITEM
,
);
$items
[
'entity-test/manage/%entity_test'
]
=
array
(
'title'
=>
'Edit test entity'
,
'page callback'
=>
'entity_test_edit'
,
'page arguments'
=>
array
(
2
),
'access arguments'
=>
array
(
'administer entity_test content'
),
'type'
=>
MENU_NORMAL_ITEM
,
);
$items
[
'entity-test/manage/%entity_test/edit'
]
=
array
(
'title'
=>
'Edit'
,
'type'
=>
MENU_DEFAULT_LOCAL_TASK
,
);
return
$items
;
}
/**
* Menu callback: displays the 'Add new entity_test' form.
*/
function
entity_test_add
()
{
drupal_set_title
(
t
(
'Create an entity_test'
));
$entity
=
entity_create
(
'entity_test'
,
array
());
return
entity_get_form
(
$entity
);
}
/**
* Menu callback: displays the 'Edit existing entity_test' form.
*/
function
entity_test_edit
(
$entity
)
{
drupal_set_title
(
t
(
'entity_test @id'
,
array
(
'@id'
=>
$entity
->
id
)),
PASS_THROUGH
);
return
entity_get_form
(
$entity
);
}
/**
* Loads a test entity.
*
...
...
core/modules/system/tests/modules/entity_test/lib/Drupal/entity_test/EntityTestFormController.php
0 → 100644
View file @
3d2aad9e
<?php
/**
* @file
* Definition of Drupal\entity_test\EntityTestFormController.
*/
namespace
Drupal\entity_test
;
use
Drupal\Core\Entity\EntityInterface
;
use
Drupal\Core\Entity\EntityFormController
;
/**
* Form controller for the test entity edit forms.
*/
class
EntityTestFormController
extends
EntityFormController
{
/**
* Overrides Drupal\Core\Entity\EntityFormController::form().
*/
public
function
form
(
array
$form
,
array
&
$form_state
,
EntityInterface
$entity
)
{
$form
=
parent
::
form
(
$form
,
$form_state
,
$entity
);
$langcode
=
$this
->
getFormLangcode
(
$form_state
);
$name
=
$entity
->
get
(
'name'
,
$langcode
);
$uid
=
$entity
->
get
(
'uid'
,
$langcode
);
$form
[
'name'
]
=
array
(
'#type'
=>
'textfield'
,
'#title'
=>
t
(
'Name'
),
'#default_value'
=>
!
empty
(
$name
)
?
$name
:
''
,
'#size'
=>
60
,
'#maxlength'
=>
128
,
'#required'
=>
TRUE
,
'#weight'
=>
-
10
,
);
$form
[
'uid'
]
=
array
(
'#type'
=>
'textfield'
,
'#title'
=>
'UID'
,
'#default_value'
=>
!
empty
(
$uid
)
?
$uid
:
''
,
'#size'
=>
60
,
'#maxlength'
=>
128
,
'#required'
=>
TRUE
,
'#weight'
=>
-
10
,
);
return
$form
;
}
/**
* Overrides Drupal\Core\Entity\EntityFormController::submit().
*/
public
function
submit
(
array
$form
,
array
&
$form_state
)
{
$entity
=
parent
::
submit
(
$form
,
$form_state
);
$langcode
=
$this
->
getFormLangcode
(
$form_state
);
// Updates multilingual properties.
foreach
(
array
(
'name'
,
'uid'
)
as
$property
)
{
$entity
->
set
(
$property
,
$form_state
[
'values'
][
$property
],
$langcode
);
}
return
$entity
;
}
/**
* Overrides Drupal\Core\Entity\EntityFormController::save().
*/
public
function
save
(
array
$form
,
array
&
$form_state
)
{
$entity
=
$this
->
getEntity
(
$form_state
);
$is_new
=
$entity
->
isNew
();
$entity
->
save
();
$message
=
$is_new
?
t
(
'entity_test @id has been created.'
,
array
(
'@id'
=>
$entity
->
id
()))
:
t
(
'entity_test @id has been updated.'
,
array
(
'@id'
=>
$entity
->
id
()));
drupal_set_message
(
$message
);
if
(
$entity
->
id
())
{
$form_state
[
'redirect'
]
=
'entity-test/manage/'
.
$entity
->
id
()
.
'/edit'
;
}
else
{
// Error on save.
drupal_set_message
(
t
(
'The entity could not be saved.'
),
'error'
);
$form_state
[
'rebuild'
]
=
TRUE
;
}
}
/**
* Overrides Drupal\Core\Entity\EntityFormController::delete().
*/
public
function
delete
(
array
$form
,
array
&
$form_state
)
{
$entity
=
$this
->
getEntity
(
$form_state
);
$entity
->
delete
();
drupal_set_message
(
t
(
'entity_test @id has been deleted.'
,
array
(
'@id'
=>
$entity
->
id
())));
$form_state
[
'redirect'
]
=
'<front>'
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment