Share ilmu yuk!,

September 15, 2009

Testing cucumber multiple session

Filed under: Ruby Programming — ugifractal @ 10:42 pm
Tags: , , , ,

Saya pernah mengerjakan proyek ruby, dan waktu itu terpikir, bagaimana caranya supaya saya dapat mengetest lebih dari 1 session. Contoh kasusnya begini:
1.User A login sebagai admin, dan membuat sebuah post dengan nama “Programming”
2.User B login sebagai user biasa, dan harus melihat post dengan nama “Programming”

Dengan asumsi user admin, tidak harus logout dulu. Dari keinginan seperti itu, yang terpikir adalah bagaimana caranya membuat session baru. Akhirnya saya mencoba googling bbrp code integration test, dan ketemulah code “open_session”, langkah kedua adalah mencari cara supaya session yang baru saja dibuat memiliki method-method yang biasa dipakai oleh webrat, seperti visit,click_button,fill_in dan lain-lain. Dan setelah membaca beberapa potong code webrat, ternyata saya bisa menggunakan class RailsSession.
Sehingga yang perlu saya kerjakan adalah menambah kode berikut di features/support/env.rb

def new_session
  user = nil
  open_session do |ses|
    user = Webrat::RailsSession.new(ses)
  end
  yield user if block_given?
  return user
end

Berikut contoh scenarionya

  Scenario: when Data entry mark wip with rude or foreign, the wip should not go to QA
	Given system has wip records with values "phone=11111;status_id=1;vm_file=abc.mp3"
	And system has account called "jim"
	And system has role "processor" for "jim" account
	And system has account called "joko"
	And system has role "processor" for "joko" account
	When "jim" login to system
	And he process current wip with values "first_name=sugi;last_name=arto;address1=cmh;city=cmh;zip=30531;phone=11115;opt_rude=1"
	And "joko" should see "No more messages" at different session

	Given system has wip records with values "phone=11112;status_id=1;vm_file=abc.mp3"
	And he visit "/process_wips"
	And he process current wip with values "first_name=sugi;last_name=arto;address1=cmh;zip=30531;phone=11115;opt_foreign_address=1"
	And "joko" should see "No more messages" at different session

Dan berikut ini contoh step definitionnya

Then /^"([^\"]*)" should see "([^\"]*)" at different session$/ do |login, text|
  user = new_session
  user.extend(LoginHelpers)
  resp = user.login(login)
  resp.body.should contain(text)
end

Semoga membantu

Tinggalkan sebuah Komentar »

Belum ada komentar.

RSS feed for comments on this post. TrackBack URI

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Buat situs web atau blog gratis di WordPress.com.

%d blogger menyukai ini: