Exemplo n.º 1
0
 /**
  * Tests the cache of the full and single table data.
  */
 public function testFullAndTableGetCache()
 {
     $expected_views_data = $this->viewsDataWithProvider();
     $table_name = 'views_test_data';
     $table_name_2 = 'views_test_data_2';
     $random_table_name = $this->randomMachineName();
     // Views data should be invoked twice due to the clear call.
     $this->moduleHandler->expects($this->at(0))->method('getImplementations')->with('views_data')->willReturn(array('views_test_data'));
     $this->moduleHandler->expects($this->at(1))->method('invoke')->with('views_test_data', 'views_data')->willReturn($this->viewsData());
     $this->moduleHandler->expects($this->at(2))->method('alter')->with('views_data', $expected_views_data);
     $this->moduleHandler->expects($this->at(3))->method('getImplementations')->with('views_data')->willReturn(array('views_test_data'));
     $this->moduleHandler->expects($this->at(4))->method('invoke')->with('views_test_data', 'views_data')->willReturn($this->viewsData());
     $this->moduleHandler->expects($this->at(5))->method('alter')->with('views_data', $expected_views_data);
     // The cache should only be called once (before the clear() call) as get
     // will get all table data in the first get().
     $this->cacheBackend->expects($this->at(0))->method('get')->with("views_data:en")->will($this->returnValue(FALSE));
     $this->cacheBackend->expects($this->at(1))->method('set')->with("views_data:en", $expected_views_data);
     $this->cacheBackend->expects($this->at(2))->method('get')->with("views_data:{$random_table_name}:en")->will($this->returnValue(FALSE));
     $this->cacheBackend->expects($this->at(3))->method('set')->with("views_data:{$random_table_name}:en", array());
     $this->cacheTagsInvalidator->expects($this->once())->method('invalidateTags')->with(['views_data']);
     $this->cacheBackend->expects($this->at(4))->method('get')->with("views_data:en")->will($this->returnValue(FALSE));
     $this->cacheBackend->expects($this->at(5))->method('set')->with("views_data:en", $expected_views_data);
     $this->cacheBackend->expects($this->at(6))->method('get')->with("views_data:{$random_table_name}:en")->will($this->returnValue(FALSE));
     $this->cacheBackend->expects($this->at(7))->method('set')->with("views_data:{$random_table_name}:en", array());
     $views_data = $this->viewsData->get();
     $this->assertSame($expected_views_data, $views_data);
     // Request a specific table should be static cached.
     $views_data = $this->viewsData->get($table_name);
     $this->assertSame($expected_views_data[$table_name], $views_data);
     // Another table being requested should also come from the static cache.
     $views_data = $this->viewsData->get($table_name_2);
     $this->assertSame($expected_views_data[$table_name_2], $views_data);
     $views_data = $this->viewsData->get($random_table_name);
     $this->assertSame(array(), $views_data);
     $this->viewsData->clear();
     // Get the views data again.
     $this->viewsData->get();
     $this->viewsData->get($table_name);
     $this->viewsData->get($table_name_2);
     $this->viewsData->get($random_table_name);
 }