1
0

Test-Selenium-Remote-Driver.t 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. #!/usr/bin/env perl
  2. use Test::Tester;
  3. use Test::More;
  4. use Test::MockObject;
  5. use Test::MockObject::Extends;
  6. use Test::Selenium::Remote::Driver;
  7. use Selenium::Remote::WebElement;
  8. # Temporarily override the 'new()' in the parent class, so that it doesn't try to make network connections.
  9. sub Selenium::Remote::Driver::new {
  10. my ( $class, %args ) = @_;
  11. my $self = {
  12. remote_server_addr => delete $args{remote_server_addr} || 'localhost',
  13. browser_name => delete $args{browser_name} || 'firefox',
  14. platform => delete $args{platform} || 'ANY',
  15. port => delete $args{port} || '4444',
  16. version => delete $args{version} || '',
  17. webelement_class => delete $args{webelement_class} || "Selenium::Remote::WebElement",
  18. default_finder => delete $args{default_finder} || 'xpath',
  19. session_id => undef,
  20. remote_conn => undef,
  21. auto_close => 1, # by default we will close remote session on DESTROY
  22. pid => $$
  23. };
  24. bless $self, $class or die "Can't bless $class: $!";
  25. }
  26. # Start off by faking a bunch of Selenium::Remote::Driver calls succeeding
  27. my $successful_driver = Test::Selenium::Remote::Driver->new;
  28. $successful_driver = Test::MockObject::Extends->new( $successful_driver );
  29. my $element = Test::Selenium::Remote::WebElement->new(
  30. id => '1342835311100',
  31. parent => $successful_driver,
  32. );
  33. # find_element_ok
  34. {
  35. $successful_driver->mock('find_element', sub { $element } );
  36. check_tests(
  37. sub {
  38. my $rc = $successful_driver->find_element_ok('q', 'find_element_ok works');
  39. is($rc,1,'returns true');
  40. },
  41. [
  42. {
  43. ok => 1,
  44. name => "find_element_ok works",
  45. diag => "",
  46. },
  47. {
  48. ok => 1,
  49. name => "returns true",
  50. diag => "",
  51. },
  52. ]
  53. );
  54. $successful_driver->mock('find_element', sub { 0 } );
  55. check_tests(
  56. sub {
  57. my $rc = $successful_driver->find_element_ok('q', 'find_element_ok works, falsey test');
  58. is($rc,0,'returns false');
  59. },
  60. [
  61. {
  62. ok => 0,
  63. name => "find_element_ok works, falsey test",
  64. diag => "",
  65. },
  66. {
  67. ok => 1,
  68. name => "returns false",
  69. diag => "",
  70. },
  71. ]
  72. );
  73. }
  74. # find_no_element_ok
  75. {
  76. $successful_driver->mock('find_element', sub { die } );
  77. check_tests(
  78. sub {
  79. my $rc = $successful_driver->find_no_element_ok('BOOM', 'find_no_element_ok works, expecting to find nothing.');
  80. is($rc,1,'returns true');
  81. },
  82. [
  83. {
  84. ok => 1,
  85. name => "find_no_element_ok works, expecting to find nothing.",
  86. diag => "",
  87. },
  88. {
  89. ok => 1,
  90. name => "returns false",
  91. diag => "",
  92. },
  93. ]
  94. );
  95. }
  96. done_testing();