Chris@16: config('statistics.settings') Chris@16: ->set('count_content_views', 1) Chris@16: ->save(); Chris@16: Chris@16: Role::load(AccountInterface::ANONYMOUS_ROLE) Chris@16: ->grantPermission('view post access counter') Chris@16: ->save(); Chris@16: Chris@16: // Add another language to enable multilingual path processor. Chris@16: ConfigurableLanguage::create(['id' => 'xx'])->save(); Chris@16: $this->config('language.negotiation')->set('url.prefixes.en', 'en')->save(); Chris@16: Chris@16: $this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']); Chris@16: $this->node = $this->drupalCreateNode(); Chris@16: } Chris@16: Chris@16: /** Chris@16: * Tests that statistics works with different addressing variants. Chris@16: */ Chris@16: public function testLoggingPage() { Chris@16: // At the first request, the page does not contain statistics counter. Chris@16: $this->assertNull($this->getStatisticsCounter('node/1')); Chris@16: $this->assertSame(1, $this->getStatisticsCounter('node/1')); Chris@16: $this->assertSame(2, $this->getStatisticsCounter('en/node/1')); Chris@16: $this->assertSame(3, $this->getStatisticsCounter('en/node/1')); Chris@16: $this->assertSame(4, $this->getStatisticsCounter('index.php/node/1')); Chris@16: $this->assertSame(5, $this->getStatisticsCounter('index.php/node/1')); Chris@16: $this->assertSame(6, $this->getStatisticsCounter('index.php/en/node/1')); Chris@16: $this->assertSame(7, $this->getStatisticsCounter('index.php/en/node/1')); Chris@16: } Chris@16: Chris@16: /** Chris@16: * Gets counter of views by path. Chris@16: * Chris@16: * @param string $path Chris@16: * A path to node. Chris@16: * Chris@16: * @return int|null Chris@16: * A counter of views. Returns NULL if the page does not contain statistics. Chris@16: */ Chris@16: protected function getStatisticsCounter($path) { Chris@16: $this->drupalGet($path); Chris@16: // Wait while statistics module send ajax request. Chris@16: $this->assertSession()->assertWaitOnAjaxRequest(); Chris@16: // Resaving the node to call the hook_node_links_alter(), which is used to Chris@16: // update information on the page. See statistics_node_links_alter(). Chris@16: $this->node->save(); Chris@16: Chris@16: $field_counter = $this->getSession()->getPage()->find('css', '.statistics-counter'); Chris@16: return $field_counter ? (int) explode(' ', $field_counter->getText())[0] : NULL; Chris@16: } Chris@16: Chris@16: }