PageRenderTime 41ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/moriarty/tests/facetservice.test.php

https://github.com/kwijibo/trafficscotland-linkeddata
PHP | 100 lines | 74 code | 26 blank | 0 comment | 0 complexity | a35386e726498264cd92fae1eec4c9a9 MD5 | raw file
  1. <?php
  2. require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'constants.inc.php';
  3. require_once MORIARTY_TEST_DIR . 'fakecredentials.class.php';
  4. require_once MORIARTY_DIR . 'facetservice.class.php';
  5. class FacetServiceTest extends PHPUnit_Framework_TestCase {
  6. function test_facets_gets_to_service_uri() {
  7. $fake_request_factory = new FakeRequestFactory();
  8. $fake_request = new FakeHttpRequest( new HttpResponse() );
  9. $fake_request_factory->register('GET', "http://example.org/store/services/facet?query=dog&fields=subject&top=10&output=xml", $fake_request );
  10. $ss = new FacetService("http://example.org/store/services/facet");
  11. $ss->request_factory = $fake_request_factory;
  12. $response = $ss->facets( 'dog', array('subject') );
  13. $this->assertTrue( $fake_request->was_executed() );
  14. }
  15. function test_facets_sets_accept() {
  16. $fake_request_factory = new FakeRequestFactory();
  17. $fake_request = new FakeHttpRequest( new HttpResponse() );
  18. $fake_request_factory->register('GET', "http://example.org/store/services/facet?query=dog&fields=subject&top=10&output=xml", $fake_request );
  19. $ss = new FacetService("http://example.org/store/services/facet");
  20. $ss->request_factory = $fake_request_factory;
  21. $response = $ss->facets( 'dog', array('subject') );
  22. $this->assertTrue( in_array('Accept: application/xml', $fake_request->get_headers() ) );
  23. }
  24. function test_facets_uses_fields() {
  25. $fake_request_factory = new FakeRequestFactory();
  26. $fake_request = new FakeHttpRequest( new HttpResponse() );
  27. $fake_request_factory->register('GET', "http://example.org/store/services/facet?query=dog&fields=subject%2Ctag%2Cyear&top=10&output=xml", $fake_request );
  28. $ss = new FacetService("http://example.org/store/services/facet");
  29. $ss->request_factory = $fake_request_factory;
  30. $response = $ss->facets( 'dog', array('subject', 'tag', 'year') );
  31. $this->assertTrue( $fake_request->was_executed() );
  32. }
  33. function test_facets_uses_top() {
  34. $fake_request_factory = new FakeRequestFactory();
  35. $fake_request = new FakeHttpRequest( new HttpResponse() );
  36. $fake_request_factory->register('GET', "http://example.org/store/services/facet?query=dog&fields=subject&top=16&output=xml", $fake_request );
  37. $ss = new FacetService("http://example.org/store/services/facet");
  38. $ss->request_factory = $fake_request_factory;
  39. $response = $ss->facets( 'dog', array('subject'), 16 );
  40. $this->assertTrue( $fake_request->was_executed() );
  41. }
  42. function test_facets_to_array() {
  43. $fake_response = new HttpResponse();
  44. $fake_response->status_code = 200;
  45. $fake_response->body = '<facet-results xmlns="http://schemas.talis.com/2007/facet-results#"><head><query>dog</query><fields>tag</fields><top>10</top><output>xml</output></head><fields><field name="tag"><term value="dogs" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22dogs%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22dogs%22" /><term value="walking" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22walking%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22walking%22" /><term value="pets" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22pets%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22pets%22" /></field></fields></facet-results>';
  46. $fake_request_factory = new FakeRequestFactory();
  47. $fake_request = new FakeHttpRequest( $fake_response );
  48. $fake_request_factory->register('GET', "http://example.org/store/services/facet?query=dog&fields=tag&top=10&output=xml", $fake_request );
  49. $ss = new FacetService("http://example.org/store/services/facet");
  50. $ss->request_factory = $fake_request_factory;
  51. $facets = $ss->facets_to_array( 'dog', array('subject') );
  52. $this->assertTrue( is_array( $facets ) );
  53. }
  54. function test_parse_facet_xml_returns_array() {
  55. $xml = '<facet-results xmlns="http://schemas.talis.com/2007/facet-results#"><head><query>dog</query><fields>tag</fields><top>10</top><output>xml</output></head><fields><field name="tag"><term value="dogs" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22dogs%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22dogs%22" /><term value="walking" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22walking%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22walking%22" /><term value="pets" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22pets%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22pets%22" /></field></fields></facet-results>';
  56. $ss = new FacetService("http://example.org/store/services/facet");
  57. $facets = $ss->parse_facet_xml( $xml );
  58. $this->assertTrue( is_array( $facets ) );
  59. }
  60. function test_parse_facet_xml_parses_facets() {
  61. $xml = '<facet-results xmlns="http://schemas.talis.com/2007/facet-results#"><head><query>dog</query><fields>tag</fields><top>10</top><output>xml</output></head><fields><field name="tag"><term value="dogs" number="5" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22dogs%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22dogs%22" /><term value="walking" number="2" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22walking%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22walking%22" /><term value="pets" number="1" facet-uri="http://api.talis.com/stores/kniblet-dev1/services/facet?fields=tag&amp;top=10&amp;output=xml&amp;query=dog+AND+tag%3A%22pets%22" search-uri="http://api.talis.com/stores/kniblet-dev1/items?query=dog+AND+tag%3A%22pets%22" /></field></fields></facet-results>';
  62. $ss = new FacetService("http://example.org/store/services/facet");
  63. $facets = $ss->parse_facet_xml( $xml );
  64. $this->assertEquals( 1, count( $facets ) );
  65. $this->assertEquals( 3, count( $facets['tag'] ) );
  66. $this->assertEquals( 'dogs', $facets['tag'][0]['value'] );
  67. $this->assertEquals( 'walking', $facets['tag'][1]['value'] );
  68. $this->assertEquals( 'pets', $facets['tag'][2]['value'] );
  69. $this->assertEquals( '5', $facets['tag'][0]['number'] );
  70. $this->assertEquals( '2', $facets['tag'][1]['number'] );
  71. $this->assertEquals( '1', $facets['tag'][2]['number'] );
  72. }
  73. }
  74. ?>