OSDN Git Service

93205bc9eb9320de16334517f865901cffe020cd
[quickedit/quick_edit.git] / test / selenium / clear_core_field.rb
1 # coding: utf-8
2
3 require "json"
4 require "selenium-webdriver"
5 $: << File.expand_path('../../', __FILE__)
6 require 'spec_helper'
7 Dir[File.dirname(__FILE__) + '/pages/page.rb'].each {|file| require file }
8 Dir[File.dirname(__FILE__) + '/pages/*.rb'].each {|file| require file }
9 require "uri"
10 require "net/http"
11 include RSpec::Expectations
12
13 describe "Clear core field" do
14
15   before(:all) do
16     profile = Selenium::WebDriver::Firefox::Profile.new
17     @driver = Selenium::WebDriver.for :firefox, :profile => profile
18     @driver.manage.window.maximize
19     @base_url = "http://localhost:3000/"
20     @driver.manage.timeouts.implicit_wait = 10
21     @verification_errors = []
22     @default_project = "test"
23     @default_user = "admin"
24     @default_password = "dummy"
25
26     # open issues page
27     start_page = QuickEdit::Test::Pages::StartPage.new(@driver, @base_url, @default_project)
28     first_page = start_page.login @default_user, @default_password
29     @issues_page = first_page.open_issues
30
31     # create issue for test
32     issue_new_page = @issues_page.open_new_page()
33     issue_show_page = issue_new_page.create(:bug, 'first subject')
34     @issue_id = issue_show_page.id
35
36   end
37
38   before(:each) do
39     @issues_page = @issues_page.open_issues
40   end
41   
42   after(:each) do
43     expect(@verification_errors).to match_array []
44   end
45   
46   after(:all) do
47     @driver.quit
48   end
49   
50   it "start_date can clear" do
51     new_value = '1900-01-01'
52     expect( edit(@issue_id, :start_date, new_value) ).to eq new_value
53
54     expect( clear(@issue_id, :start_date) ).to eq nil
55   end
56
57   it "due_date can clear" do
58     new_value = '2000-01-01'
59     expect( edit(@issue_id, :due_date, new_value) ).to eq new_value
60
61     expect( clear(@issue_id, :due_date) ).to eq nil
62   end
63
64   it "estimated_hours can clear" do
65     new_value = '0'
66     expect( edit(@issue_id, :estimated_hours, new_value).to_f ).to eq new_value.to_f
67
68     expect( clear(@issue_id, :estimated_hours) ).to eq nil
69   end
70
71   it "parent_issue_id can clear" do
72     issue_ids = @issues_page.issue_ids_on_page
73     issue_new_page = @issues_page.open_new_page()
74     issue_show_page = issue_new_page.create(:bug, 'first subject')
75     new_issue_id = issue_show_page.id
76     @issues_page = issue_show_page.open_issues
77
78     new_value = @issue_id.to_s
79     expect( edit(new_issue_id, :parent_issue_id, new_value) ).to eq new_value.to_i
80
81     expect( clear(new_issue_id, :parent_issue_id) ).to eq nil
82   end
83
84   def edit(issue_id, attribute_name, new_value)
85     @issues_page.quick_edit_for_core_field issue_id, attribute_name, new_value
86
87     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
88     field_value = get_core_field(issue_id, attribute_name)
89
90     if attribute_name == :parent
91       field_value["id"]
92     else
93       field_value
94     end
95   end
96
97   def clear(issue_id, attribute_name)
98     quick_edit = @issues_page.open_context(issue_id)
99     menu_selector = quick_edit.menu_selector(attribute_name)
100     @issues_page = quick_edit.clear_field(issue_id, menu_selector)
101
102     attribute_name = :parent if attribute_name.to_sym == :parent_issue_id
103     field_value = get_core_field(issue_id, attribute_name)
104   end
105
106   def get_core_field(issue_id, attribute_name)
107     json = get_json("issues/#{issue_id}.json")
108
109     json["issue"][attribute_name.to_s]
110   end
111
112   def get_json(path)
113     uri = URI::parse "#{@base_url}#{path}"
114     res = Net::HTTP::get_response(uri)
115     JSON.parse(res.body)
116   end
117 end