features/step_definitions/format_steps.rb in activeadmin-0.2.2 vs features/step_definitions/format_steps.rb in activeadmin-0.3.0
- old
+ new
@@ -1,7 +1,35 @@
Then "I should see nicely formatted datetimes" do
page.body.should =~ /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
end
Then /^I should see a link to download "([^"]*)"$/ do |format_type|
- Then %{I should see "#{format_type}" within "#index_footer a"}
+ page.should have_css("#index_footer a", :text => format_type)
+end
+
+# Check first rows of the displayed CSV.
+Then /^I should download a CSV file for "([^"]*)" containing:$/ do |resource_name, table|
+ page.response_headers['Content-Type'].should == 'text/csv; charset=utf-8'
+ csv_filename = "#{resource_name}-#{Time.now.strftime("%Y-%m-%d")}.csv"
+ page.response_headers['Content-Disposition'].should == %{attachment; filename="#{csv_filename}"}
+ body = page.driver.response.body
+
+ begin
+ csv = CSV.parse(body)
+ table.raw.each_with_index do |expected_row, row_index|
+ expected_row.each_with_index do |expected_cell, col_index|
+ cell = csv.try(:[], row_index).try(:[], col_index)
+ if expected_cell.blank?
+ cell.should be_nil
+ else
+ (cell || '').should match(/#{expected_cell}/)
+ end
+ end
+ end
+ rescue
+ puts "Expecting:"
+ p table.raw
+ puts "to match:"
+ p csv
+ raise $!
+ end
end