mirror of
https://github.com/yiisoft/yii2.git
synced 2026-03-08 08:17:24 +01:00
* php-cs-fixer: PSR2 rule. * php-cs-fixer: PSR2 rule - fix views. * Travis setup refactoring. * Add php-cs-fixer to travis cs tests. * Fix tests on hhvm-3.12 * improve travis config * composer update * revert composer update * improve travis config * Fix CS. * Extract config to separate classes. * Extract config to separate classes. * Add file header. * Force short array syntax. * binary_operator_spaces fixer * Fix broken tests * cast_spaces fixer * concat_space fixer * dir_constant fixer * ereg_to_preg fixer * function_typehint_space fixer * hash_to_slash_comment fixer * is_null fixer * linebreak_after_opening_tag fixer * lowercase_cast fixer * magic_constant_casing fixer * modernize_types_casting fixer * native_function_casing fixer * new_with_braces fixer * no_alias_functions fixer * no_blank_lines_after_class_opening fixer * no_blank_lines_after_phpdoc fixer * no_empty_comment fixer * no_empty_phpdoc fixer * no_empty_statement fixer * no_extra_consecutive_blank_lines fixer * no_leading_import_slash fixer * no_leading_namespace_whitespace fixer * no_mixed_echo_print fixer * no_multiline_whitespace_around_double_arrow fixer * no_multiline_whitespace_before_semicolons fixer * no_php4_constructor fixer * no_short_bool_cast fixer * no_singleline_whitespace_before_semicolons fixer * no_spaces_around_offset fixer * no_trailing_comma_in_list_call fixer * no_trailing_comma_in_singleline_array fixer * no_unneeded_control_parentheses fixer * no_unused_imports fixer * no_useless_return fixer * no_whitespace_before_comma_in_array fixer * no_whitespace_in_blank_line fixer * not_operator_with_successor_space fixer * object_operator_without_whitespace fixer * ordered_imports fixer * php_unit_construct fixer * php_unit_dedicate_assert fixer * php_unit_fqcn_annotation fixer * phpdoc_indent fixer * phpdoc_no_access fixer * phpdoc_no_empty_return fixer * phpdoc_no_package fixer * phpdoc_no_useless_inheritdoc fixer * Fix broken tests * phpdoc_return_self_reference fixer * phpdoc_single_line_var_spacing fixer * phpdoc_single_line_var_spacing fixer * phpdoc_to_comment fixer * phpdoc_trim fixer * phpdoc_var_without_name fixer * psr4 fixer * self_accessor fixer * short_scalar_cast fixer * single_blank_line_before_namespace fixer * single_quote fixer * standardize_not_equals fixer * ternary_operator_spaces fixer * trailing_comma_in_multiline_array fixer * trim_array_spaces fixer * protected_to_private fixer * unary_operator_spaces fixer * whitespace_after_comma_in_array fixer * `parent::setRules()` -> `$this->setRules()` * blank_line_after_opening_tag fixer * Update finder config. * Revert changes for YiiRequirementChecker. * Fix array formatting. * Add missing import. * Fix CS for new code merged from master. * Fix some indentation issues.
123 lines
3.4 KiB
PHP
123 lines
3.4 KiB
PHP
<?php
|
|
/**
|
|
* @link http://www.yiiframework.com/
|
|
* @copyright Copyright (c) 2008 Yii Software LLC
|
|
* @license http://www.yiiframework.com/license/
|
|
*/
|
|
|
|
namespace yiiunit\framework\web;
|
|
|
|
use yii\web\JsonResponseFormatter;
|
|
use yiiunit\framework\web\stubs\ModelStub;
|
|
|
|
/**
|
|
* @author Alexander Makarov <sam@rmcreative.ru>
|
|
* @since 2.0.3
|
|
*
|
|
* @group web
|
|
*/
|
|
class JsonResponseFormatterTest extends FormatterTest
|
|
{
|
|
/**
|
|
* @return JsonResponseFormatter
|
|
*/
|
|
protected function getFormatterInstance()
|
|
{
|
|
return new JsonResponseFormatter();
|
|
}
|
|
|
|
public function formatScalarDataProvider()
|
|
{
|
|
return [
|
|
[1, 1],
|
|
['abc', '"abc"'],
|
|
[true, 'true'],
|
|
['<>', '"<>"'],
|
|
];
|
|
}
|
|
|
|
public function formatArrayDataProvider()
|
|
{
|
|
return [
|
|
// input, json, pretty json
|
|
[[], '[]', '[]'],
|
|
[[1, 'abc'], '[1,"abc"]', "[\n 1,\n \"abc\"\n]"],
|
|
[
|
|
[
|
|
'a' => 1,
|
|
'b' => 'abc',
|
|
],
|
|
'{"a":1,"b":"abc"}',
|
|
"{\n \"a\": 1,\n \"b\": \"abc\"\n}",
|
|
],
|
|
[
|
|
[
|
|
1,
|
|
'abc',
|
|
[2, 'def'],
|
|
true,
|
|
],
|
|
'[1,"abc",[2,"def"],true]',
|
|
"[\n 1,\n \"abc\",\n [\n 2,\n \"def\"\n ],\n true\n]",
|
|
],
|
|
[
|
|
[
|
|
'a' => 1,
|
|
'b' => 'abc',
|
|
'c' => [2, '<>'],
|
|
true,
|
|
],
|
|
'{"a":1,"b":"abc","c":[2,"<>"],"0":true}',
|
|
"{\n \"a\": 1,\n \"b\": \"abc\",\n \"c\": [\n 2,\n \"<>\"\n ],\n \"0\": true\n}",
|
|
],
|
|
];
|
|
}
|
|
|
|
public function formatObjectDataProvider()
|
|
{
|
|
return [
|
|
[new Post(123, 'abc'), '{"id":123,"title":"abc"}'],
|
|
[[
|
|
new Post(123, 'abc'),
|
|
new Post(456, 'def'),
|
|
], '[{"id":123,"title":"abc"},{"id":456,"title":"def"}]'],
|
|
[[
|
|
new Post(123, '<>'),
|
|
'a' => new Post(456, 'def'),
|
|
], '{"0":{"id":123,"title":"<>"},"a":{"id":456,"title":"def"}}'],
|
|
];
|
|
}
|
|
|
|
public function formatTraversableObjectDataProvider()
|
|
{
|
|
$postsStack = new \SplStack();
|
|
$postsStack->push(new Post(915, 'record1'));
|
|
$postsStack->push(new Post(456, 'record2'));
|
|
|
|
return [
|
|
[$postsStack, '{"1":{"id":456,"title":"record2"},"0":{"id":915,"title":"record1"}}'],
|
|
];
|
|
}
|
|
|
|
public function formatModelDataProvider()
|
|
{
|
|
return [
|
|
[new ModelStub(['id' => 123, 'title' => 'abc', 'hidden' => 'hidden']), '{"id":123,"title":"abc"}'],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @param mixed $data the data to be formatted
|
|
* @param string $json the expected JSON body
|
|
* @param string $prettyJson the expected pretty JSON body
|
|
* @dataProvider formatArrayDataProvider
|
|
*/
|
|
public function testFormatArraysPretty($data, $json, $prettyJson)
|
|
{
|
|
$this->response->data = $data;
|
|
$this->formatter->prettyPrint = true;
|
|
$this->formatter->format($this->response);
|
|
$this->assertEquals($prettyJson, $this->response->content);
|
|
}
|
|
}
|