<< Masa.20101124-update-rpdf2txt-debug-import_gkv | 2010 | Masa.20101119-create-grant_download-command-de_oddb_org >>
selenium
lib/oddb/html/state/global.rb#grant_download
selenium or divide method
lib/oddb/html/view/download.rb#to_html
Refereces
Updated methods
test/business/test_grant_download.rb
#!/usr/bin/env ruby # Business::TestGrantDownload -- de.oddb.org -- 22.11.2011 -- mhatakeyama@ywesee.com $: << File.expand_path('../../lib', File.dirname(__FILE__)) require 'flexmock' require 'test/unit' require 'oddb/business/grant_download' module ODDB module Business class TestGrantDownload < Test::Unit::TestCase include FlexMock::TestCase def test_grant_download end def test_expired? end end end end
Confirm test pass
masa@masa ~/ywesee/de.oddb.org $ ruby test/business/test_grant_download.rb Loaded suite test/business/test_grant_download Started .. Finished in 0.000161 seconds. 2 tests, 0 assertions, 0 failures, 0 errors
Update testcases
#!/usr/bin/env ruby # Business::TestGrantDownload -- de.oddb.org -- 22.11.2011 -- mhatakeyama@ywesee.com $: << File.expand_path('../../lib', File.dirname(__FILE__)) require 'test/unit' require 'oddb/business/grant_download' module ODDB module Business class TestGrantDownload < Test::Unit::TestCase def setup @user = GrantDownload.new('aaa@bbb.ccc') @user.grant_download('test1.dat', Time.local(1999,12,31)) @user.grant_download('test2.dat', Time.local(2999,12,31)) end def test_grant_download assert_equal(@user.grant_list.length, 2) assert_equal(@user.grant_list['test1.dat'], Time.local(1999,12,31)) end def test_expired? assert_equal(@user.expired?('test1.dat'), true) assert_equal(@user.expired?('test2.dat'), false) assert_equal(@user.expired?('test3.dat'), true) end end end end
Test
masa@masa ~/ywesee/de.oddb.org $ ruby test/business/test_grant_download.rb Loaded suite test/business/test_grant_download Started .. Finished in 0.000289 seconds. 2 tests, 5 assertions, 0 failures, 0 errors
test/util/test_server.rb
... def test_grant_download end ...
Check test pass
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_server.rb /home/masa/ywesee/de.oddb.org/lib/oddb/html/view/drugs/package.rb:373: warning: parenthesize argument(s) for future version Loaded suite test/util/test_server Started .... Finished in 0.014745 seconds. 4 tests, 9 assertions, 0 failures, 0 errors
Update testcases
def test_grant_download__1 # Case: Usage usage = "Usage:\n" + " Set grant: grant_download 'email address', 'file', Time.local(20yy,mm,dd)\n" + " Show grant: grant_download 'email address'\n" assert_equal(usage, @server.grant_download) end def test_grant_download__2 # Case: No registration flexstub(ODDB::Business::GrantDownload).should_receive(:find_by_email).and_return(nil) assert_equal('No registration for aaa@bbb.ccc', @server.grant_download('aaa@bbb.ccc')) end def test_grant_download__3 # Case: Find a registration case hash = { 'test1.dat' => Time.local(2000,1,1), 'test2.dat' => Time.local(2001,1,1) } flexstub(ODDB::Business::GrantDownload).should_receive(:find_by_email).and_return do flexmock do |user| user.should_receive(:grant_list).and_return(hash) user.should_receive(:uid).and_return('123') end end result = "grant list(total:2): odba_id: 123\n20010101, test2.dat\n20000101, test1.dat" assert_equal(result, @server.grant_download('aaa@bbb.ccc')) end def test_grant_download__3 # Case: Registration email = 'aaa@bbb.ccc' file = 'test.dat' expiry_time = Time.local(2010,12,31) flexstub(ODDB::Business::GrantDownload) do |klass| klass.should_receive(:find_by_email).with(email) klass.should_receive(:new).with(email).and_return do flexmock('grant_download object') do |user| user.should_receive(:grant_download).with(file, expiry_time) user.should_receive(:save) end end end ODDB.config.http_server = 'http://de.oddb.org' result = "http://de.oddb.org/de/temp/grant_download/email/aaa@bbb.ccc/file/test.dat" assert_equal(result, @server.grant_download('aaa@bbb.ccc', 'test.dat', Time.local(2010,12,31))) end
Test
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_server.rb /home/masa/ywesee/de.oddb.org/lib/oddb/html/view/drugs/package.rb:373: warning: parenthesize argument(s) for future version Loaded suite test/util/test_server Started ...... Finished in 0.022312 seconds. 6 tests, 12 assertions, 0 failures, 0 errors
def test_on_weekday end
Confirm test pass
masa@masa ~/ywesee/de.oddb.org $ ruby test/export/test_server.rb /home/masa/ywesee/de.oddb.org/lib/oddb/export/yaml.rb:119: undefined method `export' for ODDB::Text::Document:Class (NoMethodError) from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /home/masa/ywesee/de.oddb.org/lib/oddb/persistence/odba/export.rb:5 from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /home/masa/ywesee/de.oddb.org/lib/oddb/export/server.rb:7 from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from test/export/test_server.rb:9
Note
Error!!
Search when this error happened for the first time
There is no error
masa@masa ~/work/de.oddb.org $ git checkout a430198f322d681c36894c1331c655763a8d36d8 Previous HEAD position was 8053d91... Export Fachinfos to yaml HEAD is now at a430198... Correct command-line arguments for pharmnet-updater job. masa@masa ~/work/de.oddb.org $ ruby test/export/test_server.rb [DEPRECATED] By requiring 'spreadsheet/excel' you are loading a Compatibility layer which provides a drop-in replacement for Spreadsheet::Excel versions <= 0.3.5.1. This code will be removed in Spreadsheet version 1.0.0 Loaded suite test/export/test_server Started ..... Finished in 0.006692 seconds. 5 tests, 18 assertions, 0 failures, 0 errors
Error happens
masa@masa ~/work/de.oddb.org $ git checkout 8053d913db718b1506afc0f9d81d762cc2b7023a Previous HEAD position was a430198... Correct command-line arguments for pharmnet-updater job. HEAD is now at 8053d91... Export Fachinfos to yaml masa@masa ~/work/de.oddb.org $ ruby test/export/test_server.rb [DEPRECATED] By requiring 'spreadsheet/excel' you are loading a Compatibility layer which provides a drop-in replacement for Spreadsheet::Excel versions <= 0.3.5.1. This code will be removed in Spreadsheet version 1.0.0 /home/masa/work/de.oddb.org/lib/oddb/export/yaml.rb:119: undefined method `export' for ODDB::Text::Document:Class (NoMethodError) from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from /home/masa/work/de.oddb.org/lib/oddb/export/server.rb:8 from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' from /usr/lib64/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' from test/export/test_server.rb:9
suspend
Focus only on test_on_weekday
def test_on_weekday end
Confirm test pass
masa@masa ~/ywesee/de.oddb.org $ ruby test/export/test_server.rb [DEPRECATED] By requiring 'spreadsheet/excel' you are loading a Compatibility layer which provides a drop-in replacement for Spreadsheet::Excel versions <= 0.3.5.1. This code will be removed in Spreadsheet version 1.0.0 Loaded suite test/export/test_server Started . Finished in 0.000221 seconds. 1 tests, 0 assertions, 0 failures, 0 errors
Update testcase
def test_on_weekday called = false Server.on_weekday(0, Date.new(2010,11,22)) { called = true } assert_equal(false, called, "Should not have called the block: 0 != 1") Server.on_weekday(0, Date.new(2010,11,21)) { called = true } assert_equal(true, called, "Should have called the block: 0 == 0") called = false Server.on_weekday(Date.today.wday) { called = true } assert_equal(true, called, "Should have called the block: defaults to today") end
Test
masa@masa ~/ywesee/de.oddb.org $ ruby test/export/test_server.rb [DEPRECATED] By requiring 'spreadsheet/excel' you are loading a Compatibility layer which provides a drop-in replacement for Spreadsheet::Excel versions <= 0.3.5.1. This code will be removed in Spreadsheet version 1.0.0 Loaded suite test/export/test_server Started . Finished in 0.000702 seconds. 1 tests, 3 assertions, 0 failures, 0 errors
def def test_report_download end
Confirm test pass
masa@masa ~/ywesee/de.oddb.org $ ruby test/export/test_server.rb [DEPRECATED] By requiring 'spreadsheet/excel' you are loading a Compatibility layer which provides a drop-in replacement for Spreadsheet::Excel versions <= 0.3.5.1. This code will be removed in Spreadsheet version 1.0.0 Loaded suite test/export/test_server Started .. Finished in 0.000752 seconds. 2 tests, 3 assertions, 0 failures, 0 errors
Update testcase
def test_report_download__1 # Case: there is no log file flexstub(File) do |klass| klass.should_receive(:join) klass.should_receive(:readlines).and_raise(StandardError) end subject = sprintf("de.ODDB.org Report - Download-Statistics - %s", Time.now.strftime('%m/%Y')) lines = /Nothing/ flexstub(Util::Mail).should_receive(:notify_admins).with(subject, lines) assert_nothing_raised do Server.report_download end end def test_report_download__2 # Case: there is a log file subject = sprintf("de.ODDB.org Report - Download-Statistics - %s", Time.now.strftime('%m/%Y')) lines = 'test report' flexstub(File) do |klass| klass.should_receive(:join) klass.should_receive(:readlines).and_return(lines) end flexstub(Util::Mail).should_receive(:notify_admins).with(subject, lines) assert_nothing_raised do Server.report_download end end
Test
masa@masa ~/ywesee/de.oddb.org $ ruby test/export/test_server.rb [DEPRECATED] By requiring 'spreadsheet/excel' you are loading a Compatibility layer which provides a drop-in replacement for Spreadsheet::Excel versions <= 0.3.5.1. This code will be removed in Spreadsheet version 1.0.0 Loaded suite test/export/test_server Started ... Finished in 0.003566 seconds. 3 tests, 5 assertions, 0 failures, 0 errors
suspend
References
sun-jdk install
$ sudo vim /etc/make.conf
ACCEPT_LICENSE="dlj-1.1"
$ sudo vim /etc/portage/package.keywords
dev-java/sun-jdk ~amd64 dev-java/java-config ~amd64 dev-java/java-config-wrapper ~amd64
Install
masa@masa ~/work $ emerge sun-jdk sun-jre-bin -vp These are the packages that would be merged, in order: Calculating dependencies... done! [ebuild N ] dev-java/java-config-wrapper-0.16 8 kB [ebuild N ] dev-java/java-config-2.1.11-r2 60 kB [ebuild N ] dev-java/sun-jdk-1.6.0.22 USE="X alsa -derby -doc -examples -jce -nsplugin -odbc" 81,887 kB [ebuild N ] virtual/jdk-1.6.0 0 kB [ebuild N ] virtual/jre-1.6.0 0 kB [ebuild N ] dev-java/sun-jre-bin-1.6.0.22 USE="X alsa -jce -nsplugin -odbc" 0 kB Total: 6 packages (6 new), Size of downloads: 81,954 kB $ sudo emerge sun-jdk sun-jre-bin masa@masa ~/work $ java -version java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03, mixed mode)
Tutorials (Japanese)
Install Selenium-IDE
How to use Selenium-IDE (Japanese)
1. Start Seleniumu-IDE on Firefox
Tool -> Selenium-IDE
2. Record
3. Re-play
4. Save as Ruby code
Option -> Format -> Ruby (Text/Unit) - Selenium RC File -> Save As
masa@masa ~/work $ cat Testcase.rb require "test/unit" require "rubygems" gem "selenium-client" require "selenium/client" class Testcase < Test::Unit::TestCase def setup @verification_errors = [] @selenium = Selenium::Client::Driver.new \ :host => "localhost", :port => 4444, :browser => "*chrome", :url => "http://www.google.co.jp/", :timeout_in_second => 60 @selenium.start_new_browser_session end def teardown @selenium.close_current_browser_session assert_equal [], @verification_errors end def test_case @selenium.open "/" assert_equal "Google", @selenium.get_title assert @selenium.is_text_present("") @selenium.type "q", "ywesee" @selenium.click "btnG" @selenium.wait_for_page_to_load "30000" assert_equal "ywesee - Google 検索", @selenium.get_title @selenium.click "link=ywesee.com - Home" @selenium.wait_for_page_to_load "30000" assert_equal "ywesee.com - Home", @selenium.get_title end end
5. Test run
masa@masa ~/work $ ruby Testcase.rb Loaded suite Testcase Started Mon Nov 22 16:03:46 +0100 2010 selenium-client received failure from selenium server: requested: cmd=getNewBrowserSession 1=*chrome 2=http://www.google.co.jp/ 3= 4= received: "" called from /usr/lib64/ruby/1.8/timeout.rb:62:in `timeout' E Finished in 0.004025 seconds. 1) Error: test_case(Testcase): Selenium::CommandError: /usr/lib64/ruby/gems/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:13:in `remote_control_command' /usr/lib64/ruby/1.8/timeout.rb:62:in `timeout' /usr/lib64/ruby/1.8/timeout.rb:93:in `timeout' /usr/lib64/ruby/gems/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:11:in `remote_control_command' /usr/lib64/ruby/gems/1.8/gems/selenium-client-1.2.18/lib/selenium/client/protocol.rb:19:in `string_command' /usr/lib64/ruby/gems/1.8/gems/selenium-client-1.2.18/lib/selenium/client/base.rb:85:in `start_new_browser_session' Testcase.rb:17:in `setup' 1 tests, 1 assertions, 0 failures, 1 errors
Note
Error
Check selenium gems
masa@masa ~/work $ gem search selenium -r *** REMOTE GEMS *** rubySelenium (0.0.8) Selenium (1.1.14) selenium (0.0.3) Selenium-Client (0.1) selenium-client (1.2.18) selenium-rc (2.2.4) seleniumrc (0.0.2)
Notes
Try-and-error
masa@masa ~/work $ gem search selenium *** LOCAL GEMS *** Selenium (1.1.14) selenium-client (1.2.18)
Testcase (File -> Save as (Ruby (Unit/Test))
masa@masa ~/work $ cat Testcase.rb require "test/unit" require "rubygems" gem "selenium-client" require "selenium/client" class Testcase < Test::Unit::TestCase def setup @verification_errors = [] @selenium = Selenium::Client::Driver.new \ :host => "localhost", :port => 4444, :browser => "*chrome", :url => "http://www.google.co.jp/", :timeout_in_second => 60 @selenium.start_new_browser_session end def teardown @selenium.close_current_browser_session assert_equal [], @verification_errors end def test_case @selenium.open "/" assert_equal "Google", @selenium.get_title assert @selenium.is_text_present("") @selenium.type "q", "ywesee" @selenium.click "btnG" @selenium.wait_for_page_to_load "30000" assert_equal "ywesee - Google 検索", @selenium.get_title @selenium.click "link=ywesee.com - Home" @selenium.wait_for_page_to_load "30000" assert_equal "ywesee.com - Home", @selenium.get_title end end
Run selenium-server
masa@masa ~/work/test/selenium-server-1.0.3 $ java -jar selenium-server.jar
Test
masa@masa ~/work $ ruby Testcase.rb Loaded suite Testcase Started F Finished in 5.31861 seconds. 1) Failure: test_case(Testcase) [Testcase.rb:32]: <"ywesee - Google \346\244\234\347\264\242"> expected but was <"ywesee - Google-Suche">. 1 tests, 4 assertions, 1 failures, 0 errors
Note
Working!! and it looks good