Source of file AccountPageTest.php
Size: 7,873 Bytes - Last Modified: 2021-12-24T06:35:03+00:00
/var/www/docs.ssmods.com/process/src/tests/php/Page/AccountPageTest.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210 | <?php namespace SilverShop\Tests\Page; use SilverShop\Model\Address; use SilverShop\Page\AccountPage; use SilverShop\Page\AccountPageController; use SilverShop\Tests\ShopTestControllerExtension; use SilverStripe\Control\Controller; use SilverStripe\Control\Director; use SilverStripe\Control\HTTPRequest; use SilverStripe\Dev\FunctionalTest; use SilverStripe\ORM\DataObject; use SilverStripe\Security\Member; use SilverStripe\Security\Security; use SilverStripe\SiteConfig\SiteConfig; use SilverStripe\View\SSViewer; class AccountPageTest extends FunctionalTest { protected static $fixture_file = [ __DIR__ . '/../Fixtures/Pages.yml', __DIR__ . '/../Fixtures/shop.yml', ]; protected static $disable_theme = true; protected static $use_draft_site = true; /** * @var AccountPage */ protected $accountpage; /** * @var AccountPageController */ protected $controller; public function setUp() { parent::setUp(); Controller::add_extension(ShopTestControllerExtension::class); $this->accountpage = $this->objFromFixture(AccountPage::class, "accountpage"); $this->controller = new AccountPageController($this->accountpage); $r = new HTTPRequest('GET', '/'); $r->setSession($this->session()); $this->controller->setRequest($r); } public function testCanViewAccountPage() { $page = $this->get("account/"); // attempt to access the Account Page $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $this->assertTrue( $page->getHeader('X-TestPageClass') == Security::class && $page->getHeader('X-TestPageAction') == 'login', 'Need to login before accessing the account page' ); // login using form $this->submitForm( "MemberLoginForm_LoginForm", "action_doLogin", array( 'Email' => 'test@example.com', 'Password' => '23u90oijlJKsa', ) ); $page = $this->get("account/"); // try accessing the account page again $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $this->assertEquals(AccountPageController::class, $page->getHeader('X-TestPageClass'), "Account Page should open"); } public function testGlobals() { $this->assertFalse($this->accountpage->canCreate(), "account page exists"); $this->assertEquals(Director::baseURL() . "account/", AccountPage::find_link()); $this->assertEquals(Director::baseURL() . "account/order/10", AccountPage::get_order_link(10)); } public function testAddressBook() { $member = $this->objFromFixture(Member::class, "joebloggs"); $this->logInAs($member); $address = $this->objFromFixture(Address::class, "foobar"); $address->MemberID = $member->ID; $address->write(); $this->controller->init(); $forms = $this->controller->addressbook(); $createform = $forms['CreateAddressForm']; $defaultform = $forms['DefaultAddressForm']; $this->assertTrue($member->AddressBook()->exists()); $this->assertTrue((boolean)$createform, "Create form exists"); $this->assertTrue((boolean)$defaultform, "Default form exists"); //$this->controller->saveaddresses($data, $createform); //$this->controller->savedefaultaddresses($data, $defaultform); $this->markTestIncomplete("save address and save default"); } public function testAddressBookWithDropdownFieldToSelectCountry() { $this->useTestTheme(realpath(__DIR__ . '/../'), 'shoptest', function () { $member = $this->objFromFixture(Member::class, "joebloggs"); $this->logInAs($member); // Open Address Book page $page = $this->get("account/addressbook/"); // goto address book page $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $this->assertEquals(AccountPageController::class, $page->getHeader('X-TestPageClass'), "Account page should open"); $this->assertEquals('addressbook', $page->getHeader('X-TestPageAction'), "Account addressbook should open"); // Create an address $data = array( "Country" => "AU", "Address" => "Sydney Opera House", "AddressLine2" => "Bennelong Point", "City" => "Sydney", "State" => "NSW", "PostalCode" => "2000", "Phone" => "1234 5678", ); $this->submitForm("Form_CreateAddressForm", "action_saveaddress", $data); $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $au_address = Address::get()->filter('PostalCode', '2000')->sort('ID')->last(); $this->assertEquals( "AU", $au_address->Country, "New address successfully saved, using dropdown to select the country" ); $this->assertEquals( "Sydney Opera House", $au_address->Address, "Ensure that the Address is the Sydney Opera House" ); }); } public function testAddressBookWithReadonlyFieldForCountry() { $this->useTestTheme(realpath(__DIR__ . '/../'), 'shoptest', function () { $member = $this->objFromFixture(Member::class, "joebloggs"); $this->logInAs($member); // setup a single-country site $siteconfig = DataObject::get_one(SiteConfig::class); $siteconfig->AllowedCountries = '["NZ"]'; $siteconfig->write(); $singlecountry = SiteConfig::current_site_config(); $this->assertEquals( "NZ", $singlecountry->getSingleCountry(), "Confirm that the website is setup as a single country site" ); // Open the Address Book page to test form submission with a readonly field $page = $this->get("account/addressbook/"); // goto address book page $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $this->assertContains( "Form_CreateAddressForm_Country_readonly", $page->getBody(), "The Country field is readonly" ); $this->assertNotContains( "<option value=\"NZ\">New Zealand</option>", $page->getBody(), "Dropdown field is not shown" ); // Create an address $data = array( "Address" => "234 Hereford Street", "City" => "Christchurch", "State" => "Canterbury", "PostalCode" => "8011", ); $this->submitForm("Form_CreateAddressForm", "action_saveaddress", $data); $this->assertEquals(200, $page->getStatusCode(), "a page should load"); $nz_address = Address::get()->filter('PostalCode', '8011')->sort('ID')->last(); $this->assertEquals( "NZ", $nz_address->Country, "New address successfully saved; even with a Country readonly field in the form" ); $this->assertEquals( "234 Hereford Street", $nz_address->Address, "Ensure that the Address is 234 Hereford Street" ); }); } public function testEditProfile() { //$this->controller->editprofile(); //$this->controller->EditAccountForm(); //$this->controller->ChangePasswordForm(); $this->markTestIncomplete("Add some assertions"); } } |