forked from copycopter/copycopter-ruby-client
-
Notifications
You must be signed in to change notification settings - Fork 0
/
rails_steps.rb
147 lines (128 loc) · 4.22 KB
/
rails_steps.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
When "I generate a rails application" do
if Rails::VERSION::MAJOR == 3
subcommand = 'new'
else
subcommand = ''
end
run_simple("rails _#{Rails::VERSION::STRING}_ #{subcommand} testapp")
cd("testapp")
if Rails::VERSION::MAJOR == 3
append_to_file("Gemfile", <<-GEMS)
gem "thin"
gem "sham_rack"
gem "sinatra"
gem "json"
GEMS
end
end
When /^I configure the copycopter client with api key "([^"]*)"$/ do |api_key|
write_file("config/initializers/copycopter.rb", <<-RUBY)
CopycopterClient.configure do |config|
config.api_key = "#{api_key}"
config.polling_delay = 1
config.host = 'localhost'
config.secure = false
config.port = #{FakeCopycopterApp.port}
end
RUBY
if Rails::VERSION::MAJOR == 3
append_to_file("Gemfile", <<-GEMS)
gem "copycopter_client", :path => "../../.."
GEMS
else
in_current_dir { FileUtils.rm_f("vendor/plugins/copycopter") }
run_simple("ln -s #{PROJECT_ROOT} vendor/plugins/copycopter")
end
end
When "I start the application" do
in_current_dir do
RailsServer.start(ENV['RAILS_PORT'], @announce_stderr)
end
end
When /^I start the application in the "([^"]+)" environment$/ do |environment|
in_current_dir do
old_environment = ENV['RAILS_ENV']
begin
ENV['RAILS_ENV'] = environment
RailsServer.start(ENV['RAILS_PORT'], @announce_stderr)
ensure
ENV['RAILS_ENV'] = old_environment
end
end
end
When /^I visit (\/.*)$/ do |path|
@last_response = RailsServer.get(path)
end
When /^I configure the copycopter client to use published data$/ do
in_current_dir do
config_path = "config/initializers/copycopter.rb"
contents = IO.read(config_path)
contents.sub!("end", " config.development_environments = []\nend")
File.open(config_path, "w") { |file| file.write(contents) }
end
end
When /^I configure the copycopter client to have a polling delay of (\d+) seconds$/ do |polling_delay|
in_current_dir do
config_path = "config/initializers/copycopter.rb"
contents = IO.read(config_path)
contents.sub!(/config.polling_delay = .+/, "config.polling_delay = #{polling_delay}")
File.open(config_path, "w") { |file| file.write(contents) }
end
end
Then /^the copycopter client version and environment should have been logged$/ do
client_version = CopycopterClient::VERSION
environment_info = "[Ruby: #{RUBY_VERSION}]"
environment_info << " [Rails: #{Rails::VERSION::STRING}]"
environment_info << " [Env: development]"
steps %{
Then the log should contain "Client #{client_version} ready"
Then the log should contain "Environment Info: #{environment_info}"
}
end
Then /^the log should contain "([^"]*)"$/ do |line|
prefix = "** [Copycopter] "
pattern = Regexp.compile([Regexp.escape(prefix), Regexp.escape(line)].join(".*"))
log_path = "log/development.log"
in_current_dir do
File.open(log_path) do |file|
unless file.readlines.any? { |file_line| file_line =~ pattern }
raise "In log file:\n#{IO.read(log_path)}\n\nMissing line:\n#{pattern}"
end
end
end
end
Then /^the log should not contain "([^"]*)"$/ do |line|
log_path = "log/development.log"
in_current_dir do
File.open(log_path) do |file|
if bad_line = file.readlines.detect { |file_line| file_line.include?(line) }
raise "In log file:\n#{log_path}\n\nGot unexpected line:\n#{bad_line}"
end
end
end
end
When /^I successfully rake "([^"]*)"$/ do |task|
run_simple("rake #{task}")
end
Then /^the response should contain "([^"]+)"$/ do |text|
@last_response.body.should include(text)
end
When /^I route the "([^"]+)" resource$/ do |resource|
if Rails::VERSION::MAJOR == 3
draw = "Testapp::Application.routes.draw do\n"
else
draw = "ActionController::Routing::Routes.draw do |map|\nmap."
end
routes = "#{draw}resources :#{resource}\nend"
overwrite_file("config/routes.rb", routes)
end
When /^I run a short lived process that sets the key "([^"]*)" to "([^"]*)"$/ do |key, value|
if Rails::VERSION::MAJOR == 3
run_simple %[script/rails runner 'I18n.translate("#{key}", :default => "#{value}")']
else
run_simple %[script/runner 'I18n.translate("#{key}", :default => "#{value}")']
end
end
After do
RailsServer.stop
end