Loading core/modules/comment/src/CommentViewsData.php +1 −1 Original line number Diff line number Diff line Loading @@ -250,7 +250,7 @@ public function getViewsData() { // the same two tables is not supported. if (\Drupal::service('comment.manager')->getFields($type)) { $data['comment_entity_statistics']['table']['join'][$entity_type->getDataTable() ?: $entity_type->getBaseTable()] = [ 'type' => 'INNER', 'type' => 'LEFT', 'left_field' => $entity_type->getKey('id'), 'field' => 'entity_id', 'extra' => [ Loading core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_count.yml 0 → 100644 +244 −0 Original line number Diff line number Diff line langcode: en status: true dependencies: module: - node - user id: test_comment_count label: 'test comment count' module: views description: '' tag: '' base_table: node_field_data base_field: nid display: default: display_plugin: default id: default display_title: Master position: 0 display_options: access: type: perm options: perm: 'access content' cache: type: tag options: { } query: type: views_query options: disable_sql_rewrite: false distinct: false replica: false query_comment: '' query_tags: { } exposed_form: type: basic options: submit_button: Apply reset_button: false reset_button_label: Reset exposed_sorts_label: 'Sort by' expose_sort_order: true sort_asc_label: Asc sort_desc_label: Desc pager: type: mini options: items_per_page: 10 offset: 0 id: 0 total_pages: null expose: items_per_page: false items_per_page_label: 'Items per page' items_per_page_options: '5, 10, 25, 50' items_per_page_options_all: false items_per_page_options_all_label: '- All -' offset: false offset_label: Offset tags: previous: ‹‹ next: ›› style: type: default options: grouping: { } row_class: '' default_row_class: true uses_fields: false row: type: fields options: inline: { } separator: '' hide_empty: false default_field_elements: true fields: title: id: title table: node_field_data field: title entity_type: node entity_field: title label: '' alter: alter_text: false make_link: false absolute: false trim: false word_boundary: false ellipsis: false strip_tags: false html: false hide_empty: false empty_zero: false settings: link_to_entity: true plugin_id: field relationship: none group_type: group admin_label: '' exclude: false element_type: '' element_class: '' element_label_type: '' element_label_class: '' element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true empty: '' hide_alter_empty: true click_sort_column: value type: string group_column: value group_columns: { } group_rows: true delta_limit: 0 delta_offset: 0 delta_reversed: false delta_first_last: false multi_type: separator separator: ', ' field_api_classes: false comment_count: id: comment_count table: comment_entity_statistics field: comment_count relationship: none group_type: group admin_label: '' label: '' exclude: false alter: alter_text: false text: '' make_link: false path: '' absolute: false external: false replace_spaces: false path_case: none trim_whitespace: false alt: '' rel: '' link_class: '' prefix: '' suffix: '' target: '' nl2br: false max_length: 0 word_boundary: true ellipsis: true more_link: false more_link_text: '' more_link_path: '' strip_tags: false trim: false preserve_tags: '' html: false element_type: '' element_class: '' element_label_type: '' element_label_class: '' element_label_colon: false element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true empty: '' hide_empty: false empty_zero: false hide_alter_empty: true set_precision: false precision: 0 decimal: . separator: '' format_plural: false format_plural_string: !!binary MQNAY291bnQ= prefix: '' suffix: '' plugin_id: numeric filters: status: value: '1' table: node_field_data field: status plugin_id: boolean entity_type: node entity_field: status id: status expose: operator: '' operator_limit_selection: false operator_list: { } group: 1 sorts: created: id: created table: node_field_data field: created order: DESC entity_type: node entity_field: created plugin_id: date relationship: none group_type: group admin_label: '' exposed: false expose: label: '' granularity: second header: { } footer: { } empty: { } relationships: { } arguments: { } display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url.query_args - 'user.node_grants:view' - user.permissions tags: { } page_1: display_plugin: page id: page_1 display_title: Page position: 1 display_options: display_extenders: { } path: test-comment-count cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url.query_args - 'user.node_grants:view' - user.permissions tags: { } core/modules/comment/tests/src/Functional/Views/NodeCommentsTest.php +27 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ class NodeCommentsTest extends CommentTestBase { * * @var array */ public static $testViews = ['test_new_comments']; public static $testViews = ['test_new_comments', 'test_comment_count']; /** * Test the new comments field plugin. Loading @@ -38,4 +38,30 @@ public function testNewComments() { $this->assertCount(1, $new_comments, 'Found the number of new comments for a certain node.'); } /** * Test the comment count field. */ public function testCommentCount() { $this->drupalGet('test-comment-count'); $this->assertSession()->statusCodeEquals(200); $this->assertCount(2, $this->cssSelect('.views-row')); $comment_count_with_comment = $this->cssSelect(".views-field-comment-count span:contains('1')"); $this->assertCount(1, $comment_count_with_comment); $comment_count_without_comment = $this->cssSelect(".views-field-comment-count span:contains('0')"); $this->assertCount(1, $comment_count_without_comment); // Create a content type with no comment field, and add a node. $this->drupalCreateContentType(['type' => 'no_comment', 'name' => t('No comment page')]); $this->nodeUserPosted = $this->drupalCreateNode(['type' => 'no_comment']); $this->drupalGet('test-comment-count'); // Test that the node with no comment field is also shown. $this->assertSession()->statusCodeEquals(200); $this->assertCount(3, $this->cssSelect('.views-row')); $comment_count_with_comment = $this->cssSelect(".views-field-comment-count span:contains('1')"); $this->assertCount(1, $comment_count_with_comment); $comment_count_without_comment = $this->cssSelect(".views-field-comment-count span:contains('0')"); $this->assertCount(2, $comment_count_without_comment); } } Loading
core/modules/comment/src/CommentViewsData.php +1 −1 Original line number Diff line number Diff line Loading @@ -250,7 +250,7 @@ public function getViewsData() { // the same two tables is not supported. if (\Drupal::service('comment.manager')->getFields($type)) { $data['comment_entity_statistics']['table']['join'][$entity_type->getDataTable() ?: $entity_type->getBaseTable()] = [ 'type' => 'INNER', 'type' => 'LEFT', 'left_field' => $entity_type->getKey('id'), 'field' => 'entity_id', 'extra' => [ Loading
core/modules/comment/tests/modules/comment_test_views/test_views/views.view.test_comment_count.yml 0 → 100644 +244 −0 Original line number Diff line number Diff line langcode: en status: true dependencies: module: - node - user id: test_comment_count label: 'test comment count' module: views description: '' tag: '' base_table: node_field_data base_field: nid display: default: display_plugin: default id: default display_title: Master position: 0 display_options: access: type: perm options: perm: 'access content' cache: type: tag options: { } query: type: views_query options: disable_sql_rewrite: false distinct: false replica: false query_comment: '' query_tags: { } exposed_form: type: basic options: submit_button: Apply reset_button: false reset_button_label: Reset exposed_sorts_label: 'Sort by' expose_sort_order: true sort_asc_label: Asc sort_desc_label: Desc pager: type: mini options: items_per_page: 10 offset: 0 id: 0 total_pages: null expose: items_per_page: false items_per_page_label: 'Items per page' items_per_page_options: '5, 10, 25, 50' items_per_page_options_all: false items_per_page_options_all_label: '- All -' offset: false offset_label: Offset tags: previous: ‹‹ next: ›› style: type: default options: grouping: { } row_class: '' default_row_class: true uses_fields: false row: type: fields options: inline: { } separator: '' hide_empty: false default_field_elements: true fields: title: id: title table: node_field_data field: title entity_type: node entity_field: title label: '' alter: alter_text: false make_link: false absolute: false trim: false word_boundary: false ellipsis: false strip_tags: false html: false hide_empty: false empty_zero: false settings: link_to_entity: true plugin_id: field relationship: none group_type: group admin_label: '' exclude: false element_type: '' element_class: '' element_label_type: '' element_label_class: '' element_label_colon: true element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true empty: '' hide_alter_empty: true click_sort_column: value type: string group_column: value group_columns: { } group_rows: true delta_limit: 0 delta_offset: 0 delta_reversed: false delta_first_last: false multi_type: separator separator: ', ' field_api_classes: false comment_count: id: comment_count table: comment_entity_statistics field: comment_count relationship: none group_type: group admin_label: '' label: '' exclude: false alter: alter_text: false text: '' make_link: false path: '' absolute: false external: false replace_spaces: false path_case: none trim_whitespace: false alt: '' rel: '' link_class: '' prefix: '' suffix: '' target: '' nl2br: false max_length: 0 word_boundary: true ellipsis: true more_link: false more_link_text: '' more_link_path: '' strip_tags: false trim: false preserve_tags: '' html: false element_type: '' element_class: '' element_label_type: '' element_label_class: '' element_label_colon: false element_wrapper_type: '' element_wrapper_class: '' element_default_classes: true empty: '' hide_empty: false empty_zero: false hide_alter_empty: true set_precision: false precision: 0 decimal: . separator: '' format_plural: false format_plural_string: !!binary MQNAY291bnQ= prefix: '' suffix: '' plugin_id: numeric filters: status: value: '1' table: node_field_data field: status plugin_id: boolean entity_type: node entity_field: status id: status expose: operator: '' operator_limit_selection: false operator_list: { } group: 1 sorts: created: id: created table: node_field_data field: created order: DESC entity_type: node entity_field: created plugin_id: date relationship: none group_type: group admin_label: '' exposed: false expose: label: '' granularity: second header: { } footer: { } empty: { } relationships: { } arguments: { } display_extenders: { } cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url.query_args - 'user.node_grants:view' - user.permissions tags: { } page_1: display_plugin: page id: page_1 display_title: Page position: 1 display_options: display_extenders: { } path: test-comment-count cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url.query_args - 'user.node_grants:view' - user.permissions tags: { }
core/modules/comment/tests/src/Functional/Views/NodeCommentsTest.php +27 −1 Original line number Diff line number Diff line Loading @@ -26,7 +26,7 @@ class NodeCommentsTest extends CommentTestBase { * * @var array */ public static $testViews = ['test_new_comments']; public static $testViews = ['test_new_comments', 'test_comment_count']; /** * Test the new comments field plugin. Loading @@ -38,4 +38,30 @@ public function testNewComments() { $this->assertCount(1, $new_comments, 'Found the number of new comments for a certain node.'); } /** * Test the comment count field. */ public function testCommentCount() { $this->drupalGet('test-comment-count'); $this->assertSession()->statusCodeEquals(200); $this->assertCount(2, $this->cssSelect('.views-row')); $comment_count_with_comment = $this->cssSelect(".views-field-comment-count span:contains('1')"); $this->assertCount(1, $comment_count_with_comment); $comment_count_without_comment = $this->cssSelect(".views-field-comment-count span:contains('0')"); $this->assertCount(1, $comment_count_without_comment); // Create a content type with no comment field, and add a node. $this->drupalCreateContentType(['type' => 'no_comment', 'name' => t('No comment page')]); $this->nodeUserPosted = $this->drupalCreateNode(['type' => 'no_comment']); $this->drupalGet('test-comment-count'); // Test that the node with no comment field is also shown. $this->assertSession()->statusCodeEquals(200); $this->assertCount(3, $this->cssSelect('.views-row')); $comment_count_with_comment = $this->cssSelect(".views-field-comment-count span:contains('1')"); $this->assertCount(1, $comment_count_with_comment); $comment_count_without_comment = $this->cssSelect(".views-field-comment-count span:contains('0')"); $this->assertCount(2, $comment_count_without_comment); } }