axlsx_rails 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +90 -81
- data/README.md +61 -23
- data/lib/axlsx_rails/action_controller.rb +4 -0
- data/lib/axlsx_rails/version.rb +1 -1
- data/spec/axlsx_request_spec.rb +45 -3
- data/spec/dummy/app/controllers/home_controller.rb +13 -0
- data/spec/dummy/app/controllers/likes_controller.rb +19 -0
- data/spec/dummy/app/models/like.rb +5 -0
- data/spec/dummy/app/models/user.rb +2 -0
- data/spec/dummy/app/views/home/index.html.erb +3 -1
- data/spec/dummy/app/views/home/index.xlsx.axlsx +2 -2
- data/spec/dummy/app/views/home/useheader.xlsx.axlsx +8 -0
- data/spec/dummy/app/views/home/withpartial.xlsx.axlsx +2 -2
- data/spec/dummy/app/views/layouts/application.html.erb +0 -2
- data/spec/dummy/app/views/likes/index.html.erb +17 -0
- data/spec/dummy/app/views/likes/index.xlsx.axlsx +7 -0
- data/spec/dummy/app/views/users/index.html.erb +0 -6
- data/spec/dummy/config/routes.rb +7 -1
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/20121206210955_create_likes.rb +10 -0
- data/spec/dummy/db/schema.rb +8 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +497 -0
- data/spec/dummy/log/test.log +4769 -0
- data/spec/spec_helper.rb +7 -0
- metadata +37 -6
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,106 +1,109 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
axlsx_rails (0.1.
|
4
|
+
axlsx_rails (0.1.3)
|
5
5
|
axlsx
|
6
6
|
rails (~> 3.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: http://rubygems.org/
|
10
10
|
specs:
|
11
|
-
actionmailer (3.2.
|
12
|
-
actionpack (= 3.2.
|
11
|
+
actionmailer (3.2.9)
|
12
|
+
actionpack (= 3.2.9)
|
13
13
|
mail (~> 2.4.4)
|
14
|
-
actionpack (3.2.
|
15
|
-
activemodel (= 3.2.
|
16
|
-
activesupport (= 3.2.
|
14
|
+
actionpack (3.2.9)
|
15
|
+
activemodel (= 3.2.9)
|
16
|
+
activesupport (= 3.2.9)
|
17
17
|
builder (~> 3.0.0)
|
18
18
|
erubis (~> 2.7.0)
|
19
|
-
journey (~> 1.0.
|
19
|
+
journey (~> 1.0.4)
|
20
20
|
rack (~> 1.4.0)
|
21
21
|
rack-cache (~> 1.2)
|
22
22
|
rack-test (~> 0.6.1)
|
23
|
-
sprockets (~> 2.1
|
24
|
-
activemodel (3.2.
|
25
|
-
activesupport (= 3.2.
|
23
|
+
sprockets (~> 2.2.1)
|
24
|
+
activemodel (3.2.9)
|
25
|
+
activesupport (= 3.2.9)
|
26
26
|
builder (~> 3.0.0)
|
27
|
-
activerecord (3.2.
|
28
|
-
activemodel (= 3.2.
|
29
|
-
activesupport (= 3.2.
|
27
|
+
activerecord (3.2.9)
|
28
|
+
activemodel (= 3.2.9)
|
29
|
+
activesupport (= 3.2.9)
|
30
30
|
arel (~> 3.0.2)
|
31
31
|
tzinfo (~> 0.3.29)
|
32
|
-
activeresource (3.2.
|
33
|
-
activemodel (= 3.2.
|
34
|
-
activesupport (= 3.2.
|
35
|
-
activesupport (3.2.
|
32
|
+
activeresource (3.2.9)
|
33
|
+
activemodel (= 3.2.9)
|
34
|
+
activesupport (= 3.2.9)
|
35
|
+
activesupport (3.2.9)
|
36
36
|
i18n (~> 0.6)
|
37
37
|
multi_json (~> 1.0)
|
38
|
-
acts_as_xlsx (1.0.
|
38
|
+
acts_as_xlsx (1.0.6)
|
39
39
|
activerecord (>= 2.3.9)
|
40
40
|
axlsx (>= 1.0.13)
|
41
41
|
i18n (>= 0.4.1)
|
42
|
-
addressable (2.2
|
42
|
+
addressable (2.3.2)
|
43
43
|
arel (3.0.2)
|
44
|
-
axlsx (1.
|
44
|
+
axlsx (1.3.4)
|
45
45
|
htmlentities (~> 4.3.1)
|
46
46
|
nokogiri (>= 1.4.1)
|
47
|
-
rake (>= 0.8.7)
|
48
47
|
rubyzip (>= 0.9.5)
|
49
|
-
builder (3.0.
|
50
|
-
capybara (
|
48
|
+
builder (3.0.4)
|
49
|
+
capybara (2.0.1)
|
51
50
|
mime-types (>= 1.16)
|
52
51
|
nokogiri (>= 1.3.3)
|
53
52
|
rack (>= 1.0.0)
|
54
53
|
rack-test (>= 0.5.4)
|
55
54
|
selenium-webdriver (~> 2.0)
|
56
|
-
xpath (~> 0.
|
57
|
-
childprocess (0.3.
|
58
|
-
ffi (~> 1.0.6)
|
55
|
+
xpath (~> 1.0.0)
|
56
|
+
childprocess (0.3.6)
|
57
|
+
ffi (~> 1.0, >= 1.0.6)
|
59
58
|
choice (0.1.6)
|
59
|
+
coderay (1.0.8)
|
60
60
|
diff-lcs (1.1.3)
|
61
61
|
erubis (2.7.0)
|
62
|
-
faraday (0.8.
|
62
|
+
faraday (0.8.4)
|
63
63
|
multipart-post (~> 1.1)
|
64
|
-
ffi (1.0
|
64
|
+
ffi (1.2.0)
|
65
65
|
google-spreadsheet-ruby (0.3.0)
|
66
66
|
google_drive (>= 0.3.0)
|
67
|
-
google_drive (0.3.
|
67
|
+
google_drive (0.3.2)
|
68
68
|
nokogiri (>= 1.4.4, != 1.5.2, != 1.5.1)
|
69
69
|
oauth (>= 0.3.6)
|
70
70
|
oauth2 (>= 0.5.0)
|
71
71
|
growl (1.0.3)
|
72
|
-
guard (1.
|
72
|
+
guard (1.5.4)
|
73
73
|
listen (>= 0.4.2)
|
74
|
+
lumberjack (>= 1.0.2)
|
75
|
+
pry (>= 0.9.10)
|
74
76
|
thor (>= 0.14.6)
|
75
|
-
guard-rspec (
|
77
|
+
guard-rspec (2.3.0)
|
76
78
|
guard (>= 1.1)
|
79
|
+
rspec (~> 2.11)
|
77
80
|
hike (1.2.1)
|
78
81
|
htmlentities (4.3.1)
|
79
|
-
httpauth (0.
|
80
|
-
i18n (0.6.
|
82
|
+
httpauth (0.2.0)
|
83
|
+
i18n (0.6.1)
|
81
84
|
journey (1.0.4)
|
82
|
-
jquery-rails (2.
|
83
|
-
railties (>= 3.
|
84
|
-
thor (
|
85
|
-
json (1.7.
|
86
|
-
jwt (0.1.
|
87
|
-
|
88
|
-
libwebsocket (0.1.
|
85
|
+
jquery-rails (2.1.4)
|
86
|
+
railties (>= 3.0, < 5.0)
|
87
|
+
thor (>= 0.14, < 2.0)
|
88
|
+
json (1.7.5)
|
89
|
+
jwt (0.1.5)
|
90
|
+
multi_json (>= 1.0)
|
91
|
+
libwebsocket (0.1.7.1)
|
89
92
|
addressable
|
90
|
-
|
91
|
-
|
92
|
-
rb-fsevent (~> 0.9.1)
|
93
|
-
rb-inotify (~> 0.8.8)
|
93
|
+
websocket
|
94
|
+
listen (0.6.0)
|
94
95
|
log4r (1.1.10)
|
96
|
+
lumberjack (1.0.2)
|
95
97
|
mail (2.4.4)
|
96
98
|
i18n (>= 0.4.0)
|
97
99
|
mime-types (~> 1.16)
|
98
100
|
treetop (~> 1.4.8)
|
101
|
+
method_source (0.8.1)
|
99
102
|
mime-types (1.19)
|
100
|
-
multi_json (1.
|
103
|
+
multi_json (1.4.0)
|
101
104
|
multipart-post (1.1.5)
|
102
105
|
nokogiri (1.5.5)
|
103
|
-
oauth (0.4.
|
106
|
+
oauth (0.4.7)
|
104
107
|
oauth2 (0.8.0)
|
105
108
|
faraday (~> 0.8)
|
106
109
|
httpauth (~> 0.1)
|
@@ -108,34 +111,34 @@ GEM
|
|
108
111
|
multi_json (~> 1.0)
|
109
112
|
rack (~> 1.2)
|
110
113
|
polyglot (0.3.3)
|
114
|
+
pry (0.9.10)
|
115
|
+
coderay (~> 1.0.5)
|
116
|
+
method_source (~> 0.8)
|
117
|
+
slop (~> 3.3.1)
|
111
118
|
rack (1.4.1)
|
112
119
|
rack-cache (1.2)
|
113
120
|
rack (>= 0.4)
|
114
121
|
rack-ssl (1.3.2)
|
115
122
|
rack
|
116
|
-
rack-test (0.6.
|
123
|
+
rack-test (0.6.2)
|
117
124
|
rack (>= 1.0)
|
118
|
-
rails (3.2.
|
119
|
-
actionmailer (= 3.2.
|
120
|
-
actionpack (= 3.2.
|
121
|
-
activerecord (= 3.2.
|
122
|
-
activeresource (= 3.2.
|
123
|
-
activesupport (= 3.2.
|
125
|
+
rails (3.2.9)
|
126
|
+
actionmailer (= 3.2.9)
|
127
|
+
actionpack (= 3.2.9)
|
128
|
+
activerecord (= 3.2.9)
|
129
|
+
activeresource (= 3.2.9)
|
130
|
+
activesupport (= 3.2.9)
|
124
131
|
bundler (~> 1.0)
|
125
|
-
railties (= 3.2.
|
126
|
-
railties (3.2.
|
127
|
-
actionpack (= 3.2.
|
128
|
-
activesupport (= 3.2.
|
132
|
+
railties (= 3.2.9)
|
133
|
+
railties (3.2.9)
|
134
|
+
actionpack (= 3.2.9)
|
135
|
+
activesupport (= 3.2.9)
|
129
136
|
rack-ssl (~> 1.3.2)
|
130
137
|
rake (>= 0.8.7)
|
131
138
|
rdoc (~> 3.4)
|
132
139
|
thor (>= 0.14.6, < 2.0)
|
133
|
-
rake (0.
|
134
|
-
rb-
|
135
|
-
ffi
|
136
|
-
rb-fsevent (0.9.1)
|
137
|
-
rb-inotify (0.8.8)
|
138
|
-
ffi (>= 0.5.0)
|
140
|
+
rake (10.0.2)
|
141
|
+
rb-fsevent (0.9.2)
|
139
142
|
rdoc (3.12)
|
140
143
|
json (~> 1.4)
|
141
144
|
roo (1.10.1)
|
@@ -145,42 +148,47 @@ GEM
|
|
145
148
|
rubyzip (>= 0.9.4)
|
146
149
|
spreadsheet (> 0.6.4)
|
147
150
|
todonotes (>= 0.1.0)
|
148
|
-
rspec (2.
|
149
|
-
rspec-core (~> 2.
|
150
|
-
rspec-expectations (~> 2.
|
151
|
-
rspec-mocks (~> 2.
|
152
|
-
rspec-core (2.
|
153
|
-
rspec-expectations (2.
|
151
|
+
rspec (2.12.0)
|
152
|
+
rspec-core (~> 2.12.0)
|
153
|
+
rspec-expectations (~> 2.12.0)
|
154
|
+
rspec-mocks (~> 2.12.0)
|
155
|
+
rspec-core (2.12.1)
|
156
|
+
rspec-expectations (2.12.0)
|
154
157
|
diff-lcs (~> 1.1.3)
|
155
|
-
rspec-mocks (2.
|
156
|
-
rspec-rails (2.
|
158
|
+
rspec-mocks (2.12.0)
|
159
|
+
rspec-rails (2.12.0)
|
157
160
|
actionpack (>= 3.0)
|
158
161
|
activesupport (>= 3.0)
|
159
162
|
railties (>= 3.0)
|
160
|
-
rspec (~> 2.
|
161
|
-
|
163
|
+
rspec-core (~> 2.12.0)
|
164
|
+
rspec-expectations (~> 2.12.0)
|
165
|
+
rspec-mocks (~> 2.12.0)
|
166
|
+
ruby-ole (1.2.11.5)
|
162
167
|
rubyzip (0.9.9)
|
163
|
-
selenium-webdriver (2.
|
168
|
+
selenium-webdriver (2.27.0)
|
164
169
|
childprocess (>= 0.2.5)
|
165
170
|
libwebsocket (~> 0.1.3)
|
166
171
|
multi_json (~> 1.0)
|
167
172
|
rubyzip
|
168
|
-
|
173
|
+
slop (3.3.3)
|
174
|
+
spreadsheet (0.7.5)
|
169
175
|
ruby-ole (>= 1.0)
|
170
|
-
sprockets (2.
|
176
|
+
sprockets (2.2.2)
|
171
177
|
hike (~> 1.2)
|
178
|
+
multi_json (~> 1.0)
|
172
179
|
rack (~> 1.0)
|
173
180
|
tilt (~> 1.1, != 1.3.0)
|
174
181
|
sqlite3 (1.3.6)
|
175
|
-
thor (0.
|
182
|
+
thor (0.16.0)
|
176
183
|
tilt (1.3.3)
|
177
|
-
todonotes (0.1.
|
184
|
+
todonotes (0.1.1)
|
178
185
|
log4r
|
179
|
-
treetop (1.4.
|
186
|
+
treetop (1.4.12)
|
180
187
|
polyglot
|
181
188
|
polyglot (>= 0.3.1)
|
182
|
-
tzinfo (0.3.
|
183
|
-
|
189
|
+
tzinfo (0.3.35)
|
190
|
+
websocket (1.0.4)
|
191
|
+
xpath (1.0.0)
|
184
192
|
nokogiri (~> 1.3)
|
185
193
|
|
186
194
|
PLATFORMS
|
@@ -195,6 +203,7 @@ DEPENDENCIES
|
|
195
203
|
guard-rspec
|
196
204
|
jquery-rails
|
197
205
|
rake
|
206
|
+
rb-fsevent
|
198
207
|
roo
|
199
208
|
rspec-rails
|
200
209
|
sqlite3
|
data/README.md
CHANGED
@@ -2,12 +2,15 @@ Axlsx-Rails — Axlsx templates for Rails views
|
|
2
2
|
===================================================
|
3
3
|
|
4
4
|
[](http://travis-ci.org/straydogstudio/axlsx_rails)
|
5
|
+
[](https://gemnasium.com/straydogstudio/axlsx_rails)
|
5
6
|
|
6
7
|
##Installation
|
7
8
|
|
8
9
|
In your Gemfile:
|
9
10
|
|
10
|
-
|
11
|
+
```ruby
|
12
|
+
gem 'axlsx_rails'
|
13
|
+
```
|
11
14
|
|
12
15
|
##Requirements
|
13
16
|
|
@@ -21,34 +24,62 @@ Axlsx-Rails provides a renderer and a template handler. It adds the :xlsx format
|
|
21
24
|
|
22
25
|
You can either use the typical format:
|
23
26
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
+
```ruby
|
28
|
+
respond_to do |format|
|
29
|
+
format.xlsx
|
30
|
+
end
|
31
|
+
```
|
27
32
|
|
28
33
|
or call render directly:
|
29
34
|
|
30
|
-
|
35
|
+
```ruby
|
36
|
+
render xlsx: "foobar", filename: "the_latest_foobar", disposition: 'inline'
|
37
|
+
```
|
38
|
+
|
39
|
+
If you merely want to specify a file name, you can do it one of two ways:
|
40
|
+
|
41
|
+
```ruby
|
42
|
+
format.xlsx {
|
43
|
+
response.headers['Content-Disposition'] = 'attachment; filename="my_new_filename.xlsx"'
|
44
|
+
}
|
45
|
+
```
|
46
|
+
Or:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
format.xlsx {
|
50
|
+
render xlsx: "action_or_template", disposition: "attachment", filename: "my_new_filename.xlsx"
|
51
|
+
}
|
52
|
+
```
|
53
|
+
|
54
|
+
> NOTE: Someday it would be nice to merely say something like:
|
55
|
+
render :filename 'blah.xlsx"
|
31
56
|
|
32
57
|
###Template
|
33
58
|
|
34
59
|
Use the .xlsx.axlsx extension (sorry if your lysdexic!) In the template, use xlsx_package variable, which is set with Axlsx::Package.new:
|
35
60
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
61
|
+
```ruby
|
62
|
+
wb = xlsx_package.workbook
|
63
|
+
style_shout = wb.styles.add_style sz: 16, b: true, alignment: { horizontal: :center }
|
64
|
+
wb.add_worksheet(name: "Foobar") do |sheet|
|
65
|
+
sheet.add_row ['Bad', 'spellers', 'of', 'the', 'world', '...']
|
66
|
+
sheet.add_row ['Untie!']
|
67
|
+
sheet.merge_cells("B1:B6")
|
68
|
+
sheet["B1"].style = style_shout
|
69
|
+
end
|
70
|
+
```
|
44
71
|
|
45
72
|
If you use [acts_as_xlsx](https://github.com/randym/acts_as_xlsx), configure the active record normally, but specify the package in the template:
|
46
73
|
|
47
|
-
|
74
|
+
```ruby
|
75
|
+
User.to_xlsx package: xlsx_package, (other options)
|
76
|
+
```
|
48
77
|
|
49
78
|
To set the author attribute upon Axlsx::Package.new, insert the following in application.rb:
|
50
79
|
|
51
|
-
|
80
|
+
```ruby
|
81
|
+
config.axlsx_author = "Elmer Fudd"
|
82
|
+
```
|
52
83
|
|
53
84
|
> NOTE: We really ought to allow the author to be set in each call
|
54
85
|
|
@@ -56,17 +87,21 @@ To set the author attribute upon Axlsx::Package.new, insert the following in app
|
|
56
87
|
|
57
88
|
Partials work as expected:
|
58
89
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
90
|
+
```ruby
|
91
|
+
wb = xlsx_package.workbook
|
92
|
+
render :partial => 'cover_sheet', :locals => {:wb => wb}
|
93
|
+
wb.add_worksheet(name: "Content") do |sheet|
|
94
|
+
sheet.add_row ['Content']
|
95
|
+
end
|
96
|
+
```
|
64
97
|
|
65
98
|
With the partial simply using the passed variables:
|
66
99
|
|
67
|
-
|
68
|
-
|
69
|
-
|
100
|
+
```ruby
|
101
|
+
wb.add_worksheet(name: "Cover Sheet") do |sheet|
|
102
|
+
sheet.add_row ['Cover', 'Sheet']
|
103
|
+
end
|
104
|
+
```
|
70
105
|
|
71
106
|
##Dependencies
|
72
107
|
|
@@ -78,6 +113,9 @@ With the partial simply using the passed variables:
|
|
78
113
|
|
79
114
|
##Change log
|
80
115
|
|
116
|
+
- **December 6, 2012**: 0.1.3 release
|
117
|
+
- Fix for absolute template paths
|
118
|
+
|
81
119
|
- **July 25, 2012**: 0.1.2 release
|
82
120
|
- Partials tested
|
83
121
|
|
@@ -4,6 +4,10 @@ unless defined? Mime::XLSX
|
|
4
4
|
end
|
5
5
|
|
6
6
|
ActionController::Renderers.add :xlsx do |filename, options|
|
7
|
+
if filename =~ /^\/([^\/]+)\/(.+)$/
|
8
|
+
options[:prefixes][0] = $1
|
9
|
+
filename = $2
|
10
|
+
end
|
7
11
|
options[:template] = filename
|
8
12
|
|
9
13
|
disposition = options.delete(:disposition) || 'attachment'
|
data/lib/axlsx_rails/version.rb
CHANGED
data/spec/axlsx_request_spec.rb
CHANGED
@@ -8,7 +8,19 @@ describe 'Axlsx request', :type => :request do
|
|
8
8
|
|
9
9
|
it "downloads an excel file from default respond_to" do
|
10
10
|
visit '/home.xlsx'
|
11
|
-
page.response_headers['Content-Type'].should == "
|
11
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s + "; charset=utf-8"
|
12
|
+
File.open('/tmp/axlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
13
|
+
wb = nil
|
14
|
+
expect{ wb = Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
15
|
+
wb.cell(2,1).should == 'Untie!'
|
16
|
+
end
|
17
|
+
|
18
|
+
it "downloads an excel file from respond_to while specifying filename" do
|
19
|
+
visit '/useheader.xlsx'
|
20
|
+
|
21
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s
|
22
|
+
page.response_headers['Content-Disposition'].should include("filename=\"filename_test.xlsx\"")
|
23
|
+
|
12
24
|
File.open('/tmp/axlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
13
25
|
wb = nil
|
14
26
|
expect{ wb = Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
@@ -28,10 +40,11 @@ describe 'Axlsx request', :type => :request do
|
|
28
40
|
end
|
29
41
|
|
30
42
|
it "downloads an excel file from acts_as_xlsx model" do
|
43
|
+
User.destroy_all
|
31
44
|
@user1 = User.create name: 'Elmer', last_name: 'Fudd', address: '1234 Somewhere, Over NY 11111', email: 'elmer@fudd.com'
|
32
45
|
@user2 = User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
33
46
|
visit '/users.xlsx'
|
34
|
-
page.response_headers['Content-Type'].should == "
|
47
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s + "; charset=utf-8"
|
35
48
|
File.open('/tmp/axlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
36
49
|
wb = nil
|
37
50
|
expect{ wb = Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
@@ -40,7 +53,7 @@ describe 'Axlsx request', :type => :request do
|
|
40
53
|
|
41
54
|
it "downloads an excel file with partial" do
|
42
55
|
visit '/withpartial.xlsx'
|
43
|
-
page.response_headers['Content-Type'].should == "
|
56
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s + "; charset=utf-8"
|
44
57
|
File.open('/tmp/axlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
45
58
|
wb = nil
|
46
59
|
expect{ wb = Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
@@ -48,4 +61,33 @@ describe 'Axlsx request', :type => :request do
|
|
48
61
|
wb.cell(2,1,wb.sheets[1]).should == "Untie!"
|
49
62
|
end
|
50
63
|
|
64
|
+
it "handles nested resources" do
|
65
|
+
User.destroy_all
|
66
|
+
@user = User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
67
|
+
@user.likes.create(:name => 'Carrots')
|
68
|
+
@user.likes.create(:name => 'Celery')
|
69
|
+
visit "/users/#{@user.id}/likes.xlsx"
|
70
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s + "; charset=utf-8"
|
71
|
+
File.open('/tmp/axlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
72
|
+
wb = nil
|
73
|
+
expect{ wb = Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
74
|
+
wb.cell(1,1).should == 'Bugs'
|
75
|
+
wb.cell(2,1).should == 'Carrots'
|
76
|
+
wb.cell(3,1).should == 'Celery'
|
77
|
+
end
|
78
|
+
|
79
|
+
it "handles reference to absolute paths" do
|
80
|
+
User.destroy_all
|
81
|
+
@user = User.create name: 'Bugs', last_name: 'Bunny', address: '1234 Left Turn, Albuquerque NM 22222', email: 'bugs@bunny.com'
|
82
|
+
visit "/users/#{@user.id}/render_elsewhere.xlsx"
|
83
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s
|
84
|
+
visit "/home/render_elsewhere.xlsx"
|
85
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s
|
86
|
+
visit "/render_elsewhere.xlsx"
|
87
|
+
page.response_headers['Content-Type'].should == Mime::XLSX.to_s
|
88
|
+
File.open('/tmp/axlsx_temp.xlsx', 'w') {|f| f.write(page.source) }
|
89
|
+
wb = nil
|
90
|
+
expect{ wb = Excelx.new('/tmp/axlsx_temp.xlsx') }.to_not raise_error
|
91
|
+
wb.cell(2,2).should == 'Bugs'
|
92
|
+
end
|
51
93
|
end
|