<< Masa.20100914-test-import_gkv | 2010 | Masa.20100910-import_gkv-error >>
Nothing to Report. Errno::ENOENT No such file or directory - /var/www/oddb.org/log/download/2010/09.log /var/www/oddb.org/src/util/exporter.rb:274:in `read' /var/www/oddb.org/src/util/exporter.rb:274:in `mail_stats' /var/www/oddb.org/src/util/exporter.rb:220:in `mail_download_stats' /var/www/oddb.org/src/util/exporter.rb:289:in `call' /var/www/oddb.org/src/util/exporter.rb:289:in `safe_export' /var/www/oddb.org/src/util/exporter.rb:219:in `mail_download_stats' /var/www/oddb.org/src/util/exporter.rb:45:in `run' /var/www/oddb.org/src/util/schedule.rb:14:in `call' /var/www/oddb.org/src/util/schedule.rb:14:in `run_on_weekday' /var/www/oddb.org/src/util/exporter.rb:44:in `run' /var/www/oddb.org/jobs/export_daily:13 /var/www/oddb.org/src/util/job.rb:17:in `call' /var/www/oddb.org/src/util/job.rb:17:in `run' /var/www/oddb.org/jobs/export_daily:12
This is not an error.
This is not an error. This means there was nothing donwloaded during the week. That is why it says "Nothing to report.
ruby test/util/test_updater.rb
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started FFF Finished in 0.030296 seconds. 1) Failure: test_run(ODDB::Util::TestUpdater) [test/util/test_updater.rb:55:in `test_run' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `popen' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:150:in `run_logged_job' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:136:in `run' test/util/test_updater.rb:57:in `test_run']: in mock 'flexmock(Class)': <"/home/masa/ywesee/de.oddb.org/jobs/import_gkv log_file=/home/masa/ywesee/de.oddb.org/log/import_gkv"> expected but was <"/home/masa/ywesee/de.oddb.org/jobs/import_dimdi log_file=/home/masa/ywesee/de.oddb.org/log/import_dimdi">. 2) Failure: test_run__errors(ODDB::Util::TestUpdater) [test/util/test_updater.rb:78]: <RuntimeError> exception expected but was Class: <Test::Unit::AssertionFailedError> Message: <"in mock 'flexmock(Class)': <\"/home/masa/ywesee/de.oddb.org/jobs/import_gkv log_file=/home/masa/ywesee/de.oddb.org/log/import_gkv\"> expected but was\n<\"/home/masa/ywesee/de.oddb.org/jobs/import_dimdi log_file=/home/masa/ywesee/de.oddb.org/log/import_dimdi\">."> ---Backtrace--- test/util/test_updater.rb:76:in `test_run__errors' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `popen' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:150:in `run_logged_job' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:136:in `run' test/util/test_updater.rb:79:in `test_run__errors' test/util/test_updater.rb:78:in `test_run__errors' --------------- 3) Failure: test_run__later_errors(ODDB::Util::TestUpdater) [test/util/test_updater.rb:102:in `test_run__later_errors' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `popen' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:150:in `run_logged_job' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:136:in `run' test/util/test_updater.rb:105:in `test_run__later_errors' test/util/test_updater.rb:104:in `test_run__later_errors']: in mock 'flexmock(Class)': <"/home/masa/ywesee/de.oddb.org/jobs/import_gkv log_file=/home/masa/ywesee/de.oddb.org/log/import_gkv"> expected but was <"/home/masa/ywesee/de.oddb.org/jobs/import_dimdi log_file=/home/masa/ywesee/de.oddb.org/log/import_dimdi">. 3 tests, 3 assertions, 3 failures, 0 errors
Search the commit that has not failure and no error.
2 Failures
3 Failures
3 Errors
4 Errors
3 Failures
3 Failures
This is the same Failures as the latest commit.
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started F Finished in 0.021089 seconds. 1) Failure: test_run(ODDB::Util::TestUpdater) [test/util/test_updater.rb:55:in `test_run' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `popen' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:150:in `run_logged_job' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:136:in `run' test/util/test_updater.rb:57:in `test_run']: in mock 'flexmock(Class)': <"/home/masa/ywesee/de.oddb.org/jobs/import_gkv log_file=/home/masa/ywesee/de.oddb.org/log/import_gkv"> expected but was <"/home/masa/ywesee/de.oddb.org/jobs/import_dimdi log_file=/home/masa/ywesee/de.oddb.org/log/import_dimdi">. 1 tests, 1 assertions, 1 failures, 0 errors
Modified
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' #cmds = %w{import_gkv import_pharmnet import_whocc} cmds = %w{import_dimdi import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started F Finished in 0.021333 seconds. 1) Failure: test_run(ODDB::Util::TestUpdater) [/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/validators.rb:40:in `validate' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:123:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:64:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:76:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:74:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:41:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:32:in `flexmock_teardown' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/test_unit_integration.rb:37:in `teardown']: in mock 'flexmock(Module)': method 'notify_admins(String, Array)' called incorrect number of times. <3> expected but was <0>. 1 tests, 4 assertions, 1 failures, 0 errors
It says, notify_admins method is NOT called.
Experiment
Modified 2010-05-12 Hannes Wyss We always need to have a Product assigned to a Sequence
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' cmds = %w{import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/work/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/work/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started . Finished in 0.023203 seconds. 1 tests, 6 assertions, 0 failures, 0 errors
Modified the next commit 2010-05-12 Hannes Wyss Add external Job for importing dimdi-data
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' #cmds = %w{import_gkv import_pharmnet import_whocc} cmds = %w{import_dimdi import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/work/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/work/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started F Finished in 0.021399 seconds. 1) Failure: test_run(ODDB::Util::TestUpdater) [/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/validators.rb:40:in `validate' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:123:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:64:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:76:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:74:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:41:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:32:in `flexmock_teardown' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/test_unit_integration.rb:37:in `teardown']: in mock 'flexmock(Module)': method 'notify_admins(String, Array)' called incorrect number of times. <3> expected but was <0>. 1 tests, 4 assertions, 1 failures, 0 errors
Therefore
Diff
diff --git a/lib/oddb/util/updater.rb b/lib/oddb/util/updater.rb index c2b9e82..14a0036 100644 (file) --- a/lib/oddb/util/updater.rb +++ b/lib/oddb/util/updater.rb @@ -119,7 +119,7 @@ module ODDB Mail.notify_admins(subject, lines) end def Updater.run(today = Date.today) - import_dimdi + run_logged_job 'import_dimdi' run_logged_job 'import_gkv' case today.day when 1
Expertiment
lib/oodb/util/updater.rb
def Updater.run(today = Date.today) #import_dimdi #run_logged_job 'import_dimdi' run_logged_job 'import_gkv' case today.day when 1 run_logged_job 'import_pharmnet' run_logged_job 'import_whocc' when 15 update_prices end end
test/util/test_updater.b
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' cmds = %w{import_gkv import_pharmnet import_whocc} #cmds = %w{import_dimdi import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/work/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/work/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started F Finished in 0.021247 seconds. 1) Failure: test_run(ODDB::Util::TestUpdater) [/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/validators.rb:40:in `validate' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:123:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:64:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:76:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:74:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:41:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:32:in `flexmock_teardown' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/test_unit_integration.rb:37:in `teardown']: in mock 'flexmock(Module)': method 'notify_admins(String, Array)' called incorrect number of times. <3> expected but was <0>. 1 tests, 3 assertions, 1 failures, 0 errors
Notes
lib/oddb/util/updater.rb
def Updater.run(today = Date.today) import_dimdi #run_logged_job 'import_dimdi' run_logged_job 'import_gkv' case today.day when 1 run_logged_job 'import_pharmnet' run_logged_job 'import_whocc' when 15 update_prices end end
test/util/test_updater.rb
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' cmds = %w{import_gkv import_pharmnet import_whocc} #cmds = %w{import_dimdi import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/work/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/work/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started . Finished in 0.023362 seconds. 1 tests, 6 assertions, 0 failures, 0 errors
lib/oddb/util/updater.rb
def Updater.import_dimdi p "get-in import_dimdi" if(date = Import::Dimdi.current_date(DIMDI_INDEX)) import_dimdi_substances(date) import_dimdi_galenic_forms(date) import_dimdi_products(date) end end def Updater.import_dimdi_galenic_forms(date) p "get-in import_dimdi_galenic_forms" file = date.strftime("darreichungsformen-%Y%m.xls") Import::Dimdi.download(file) { |io| reported_import(Import::Dimdi::GalenicForm.new(date), io, :filetype => 'XLS') } end def Updater.import_dimdi_products(date) p "get-in import_dimdi_products" file = date.strftime("festbetraege-%Y%m.xls") Import::Dimdi.download(file) { |io| reported_import(Import::Dimdi::Product.new(date), io, :subject => "Update Festbeträge", :filetype => 'XLS') } end def Updater.import_dimdi_substances(date) p "get-in import_dimdi_substances" file = date.strftime("wirkstoffkuerzel-%Y%m.xls") Import::Dimdi.download(file) { |io| reported_import(Import::Dimdi::Substance.new(date), io, :filetype => 'XLS') } end
Result
masa@masa ~/work/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/work/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started "get-in import_dimdi" "get-in import_dimdi_substances" "get-in import_dimdi_galenic_forms" "get-in import_dimdi_products" . Finished in 0.023262 seconds. 1 tests, 6 assertions, 0 failures, 0 errors
lib/oddb/util/updater.rb
def Updater.import_dimdi p "get-in import_dimdi" if(date = Import::Dimdi.current_date(DIMDI_INDEX)) import_dimdi_substances(date) import_dimdi_galenic_forms(date) import_dimdi_products(date) end end def Updater.import_dimdi_galenic_forms(date) p "get-in import_dimdi_galenic_forms" file = date.strftime("darreichungsformen-%Y%m.xls") Import::Dimdi.download(file) { |io| reported_import(Import::Dimdi::GalenicForm.new(date), io, :filetype => 'XLS') } end def Updater.import_dimdi_products(date) p "get-in import_dimdi_products" file = date.strftime("festbetraege-%Y%m.xls") Import::Dimdi.download(file) { |io| reported_import(Import::Dimdi::Product.new(date), io, :subject => "Update Festbeträge", :filetype => 'XLS') } end def Updater.import_dimdi_substances(date) p "get-in import_dimdi_substances" file = date.strftime("wirkstoffkuerzel-%Y%m.xls") Import::Dimdi.download(file) { |io| reported_import(Import::Dimdi::Substance.new(date), io, :filetype => 'XLS') } end def Updater.run(today = Date.today) #import_dimdi run_logged_job 'import_dimdi' run_logged_job 'import_gkv' case today.day when 1 run_logged_job 'import_pharmnet' run_logged_job 'import_whocc' when 15 update_prices end end
test/util/test_updater.rb
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' #cmds = %w{import_gkv import_pharmnet import_whocc} cmds = %w{import_dimdi import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/work/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/work/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started F Finished in 0.021354 seconds. 1) Failure: test_run(ODDB::Util::TestUpdater) [/usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/validators.rb:40:in `validate' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:123:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:122:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:64:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:63:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:76:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:75:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:74:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:41:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `each' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:40:in `flexmock_verify' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/mock_container.rb:32:in `flexmock_teardown' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/test_unit_integration.rb:37:in `teardown']: in mock 'flexmock(Module)': method 'notify_admins(String, Array)' called incorrect number of times. <3> expected but was <0>. 1 tests, 4 assertions, 1 failures, 0 errors
Therefore
lib/oddb/util/updater.rb
def Updater.run_logged_job job dir = ODDB.config.oddb_dir cmd = File.join dir, 'jobs', job log = File.join dir, 'log', job IO.popen "#{cmd} log_file=#{log}" do |io| # wait for importer to exit end end
Notes
def test_run today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return []
Modify the latest commit 2 days ago Masaomi Hatakeyama Possible to add pdf link as command line option to.
test/util/test_updater.rb (Comment out the other method, only test test_run method)
def test_run today = Date.new(2006,10) =begin flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] =end job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' cmds = %w{import_dimdi import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).times(4).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end @updater.run(today) end
Result
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started . Finished in 0.001922 seconds. 1 tests, 4 assertions, 0 failures, 0 errors
Commit locally
masa@masa ~/ywesee/de.oddb.org $ git add test/util/test_updater.rb masa@masa ~/ywesee/de.oddb.org $ git commit -m "clear test_run"
test/util/updater.rb
def test_import_dimdi today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return [] flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return [] @updater.import_dimdi end
Result
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started .. Finished in 0.025893 seconds. 2 tests, 7 assertions, 0 failures, 0 errors
Commit locally
masa@masa ~/ywesee/de.oddb.org $ git add test/util/test_updater.rb masa@masa ~/ywesee/de.oddb.org $ git commit -m "add test_import_dimdi"
Confirm Error
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started .F Finished in 0.023424 seconds. 1) Failure: test_run__errors(ODDB::Util::TestUpdater) [test/util/test_updater.rb:80]: <RuntimeError> exception expected but was Class: <Test::Unit::AssertionFailedError> Message: <"in mock 'flexmock(Class)': <\"/home/masa/ywesee/de.oddb.org/jobs/import_gkv log_file=/home/masa/ywesee/de.oddb.org/log/import_gkv\"> expected but was\n<\"/home/masa/ywesee/de.oddb.org/jobs/import_dimdi log_file=/home/masa/ywesee/de.oddb.org/log/import_dimdi\">."> ---Backtrace--- test/util/test_updater.rb:78:in `test_run__errors' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `popen' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:150:in `run_logged_job' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:136:in `run' test/util/test_updater.rb:81:in `test_run__errors' test/util/test_updater.rb:80:in `test_run__errors' --------------- 2 tests, 5 assertions, 1 failures, 0 errors
Separate it into import_dimdi and the other part
def test_dimdi__errors today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(0) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(1).and_return do |file, block| assert_equal dimdi_files.shift, file raise "connection error" end job_dir = File.join ODDB.config.oddb_dir, 'jobs' log_dir = File.join ODDB.config.oddb_dir, 'log' cmds = %w{import_gkv import_pharmnet import_whocc} flexmock(IO).should_receive(:popen).and_return do |popen, block| cmd = cmds.shift assert_equal "#{job_dir}/#{cmd} log_file=#{log_dir}/#{cmd}", popen end assert_raises RuntimeError do #@updater.run(today) @updater.import_dimdi end end
Result
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started ... Finished in 0.028506 seconds. 3 tests, 8 assertions, 0 failures, 0 errors
Commit locally
masa@masa ~/ywesee/de.oddb.org $ git add test/util/test_updater.rb masa@masa ~/ywesee/de.oddb.org $ git commit -m "add test_import_dimdi__errors"
Confirm error
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started ...F Finished in 0.032832 seconds. 1) Failure: test_run__later_errors(ODDB::Util::TestUpdater) [test/util/test_updater.rb:157:in `test_run__later_errors' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `popen' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:150:in `run_logged_job' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:136:in `run' test/util/test_updater.rb:160:in `test_run__later_errors' test/util/test_updater.rb:159:in `test_run__later_errors']: in mock 'flexmock(Class)': <"/home/masa/ywesee/de.oddb.org/jobs/import_gkv log_file=/home/masa/ywesee/de.oddb.org/log/import_gkv"> expected but was <"/home/masa/ywesee/de.oddb.org/jobs/import_dimdi log_file=/home/masa/ywesee/de.oddb.org/log/import_dimdi">. 4 tests, 9 assertions, 1 failures, 0 errors
This can also be separated into dimdi and the other parts.
def test_import_dimdi__later_errors today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(3) dimdi = flexmock(Import::Dimdi) dimdi.should_receive(:current_date).and_return today #dimdi_files = %w{wirkkurz_011006.xls darform_011006.xls fb_011006.xls} dimdi_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} download = StringIO.new('downloaded from dimdi') dimdi.should_receive(:download).times(3).and_return do |file, block| assert_equal dimdi_files.shift, file block.call download end flexmock(Import::Dimdi::GalenicForm).new_instances.should_receive(:import).with(download).times(1).and_return do raise 'import error' end flexmock(Import::Dimdi::Product).new_instances.should_receive(:import).with(download).times(1).and_return do raise 'import error' end flexmock(Import::Dimdi::Substance).new_instances.should_receive(:import).with(download).times(1).and_return do raise 'import error' end assert_nothing_raised do #@updater.run(today) @updater.import_dimdi end end
Result
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started .... Finished in 0.035044 seconds. 4 tests, 9 assertions, 0 failures, 0 errors
Commit locally
masa@masa ~/ywesee/de.oddb.org $ git add test/util/test_updater.rb masa@masa ~/ywesee/de.oddb.org $ git commit -m "add test_import_dimdi__later_errors"
Merge and Push
masa@masa ~/ywesee/de.oddb.org $ git checkout master Switched to branch 'master' masa@masa ~/ywesee/de.oddb.org $ git merge --squash work Updating 75ee4e1..2a6a8ed Fast-forward Squash commit -- not updating HEAD test/util/test_updater.rb | 46 +++++++++++++++++++++++--------------------- 1 files changed, 24 insertions(+), 22 deletions(-) masa@masa ~/ywesee/de.oddb.org $ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: test/util/test_updater.rb # masa@masa ~/ywesee/de.oddb.org $ git add test/util/test_updater.rb masa@masa ~/ywesee/de.oddb.org $ git commit -m "Fixed test_updater.rb" [master f0becae] Fixed test_updater.rb 1 files changed, 24 insertions(+), 22 deletions(-) masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started .... Finished in 0.0352260000000001 seconds. 4 tests, 9 assertions, 0 failures, 0 errors masa@masa ~/ywesee/de.oddb.org $ git push Enter passphrase for key '/home/masa/.ssh/id_rsa': Counting objects: 9, done. Delta compression using up to 8 threads. Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 622 bytes, done. Total 5 (delta 4), reused 0 (delta 0) To ssh://ywesee@scm.ywesee.com/home/ywesee/git/de.oddb.org 75ee4e1..f0becae master -> master
test/util/test_updater.rb
def test_import_gkv today = Date.new(2006,10) flexmock(Util::Mail).should_receive(:notify_admins)\ .with(String, Array).times(1) gkv = flexmock(Import::Gkv).new_instances gkv.should_receive(:current_date).and_return today gkv_files = %w{wirkstoffkuerzel-200610.xls darreichungsformen-200610.xls festbetraege-200610.xls} url = "http://hogehoge/" gkv.should_receive(:latest_url).and_return(url) download = StringIO.new('downloaded from gkv') gkv.should_receive(:download_latest).times(1).and_return do |file, block| assert_equal gkv_files.shift, file block.call download end gkv.should_receive(:import).with(download).times(1).and_return [] @updater.import_gkv end
Result
masa@masa ~/ywesee/de.oddb.org $ ruby test/util/test_updater.rb /home/masa/ywesee/de.oddb.org/test/stub/model.rb:172: warning: already initialized constant Currency Loaded suite test/util/test_updater Started ..."get-in import_gkv" url=http://hogehoge/ F. Finished in 0.038308 seconds. 1) Failure: test_import_gkv(ODDB::Util::TestUpdater) [test/util/test_updater.rb:122:in `test_import_gkv' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:78:in `return_value' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation.rb:59:in `verify_call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/expectation_director.rb:42:in `call' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:101:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:191:in `flexmock_wrap' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/core.rb:98:in `method_missing' /usr/lib64/ruby/gems/1.8/gems/flexmock-0.8.6/lib/flexmock/partial_mock.rb:255:in `download_latest' /home/masa/ywesee/de.oddb.org/lib/oddb/util/updater.rb:59:in `import_gkv' test/util/test_updater.rb:127:in `test_import_gkv']: in mock 'flexmock(ODDB::Import::Gkv)': <"wirkstoffkuerzel-200610.xls"> expected but was <"http://hogehoge/">. 5 tests, 10 assertions, 1 failures, 0 errors
Continut this tomorrow
Simple Sample
test.rb
class MOCK def test 2 end end class TEST def test mock = MOCK.new mock.test end def test2(mock) mock.test end end if __FILE__ == $0 test=TEST.new p test.test mock=MOCK.new p test.test2(mock) end
test_test.rb
require 'test/unit' require 'flexmock' require 'test' class TestTest < Test::Unit::TestCase include FlexMock::TestCase def test_test expected = 2 test = TEST.new assert_equal expected, test.test end def test_test_mock flexstub(MOCK) do |mockclass| mockclass.should_receive(:new).and_return do flexmock('mock object') do |mockobj| mockobj.should_receive(:test).with_no_args.and_return(1) end end end expected = 1 test = TEST.new assert_equal expected, test.test end def test_test_mock2 mockclass = flexstub(MOCK) #mockclass = flexmock(MOCK) mockobj = flexmock("mock object") mockclass.should_receive(:new).and_return(mockobj) mockobj.should_receive(:test).with_no_args.and_return(1) expected = 1 test = TEST.new assert_equal expected, test.test end def test_test2 mock = MOCK.new expected = 2 test = TEST.new assert_equal expected, test.test2(mock) end def test_test2_mock mock = flexmock(MOCK.new) mock.should_receive(:test).and_return(1) expected = 1 test = TEST.new assert_equal expected, test.test2(mock) end
Result
masa@masa ~/work/test_mock $ ruby test_test.rb Loaded suite test_test Started ..... Finished in 0.001917 seconds. 5 tests, 5 assertions, 0 failures, 0 errors