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
8fb1fc5c
Commit
8fb1fc5c
authored
Nov 13, 2008
by
Dries
Browse files
- Patch
#302399
by Damien Tournoud: fixing the schema api tests.
parent
44c8391d
Changes
1
Hide whitespace changes
Inline
Side-by-side
modules/simpletest/tests/schema.test
View file @
8fb1fc5c
...
...
@@ -23,71 +23,73 @@ class SchemaTestCase extends DrupalWebTestCase {
*/
function
testSchema
()
{
// Try creating a table.
$table_name
=
'test'
;
$table_specification
=
array
(
'fields'
=>
array
(
'id'
=>
array
(
'type'
=>
'int'
,
'default'
=>
NULL
,
),
'test'
=>
array
(
'test
_field
'
=>
array
(
'type'
=>
'int'
,
'not null'
=>
TRUE
,
),
),
);
$ret
=
array
();
db_create_table
(
$ret
,
$table_name
,
$table_specification
);
db_create_table
(
$ret
,
'test_table'
,
$table_specification
);
// Assert that the table exists.
$this
->
assertTrue
(
db_table_exists
(
$table_name
),
t
(
'The table exists.'
));
$this
->
assertTrue
(
db_table_exists
(
'test_table'
),
t
(
'The table exists.'
));
// An insert without a value for the column 'test' should fail.
$field_name
=
'test'
;
// An insert without a value for the column 'test_table' should fail.
$this
->
assertFalse
(
$this
->
tryInsert
(),
t
(
'Insert without a default failed.'
));
// Add a default value to the column.
db_field_set_default
(
$ret
,
$table_name
,
$field_name
,
0
);
db_field_set_default
(
$ret
,
'test_table'
,
'test_field'
,
0
);
// The insert should now succeed.
$this
->
assertTrue
(
$this
->
tryInsert
(),
t
(
'Insert with a default succeeded.'
));
// Remove the default.
db_field_set_no_default
(
$ret
,
$table_name
,
$field_name
);
db_field_set_no_default
(
$ret
,
'test_table'
,
'test_field'
);
// The insert should fail again.
$this
->
assertFalse
(
$this
->
tryInsert
(),
t
(
'Insert without a default failed.'
));
// Rename the table.
db_rename_table
(
$ret
,
$table_name
,
$table_name
.
'
_
test'
);
db_rename_table
(
$ret
,
'test_table'
,
'test
_table2
'
);
// We need the default so that we can insert after the rename.
db_field_set_default
(
$ret
,
$table_name
.
'
_
test
'
,
$
field
_name
,
0
);
db_field_set_default
(
$ret
,
'test_table2'
,
'test
_
field
'
,
0
);
$this
->
assertFalse
(
$this
->
tryInsert
(),
t
(
'Insert into the old table failed.'
));
$this
->
assertTrue
(
$this
->
tryInsert
(
'_test'
),
t
(
'Insert into the new table succeeded.'
));
$this
->
assertTrue
(
$this
->
tryInsert
(
'test_table2'
),
t
(
'Insert into the new table succeeded.'
));
// We should have successfully inserted exactly two rows.
$count
=
db_query
(
'SELECT COUNT(*) FROM {test_table2}'
)
->
fetchField
();
$this
->
assertEqual
(
$count
,
2
,
t
(
'Two fields were successfully inserted.'
));
// Try to drop the table.
db_drop_table
(
$ret
,
$table_name
.
'_test
'
);
$this
->
assertFalse
(
db_table_exists
(
$table_name
.
'_test
'
),
t
(
'The
renam
ed table does not exist.'
));
db_drop_table
(
$ret
,
'test_table2
'
);
$this
->
assertFalse
(
db_table_exists
(
'test_table2
'
),
t
(
'The
dropp
ed table does not exist.'
));
// Recreate the table.
db_create_table
(
$ret
,
$table_name
,
$table_specification
);
db_field_set_default
(
$ret
,
$table_name
,
$field_name
,
0
);
db_add_field
(
$ret
,
$table_name
,
'test2
'
,
array
(
'type'
=>
'int'
,
'not null'
=>
TRUE
,
'default'
=>
0
));
db_create_table
(
$ret
,
'test_table'
,
$table_specification
);
db_field_set_default
(
$ret
,
'test_table'
,
'test_field'
,
0
);
db_add_field
(
$ret
,
'test_table'
,
'test_serial
'
,
array
(
'type'
=>
'int'
,
'not null'
=>
TRUE
,
'default'
=>
0
));
// Change the new field to a serial column.
db_change_field
(
$ret
,
$table_name
,
'test2
'
,
'test
2
'
,
array
(
'type'
=>
'serial'
,
'not null'
=>
TRUE
),
array
(
'primary key'
=>
array
(
'test
2
'
)));
db_change_field
(
$ret
,
'test_table'
,
'test_serial
'
,
'test
_serial
'
,
array
(
'type'
=>
'serial'
,
'not null'
=>
TRUE
),
array
(
'primary key'
=>
array
(
'test
_serial
'
)));
$this
->
assertTrue
(
$this
->
tryInsert
(),
t
(
'Insert with a serial succeeded.'
));
$max1
=
db_query
(
'SELECT MAX(test
2
) FROM test'
)
->
fetchField
();
$max1
=
db_query
(
'SELECT MAX(test
_serial
) FROM
{
test
_table}
'
)
->
fetchField
();
$this
->
assertTrue
(
$this
->
tryInsert
(),
t
(
'Insert with a serial succeeded.'
));
$max2
=
db_query
(
'SELECT MAX(test
2
) FROM test'
)
->
fetchField
();
$max2
=
db_query
(
'SELECT MAX(test
_serial
) FROM
{
test
_table}
'
)
->
fetchField
();
$this
->
assertTrue
(
$max2
>
$max1
,
t
(
'The serial is monotone.'
));
$count
=
db_query
(
'SELECT COUNT(
test2
) FROM test'
)
->
fetchField
();
$count
=
db_query
(
'SELECT COUNT(
*
) FROM
{
test
_table}
'
)
->
fetchField
();
$this
->
assertEqual
(
$count
,
2
,
t
(
'There were two rows.'
));
}
function
tryInsert
(
$table
postfix
=
'
'
)
{
function
tryInsert
(
$table
=
'test_table
'
)
{
try
{
db_query
(
"INSERT INTO
{
test
$table
postfix
}
(id) VALUES (:id)"
,
array
(
':id'
=>
mt_rand
(
10
,
20
)));
db_query
(
"INSERT INTO {
"
.
$table
.
"
} (id) VALUES (:id)"
,
array
(
':id'
=>
mt_rand
(
10
,
20
)));
return
TRUE
;
}
catch
(
Exception
$e
)
{
...
...
Write
Preview
Supports
Markdown
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