Todar Posted August 4, 2021 Share Posted August 4, 2021 I have to pass the date in one of the step as current date and compare that, but failing to achieve that test case is "And the URL "<>" contains the following: "Measure name","Business description","Technical description","Data Sources",Reports,"Authored by","Last publish date" "First Test Measure","business Lorem Ipsum is simply","technical Lorem Ipsum is",CHRISS,First Test Report,, Here one of the parameter is "Last publish date" so I have to give it as it should be comes up as current date. I am trying to give the date [[now:j F Y], but it is not working. Below is the function written for it, what change I have to do so it can have the date as well. /** * Download a url and verify the contents. * * @throws \Exception * When the file contents don't match. * * @Then the URL :url contains the following: */ public function assertUrlContent(string $url, PyStringNode $content): void { $cookies = $this->getSession()->getDriver()->getWebDriverSession()->getCookie()[0]; $cookie = new SetCookie(); $cookie->setName($cookies['name']); $cookie->setValue($cookies['value']); $cookie->setDomain($cookies['domain']); $jar = new CookieJar(); $jar->setCookie($cookie); $client = new Client(); $res = $client->request('GET', $url, [ 'cookies' => $jar, 'verify' => FALSE, ]); $expected_string = preg_replace('/\r/', '', (string) $content); $actual_string = $res->getBody()->getContents(); if ($expected_string !== $actual_string) { print_r('Expected String: ' . PHP_EOL . $expected_string . PHP_EOL); print_r('Actual String: ' . PHP_EOL . $actual_string); throw new \Exception('Contents of download do not match'); } } Quote Link to comment https://forums.phpfreaks.com/topic/313491-how-to-pass-the-date-in-preg_replace-as-regex-and-use-that-in-test-case-for-behat-php/ Share on other sites More sharing options...
requinix Posted August 4, 2021 Share Posted August 4, 2021 5 hours ago, Todar said: I have to pass the date What date? 5 hours ago, Todar said: in one of the step What step? 5 hours ago, Todar said: as current date and compare that, Compare to what? 5 hours ago, Todar said: but failing to achieve that test case What test case? 5 hours ago, Todar said: is "And the URL "<>" contains the following: ...What? 5 hours ago, Todar said: "Measure name","Business description","Technical description","Data Sources",Reports,"Authored by","Last publish date" "First Test Measure","business Lorem Ipsum is simply","technical Lorem Ipsum is",CHRISS,First Test Report,, So that's CSV? 5 hours ago, Todar said: Here one of the parameter is "Last publish date" so I have to give it as it should be comes up as current date. I am trying to give the date [[now:j F Y], but it is not working. What does "not working" mean? What does it does? What does it not do? What do you expect to see and what do you actually see? 5 hours ago, Todar said: Below is the function written for it, what change I have to do so it can have the date as well. Can you try posting the code again so that it's not all on one line? Quote Link to comment https://forums.phpfreaks.com/topic/313491-how-to-pass-the-date-in-preg_replace-as-regex-and-use-that-in-test-case-for-behat-php/#findComment-1588844 Share on other sites More sharing options...
Todar Posted August 5, 2021 Author Share Posted August 5, 2021 This is the code given below /** * Download a url and verify the contents. * * @throws \Exception * When the file contents don't match. * * @Then the URL :url contains the following: */ public function assertUrlContent(string $url, PyStringNode $content): void { $cookies = $this->getSession()->getDriver()->getWebDriverSession()->getCookie()[0]; $cookie = new SetCookie(); $cookie->setName($cookies['name']); $cookie->setValue($cookies['value']); $cookie->setDomain($cookies['domain']); $jar = new CookieJar(); $jar->setCookie($cookie); $client = new Client(); $res = $client->request('GET', $url, [ 'cookies' => $jar, 'verify' => FALSE, ]); $expected_string = preg_replace('/\r/', '', (string) $content); $actual_string = $res->getBody()->getContents(); if ($expected_string !== $actual_string) { print_r('Expected String: ' . PHP_EOL . $expected_string . PHP_EOL); print_r('Actual String: ' . PHP_EOL . $actual_string); throw new \Exception('Contents of download do not match'); } } in one case i have to compare the data of csv and on of the item is date that i have give on. test case is And the URL "https://test2-portal.dev.local/data/measure-definitions.csv?title=&;report_nid=&;field_data_source_target_id=All" contains the following: """ "Measure name","Business description","Technical description","Data Sources",Reports,"Authored by", "Published date" "First Test Measure","business Lorem Ipsum is simply","technical Lorem Ipsum is",CHRISS,,, "Second Test Measure","business Lorem Ipsum is simply","technical Lorem Ipsum is",PHESS,,, """ and so my question what are ways to calculate the Published date as current date as expected dataand in which format I should enter it. I want to what changes I need to make in $expected_string = preg_replace('/\r/', '', (string) $content); so it calculate the current date in the expected string. Quote Link to comment https://forums.phpfreaks.com/topic/313491-how-to-pass-the-date-in-preg_replace-as-regex-and-use-that-in-test-case-for-behat-php/#findComment-1588859 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.