<?php /** @todo make this ducking thing work */ use Codeception\Util\Fixtures; /** @type \Codeception\Scenario $scenario */ $scenario->groups('api', 'content'); $scenario->skip('XML and RSS checking is still not implemented'); $I = new ApiGuy($scenario); $I->wantTo('Verify that posts are displayed correctly in json, xml and rss formats'); $totalPostsNumber = Fixtures::get('data:posts:length'); $lastPage = ceil($totalPostsNumber / 5); $nonexistingPage = $lastPage + 1; $firstCategorySlug = Fixtures::get('data:categories[0]:slug'); $urls = array(\BlogFeedPage::$url, \AuthorFeedPage::route(1), \CategoryFeedPage::route($firstCategorySlug)); foreach ($urls as $url) { $I->amOnPage($url . '?format=json'); $I->seeResponseIsJson(); $I->amOnPage($url . '?format=json&page=' . $lastPage); $I->seeResponseIsJson(); $I->amOnPage($url . '?format=json&page=' . $nonexistingPage); $I->seeResponseCodeIs(404); /** @todo wouldn't it be cooler to return the last page on -1, penultimate page * on -2 and so on? */ $I->amOnPage($url . '?format=json&page=-1'); $I->seeResponseCodeIs(400); $I->amOnPage($url . '?format=xml'); $I->seeResponseContains('<posts>'); $I->assertNotEmpty($xml->posts); $I->amOnPage($url . '?format=xml&page=' . $lastPage); $response = $I->grabResponse(); $xml = new \SimpleXMLElement($response);
<?php use Codeception\Util\Fixtures; /** @type \Codeception\Scenario $scenario */ $scenario->groups('api', 'ajax'); \Yii::app()->fixtureManager->prepare(); $I = new ApiGuy($scenario); $I->wantTo('Ensure ajax comment update works fine'); $I->amOnPage(\BlogFeedPage::$url); $I->click(\BlogFeedPage::$postTitleSelector); $postUrl = $I->grabFromCurrentUrl(); $ajaxUrl = $I->grabAttributeFrom(\PostPage::$commentForm, 'data-action-ajax'); $I->sendPOST($ajaxUrl, array(\PostPage::$commentTextArea => 'Sample comment', \PostPage::$commentUsernameField => 'Fuy Gox')); $I->assertTrue($I->grabDataFromJsonResponse('success')); $I->assertNotEmpty($I->grabDataFromJsonResponse('data')); $I->sendPOST($ajaxUrl, array(\PostPage::$commentTextArea => 'Sample comment')); $I->assertFalse($I->grabDataFromJsonResponse('success')); $I->assertNotEmpty($I->grabDataFromJsonResponse('errors')); $I->sendPOST($ajaxUrl, array(\PostPage::$commentUsernameField => 'Fuy Gox')); $I->assertFalse($I->grabDataFromJsonResponse('success')); $I->assertNotEmpty($I->grabDataFromJsonResponse('errors')); $I->amOnPage(\LoginPage::$url); $I->submitForm(\LoginPage::$formSelector, array(\LoginPage::$loginField => Fixtures::get('data:users[0]:login'), \LoginPage::$passwordField => Fixtures::get('data:users[0]:password'))); $I->sendPost($ajaxUrl, array(\PostPage::$commentTextArea => 'Sample comment')); $I->assertTrue($I->grabDataFromJsonResponse('success')); $I->assertNotEmpty($I->grabDataFromJsonResponse('data'));
<?php use Codeception\Util\Fixtures; /** @type \Codeception\Scenario $scenario */ $scenario->groups('api', 'ajax'); \Yii::app()->fixtureManager->prepare(); $I = new ApiGuy($scenario); $I->wantTo('Save category via ajax call'); $url = \Yii::app()->createUrl('category/ajaxSave'); $uniqueName = md5(microtime()); $I->assertNull(\Category::model()->findBySlug($uniqueName)); $I->amOnPage(\LoginPage::$url); $I->submitForm(\LoginPage::$formSelector, array(\LoginPage::$loginField => Fixtures::get('data:users[0]:login'), \LoginPage::$passwordField => Fixtures::get('data:users[0]:password'))); $I->sendPOST($url, array('Category[name]' => $uniqueName, 'Category[slug]' => $uniqueName)); $I->seeResponseCodeIs(200); $id = $I->grabDataFromJsonResponse('data.id'); $slug = $I->grabDataFromJsonResponse('data.slug'); $I->assertNotNull($category = \Category::model()->findBySlug($uniqueName)); $I->assertEquals($id, $category->id); $I->assertEquals($slug, $category->slug); $uniqueName = md5(microtime()); $I->sendPOST($url, array('Category[id]' => $id, 'Category[name]' => $uniqueName, 'Category[slug]' => $uniqueName)); $I->assertEquals($id, $I->grabDataFromJsonResponse('data.id')); $I->assertNotNull($category = \Category::model()->findBySlug($uniqueName)); $I->assertEquals($category->id, $I->grabDataFromJsonResponse('data.id')); $I->assertEquals($uniqueName, $I->grabDataFromJsonResponse('data.slug')); $I->sendPOST($url, array('Category[name]' => $uniqueName, 'Category[slug]' => $uniqueName)); $I->assertNotEquals($id, $I->grabDataFromJsonResponse('data.id')); $I->assertEquals($uniqueName . '-1', $I->grabDataFromJsonResponse('data.slug')); $I->sendPOST($url, array('Category[slug]' => $uniqueName)); $I->assertFalse($I->grabDataFromJsonResponse('success'));