mirror of
https://github.com/silverstripe/silverstripe-docsviewer
synced 2024-10-22 09:05:56 +00:00
FIX Language viewer test.
This commit is contained in:
parent
5ab53e65f2
commit
8057c9257c
@ -205,17 +205,22 @@ class DocumentationViewer extends Controller {
|
|||||||
//
|
//
|
||||||
$languages = i18n::get_common_languages();
|
$languages = i18n::get_common_languages();
|
||||||
|
|
||||||
if(!$request->param('Lang')) {
|
if(!$lang = $request->param('Lang')) {
|
||||||
|
$lang = $request->param('Action');
|
||||||
|
$action = $request->param('ID');
|
||||||
|
} else {
|
||||||
|
$action = $request->param('Action');
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!$lang) {
|
||||||
return $this->redirect($this->Link('en'));
|
return $this->redirect($this->Link('en'));
|
||||||
} else if(!isset($languages[$request->param('Lang')])) {
|
} else if(!isset($languages[$lang])) {
|
||||||
return $this->httpError(404);
|
return $this->httpError(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
$action = $request->param('Action');
|
$request->shift(10);
|
||||||
$allowed = $this->config()->allowed_actions;
|
|
||||||
|
|
||||||
$request->shift();
|
$allowed = $this->config()->allowed_actions;
|
||||||
$request->shift();
|
|
||||||
|
|
||||||
if(in_array($action, $allowed)) {
|
if(in_array($action, $allowed)) {
|
||||||
//
|
//
|
||||||
@ -246,9 +251,9 @@ class DocumentationViewer extends Controller {
|
|||||||
"DocumentationViewer_{$type}",
|
"DocumentationViewer_{$type}",
|
||||||
"DocumentationViewer"
|
"DocumentationViewer"
|
||||||
));
|
));
|
||||||
|
|
||||||
return new SS_HTTPResponse($body, 200);
|
return new SS_HTTPResponse($body, 200);
|
||||||
} else if(!$url || $url == $request->param('Lang')) {
|
} else if(!$url || $url == $lang) {
|
||||||
$body = $this->renderWith(array(
|
$body = $this->renderWith(array(
|
||||||
"DocumentationViewer_DocumentationFolder",
|
"DocumentationViewer_DocumentationFolder",
|
||||||
"DocumentationViewer"
|
"DocumentationViewer"
|
||||||
@ -257,7 +262,7 @@ class DocumentationViewer extends Controller {
|
|||||||
return new SS_HTTPResponse($body, 200);
|
return new SS_HTTPResponse($body, 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->httpError(404);
|
return $this->httpError(404);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -291,7 +296,11 @@ class DocumentationViewer extends Controller {
|
|||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getLanguage() {
|
public function getLanguage() {
|
||||||
return $this->request->param('Lang');
|
if(!$lang = $this->request->param('Lang')) {
|
||||||
|
$lang = $this->request->param('Action');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $lang;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -308,7 +317,10 @@ class DocumentationViewer extends Controller {
|
|||||||
$record = $this->getPage();
|
$record = $this->getPage();
|
||||||
$current = $this->getEntity();
|
$current = $this->getEntity();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
foreach($entities as $entity) {
|
foreach($entities as $entity) {
|
||||||
|
|
||||||
// only show entities with the same language
|
// only show entities with the same language
|
||||||
if($entity->getLanguage() !== $this->getLanguage()) {
|
if($entity->getLanguage() !== $this->getLanguage()) {
|
||||||
continue;
|
continue;
|
||||||
@ -393,11 +405,13 @@ class DocumentationViewer extends Controller {
|
|||||||
return $this->getManifest()->getChildrenFor(
|
return $this->getManifest()->getChildrenFor(
|
||||||
$this->record->getPath()
|
$this->record->getPath()
|
||||||
);
|
);
|
||||||
} else {
|
} else if($this->record) {
|
||||||
return $this->getManifest()->getChildrenFor(
|
return $this->getManifest()->getChildrenFor(
|
||||||
dirname($this->record->getPath())
|
dirname($this->record->getPath())
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return new ArrayList();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -589,7 +603,8 @@ class DocumentationViewer extends Controller {
|
|||||||
*/
|
*/
|
||||||
public function getNextPage() {
|
public function getNextPage() {
|
||||||
return ($this->record)
|
return ($this->record)
|
||||||
? $this->getManifest()->getNextPage($this->record->getPath())
|
? $this->getManifest()->getNextPage(
|
||||||
|
$this->record->getPath(), $this->getEntity()->getPath())
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -601,7 +616,8 @@ class DocumentationViewer extends Controller {
|
|||||||
*/
|
*/
|
||||||
public function getPreviousPage() {
|
public function getPreviousPage() {
|
||||||
return ($this->record)
|
return ($this->record)
|
||||||
? $this->getManifest()->getPreviousPage($this->record->getPath())
|
? $this->getManifest()->getPreviousPage(
|
||||||
|
$this->record->getPath(), $this->getEntity()->getPath())
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,6 +60,8 @@ class DocumentationViewerTest extends FunctionalTest {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Config::inst()->update('SSViewer', 'theme_enabled', false);
|
||||||
|
|
||||||
$this->manifest = new DocumentationManifest(true);
|
$this->manifest = new DocumentationManifest(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,46 +71,21 @@ class DocumentationViewerTest extends FunctionalTest {
|
|||||||
Config::unnest();
|
Config::unnest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function testGetMenu() {
|
|
||||||
$v = new DocumentationViewer();
|
|
||||||
// check with children
|
|
||||||
$response = $v->handleRequest(new SS_HTTPRequest('GET', 'en/doc_test/2.3/'), DataModel::inst());
|
|
||||||
|
|
||||||
$expected = array(
|
|
||||||
'dev/docs/en/doc_test/2.3/sort/' => 'Sort',
|
|
||||||
'dev/docs/en/doc_test/2.3/subfolder/' => 'Subfolder',
|
|
||||||
'dev/docs/en/doc_test/2.3/test/' => 'Test'
|
|
||||||
);
|
|
||||||
|
|
||||||
$actual = $v->getMenu()->first()->Children->map('Link', 'Title');
|
|
||||||
$this->assertEquals($expected, $actual);
|
|
||||||
|
|
||||||
|
|
||||||
$response = $v->handleRequest(new SS_HTTPRequest('GET', 'en/doc_test/'), DataModel::inst());
|
|
||||||
$this->assertEquals('current', $v->getMenu()->first()->LinkingMode);
|
|
||||||
|
|
||||||
// 2.4 stable release has 1 child page (not including index)
|
|
||||||
$this->assertEquals(1, $v->getMenu()->first()->Children->count());
|
|
||||||
|
|
||||||
// menu should contain all the english entities
|
|
||||||
$expected = array(
|
|
||||||
'dev/docs/en/doc_test/' => 'Doc Test',
|
|
||||||
'dev/docs/en/documentationvieweraltmodule1/' => 'DocumentationViewerAltModule1',
|
|
||||||
'dev/docs/en/documentationvieweraltmodule2/' => 'DocumentationViewerAltModule2'
|
|
||||||
);
|
|
||||||
|
|
||||||
$this->assertEquals($expected, $v->getMenu()->map('Link', 'Title'));
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This tests that all the locations will exist if we access it via the urls.
|
* This tests that all the locations will exist if we access it via the urls.
|
||||||
*/
|
*/
|
||||||
public function testLocationsExists() {
|
public function testLocationsExists() {
|
||||||
$this->autoFollowRedirection = false;
|
$this->autoFollowRedirection = false;
|
||||||
|
|
||||||
|
$response = $this->get('dev/docs/en/doc_test/2.3/subfolder/');
|
||||||
|
$this->assertEquals($response->getStatusCode(), 200, 'Existing base folder');
|
||||||
|
|
||||||
|
$response = $this->get('dev/docs/en/doc_test/2.3/subfolder/subsubfolder/');
|
||||||
|
$this->assertEquals($response->getStatusCode(), 200, 'Existing base folder');
|
||||||
|
|
||||||
|
$response = $this->get('dev/docs/en/doc_test/2.3/subfolder/subsubfolder/subsubpage/');
|
||||||
|
$this->assertEquals($response->getStatusCode(), 200, 'Existing base folder');
|
||||||
|
|
||||||
$response = $this->get('dev/docs/en/');
|
$response = $this->get('dev/docs/en/');
|
||||||
$this->assertEquals($response->getStatusCode(), 200, 'Lists the home index');
|
$this->assertEquals($response->getStatusCode(), 200, 'Lists the home index');
|
||||||
|
|
||||||
@ -116,10 +93,6 @@ class DocumentationViewerTest extends FunctionalTest {
|
|||||||
$this->assertEquals($response->getStatusCode(), 302, 'Go to english view');
|
$this->assertEquals($response->getStatusCode(), 302, 'Go to english view');
|
||||||
|
|
||||||
|
|
||||||
$response = $this->get('dev/docs/en/doc_test/2.3/subfolder/');
|
|
||||||
$this->assertEquals($response->getStatusCode(), 200, 'Existing base folder');
|
|
||||||
|
|
||||||
|
|
||||||
$response = $this->get('dev/docs/en/doc_test/3.0/empty.md');
|
$response = $this->get('dev/docs/en/doc_test/3.0/empty.md');
|
||||||
$this->assertEquals(301, $response->getStatusCode(), 'Direct markdown links also work. They should redirect to /empty/');
|
$this->assertEquals(301, $response->getStatusCode(), 'Direct markdown links also work. They should redirect to /empty/');
|
||||||
|
|
||||||
@ -168,6 +141,41 @@ class DocumentationViewerTest extends FunctionalTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function testGetMenu() {
|
||||||
|
$v = new DocumentationViewer();
|
||||||
|
// check with children
|
||||||
|
$response = $v->handleRequest(new SS_HTTPRequest('GET', 'en/doc_test/2.3/'), DataModel::inst());
|
||||||
|
|
||||||
|
$expected = array(
|
||||||
|
'dev/docs/en/doc_test/2.3/sort/' => 'Sort',
|
||||||
|
'dev/docs/en/doc_test/2.3/subfolder/' => 'Subfolder',
|
||||||
|
'dev/docs/en/doc_test/2.3/test/' => 'Test'
|
||||||
|
);
|
||||||
|
|
||||||
|
$actual = $v->getMenu()->first()->Children->map('Link', 'Title');
|
||||||
|
$this->assertEquals($expected, $actual);
|
||||||
|
|
||||||
|
|
||||||
|
$response = $v->handleRequest(new SS_HTTPRequest('GET', 'en/doc_test/'), DataModel::inst());
|
||||||
|
$this->assertEquals('current', $v->getMenu()->first()->LinkingMode);
|
||||||
|
|
||||||
|
// 2.4 stable release has 1 child page (not including index)
|
||||||
|
$this->assertEquals(1, $v->getMenu()->first()->Children->count());
|
||||||
|
|
||||||
|
// menu should contain all the english entities
|
||||||
|
$expected = array(
|
||||||
|
'dev/docs/en/doc_test/' => 'Doc Test',
|
||||||
|
'dev/docs/en/documentationvieweraltmodule1/' => 'DocumentationViewerAltModule1',
|
||||||
|
'dev/docs/en/documentationvieweraltmodule2/' => 'DocumentationViewerAltModule2'
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertEquals($expected, $v->getMenu()->map('Link', 'Title'));
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function testGetLanguage() {
|
public function testGetLanguage() {
|
||||||
$v = new DocumentationViewer();
|
$v = new DocumentationViewer();
|
||||||
$response = $v->handleRequest(new SS_HTTPRequest('GET', 'en/doc_test/2.3/'), DataModel::inst());
|
$response = $v->handleRequest(new SS_HTTPRequest('GET', 'en/doc_test/2.3/'), DataModel::inst());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user