lolita-file-upload 0.1.4 → 0.2.0
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/.document +5 -5
- data/.rspec +2 -2
- data/Gemfile +21 -21
- data/LICENSE.txt +20 -20
- data/README.rdoc +27 -27
- data/Rakefile +39 -39
- data/VERSION +1 -1
- data/app/controllers/lolita/uploads_controller.rb +58 -0
- data/app/models/lolita/upload/file.rb +43 -43
- data/app/uploaders/file_uploader.rb +20 -20
- data/app/views/components/lolita/configuration/tab/files/_cells.html.erb +10 -4
- data/app/views/components/lolita/configuration/tab/files/_destroy.js.erb +2 -2
- data/app/views/components/lolita/configuration/tab/files/_display.html.erb +10 -11
- data/app/views/components/lolita/configuration/tab/files/_edit.js.erb +1 -1
- data/app/views/components/lolita/configuration/tab/files/_file.html.erb +5 -0
- data/app/views/components/lolita/configuration/tab/files/_fixed_gallery.html.haml +33 -0
- data/app/views/components/lolita/configuration/tab/files/_form.html.erb +7 -3
- data/app/views/components/lolita/configuration/tab/files/_list.html.erb +13 -13
- data/app/views/components/lolita/configuration/tab/files/_list_form.html.erb +5 -5
- data/app/views/components/lolita/configuration/tab/files/_row.html.erb +5 -2
- data/app/views/components/lolita/configuration/tab/files/_update.js.erb +1 -1
- data/app/views/components/lolita/configuration/tab/files/_upload_script.html.erb +79 -77
- data/config/locales/en.yml +18 -18
- data/features/configuration_for_tab.feature +25 -25
- data/features/connect_with_lolita.feature +14 -14
- data/features/extend_resources_with_new_routes.feature +16 -16
- data/features/step_definitions/lolita_steps.rb +112 -112
- data/features/support/env.rb +15 -15
- data/features/support_byte_converter.feature +31 -31
- data/features/upload_file.feature +15 -15
- data/lib/generators/lolita_file_upload/assets_generator.rb +12 -12
- data/lib/generators/lolita_file_upload/install_generator.rb +19 -19
- data/lib/generators/lolita_file_upload/templates/migration.rb +24 -24
- data/lib/lolita-file-upload.rb +35 -36
- data/lib/lolita-file-upload/configuration/tab/files.rb +108 -57
- data/lib/lolita-file-upload/module.rb +10 -6
- data/lib/lolita-file-upload/rails.rb +7 -7
- data/lib/lolita-file-upload/rails/file_upload_routes.rb +14 -19
- data/lib/support/bytes.rb +58 -58
- data/lolita-file-upload.gemspec +9 -13
- data/public/javascripts/lolita/upload/I18n/lv.js +21 -21
- data/public/javascripts/lolita/upload/I18n/ru.js +21 -21
- data/public/javascripts/lolita/upload/plupload.full.js +1 -1
- data/public/stylesheets/lolita/upload/jquery.ui.plupload.css +139 -139
- data/public/stylesheets/lolita/upload/plupload.queue.css +177 -177
- data/spec/configuration/tab/files_spec.rb +36 -36
- data/spec/lolita/support/bytes_spec.rb +35 -35
- data/spec/models/file_spec.rb +33 -33
- data/spec/spec_helper.rb +32 -29
- data/spec/support/post.rb +2 -2
- data/spec/uploaders/file_uploader_spec.rb +11 -11
- data/test_orm/active_record.rb +11 -11
- data/test_orm/active_record/news.rb +11 -11
- data/test_orm/active_record/post.rb +12 -12
- data/test_orm/active_record/tag.rb +2 -2
- data/test_orm/config/active_record.yml +1 -1
- data/test_orm/coverage.rb +18 -18
- data/test_orm/db/migrate/01_create_posts.rb +14 -14
- data/test_orm/db/migrate/02_create_files.rb +19 -19
- data/test_orm/db/migrate/03_create_news.rb +16 -16
- data/test_orm/db/migrate/04_create_tags.rb +14 -14
- data/test_orm/files/large_file.txt +201 -201
- data/test_orm/files/normal_file.txt +1 -1
- data/test_orm/rails/config/application.rb +7 -7
- data/test_orm/rails/config/enviroment.rb +4 -4
- data/test_orm/rails/config/routes.rb +2 -2
- data/test_orm/rails/log/development.log +7 -7
- data/test_orm/support.rb +26 -26
- data/test_orm/uploaders/list_image_uploader.rb +5 -5
- data/test_orm/uploaders/main_image_uploader.rb +5 -5
- metadata +19 -23
- data/app/controllers/lolita/upload/files_controller.rb +0 -51
- data/app/controllers/lolita/upload/images_controller.rb +0 -52
- data/lib/lolita-file-upload/configuration/tab/images.rb +0 -20
- data/spec/configuration/tab/images_spec.rb +0 -16
- data/upload/lolita/upload/file/201105/1/large_file.txt +0 -201
- data/upload/lolita/upload/file/201106/1/large_file.txt +0 -201
- data/upload/misc/large_file.txt +0 -201
@@ -1,11 +1,10 @@
|
|
1
|
-
<%= form_tag(send(:"
|
2
|
-
<div id="
|
3
|
-
Your bowser don't have HTML5 or Flash support.
|
4
|
-
</div>
|
5
|
-
<% end %>
|
6
|
-
<div id="filelist">
|
7
|
-
<%= render_component tab,:list %>
|
8
|
-
</div>
|
9
|
-
<%= render_component tab, :upload_script, :container => "
|
10
|
-
<%= render_component :"lolita/configuration/tab", :fields, :tab=>tab %>
|
11
|
-
|
1
|
+
<%= form_tag(send(:"create_upload_lolita_#{tab.dbi.klass.model_name.plural.downcase}_path", :association => tab.association.name),:method=>:post, :id=>"#{tab.association.name}_form") do %>
|
2
|
+
<div id="file_upload_container_<%="#{tab.association.name}"%>">
|
3
|
+
Your bowser don't have HTML5 or Flash support.
|
4
|
+
</div>
|
5
|
+
<% end %>
|
6
|
+
<div id="filelist">
|
7
|
+
<%= render_component tab,:list %>
|
8
|
+
</div>
|
9
|
+
<%= render_component tab, :upload_script, :container => "file_upload_container_#{tab.association.name}"%>
|
10
|
+
<%= render_component :"lolita/configuration/tab", :fields, :tab=>tab %>
|
@@ -1 +1 @@
|
|
1
|
-
$("#upload_<%=tab.
|
1
|
+
$("#upload_<%=tab.association.name%>_row_<%=file.id%>").html("<%=escape_javascript(render_component(*tab.build("",:list_form,:file=>file,:format=>"html")))%>");
|
@@ -0,0 +1,33 @@
|
|
1
|
+
:css
|
2
|
+
#fixed-gallery {
|
3
|
+
position: fixed;
|
4
|
+
top: 0px;
|
5
|
+
left: 0px;
|
6
|
+
border-bottom: 4px solid #CCC;
|
7
|
+
background-color: white;
|
8
|
+
z-index: 200001;
|
9
|
+
width: 100%;
|
10
|
+
display: block;
|
11
|
+
border-bottom: 4px solid #CCC;
|
12
|
+
-moz-box-shadow: #666 2px 2px 15px;
|
13
|
+
-webkit-box-shadow: #666 2px 2px 15px;
|
14
|
+
box-shadow: #666 2px 2px 15px;
|
15
|
+
display:none;
|
16
|
+
overflow: auto;
|
17
|
+
}
|
18
|
+
#fixed-gallery button{
|
19
|
+
position: fixed;
|
20
|
+
right: 35px;
|
21
|
+
z-index: 200001;
|
22
|
+
}
|
23
|
+
|
24
|
+
%div{:id=>"fixed-gallery"}
|
25
|
+
- resource_class.lolita.tabs.select{|tab| tab.type == :files}.each do |tab|
|
26
|
+
%h1= tab.title
|
27
|
+
- files = tab.association_type == :one ? [resource.send(tab.association.name)].compact : resource.send(tab.association.name)
|
28
|
+
- files.each do |file|
|
29
|
+
- if file.send(tab.uploader).to_s =~ /(jpg|jpeg|png|gif)$/i
|
30
|
+
= image_tag(file.send(tab.uploader).url)
|
31
|
+
- else
|
32
|
+
= link_to file.send(tab.uploader).url, file.send(tab.uploader).url
|
33
|
+
%button{:onclick=>"$('#fixed-gallery').hide();"}Aizvērt
|
@@ -1,3 +1,7 @@
|
|
1
|
-
<%= form_tag send(:"
|
2
|
-
|
3
|
-
|
1
|
+
<%= form_tag send(:"lolita_#{resource_class.model_name.singular}_upload_path", "#{resource_class.model_name.singular}_id" => resource.id, :association => tab.association.name, :id=>file.id),:method=>:put,:remote=>true,:id=>"edit_#{tab.association.name}_#{file.id}" do %>
|
2
|
+
<% tab.editable_fields.each do |name| %>
|
3
|
+
<%= label_tag "file[#{name}]", file.class.human_attribute_name(name) %>
|
4
|
+
<%= text_field_tag "file[#{name}]",file.send(name) %>
|
5
|
+
<br />
|
6
|
+
<% end %>
|
7
|
+
<% end %>
|
@@ -1,14 +1,14 @@
|
|
1
|
-
<table id="file_list_for_<%=tab.
|
2
|
-
<thead>
|
3
|
-
<tr>
|
4
|
-
<th>Name</th>
|
5
|
-
<th>*</th>
|
6
|
-
</tr>
|
7
|
-
</thead>
|
8
|
-
<tbody>
|
9
|
-
<% files = tab.association_type == :one ? [resource.send(tab.association.name)].compact : resource.send(tab.association.name)%>
|
10
|
-
<% files.each do |file| %>
|
11
|
-
<%= render_component *tab.build("",:row,:file=>file,:value=>nil) %>
|
12
|
-
<% end %>
|
13
|
-
</tbody>
|
1
|
+
<table id="file_list_for_<%=tab.association.name%>">
|
2
|
+
<thead>
|
3
|
+
<tr>
|
4
|
+
<th>Name</th>
|
5
|
+
<th>*</th>
|
6
|
+
</tr>
|
7
|
+
</thead>
|
8
|
+
<tbody>
|
9
|
+
<% files = tab.association_type == :one ? [resource.send(tab.association.name)].compact : resource.send(tab.association.name) %>
|
10
|
+
<% files.each do |file| %>
|
11
|
+
<%= render_component *tab.build("",:row,:file=>file,:value=>nil) %>
|
12
|
+
<% end %>
|
13
|
+
</tbody>
|
14
14
|
</table>
|
@@ -1,6 +1,6 @@
|
|
1
|
-
<td>
|
2
|
-
<%=render_component *tab.build("",:form,:file=>file)%>
|
3
|
-
</td>
|
4
|
-
<td>
|
5
|
-
<%= link_to "S", "#", :onclick=>"$('
|
1
|
+
<td>
|
2
|
+
<%=render_component *tab.build("",:form,:file=>file)%>
|
3
|
+
</td>
|
4
|
+
<td>
|
5
|
+
<%= link_to "S", "#", :onclick=>"$('#edit_#{tab.association.name}_#{file.id}').submit();return false;" %>
|
6
6
|
</td>
|
@@ -1,3 +1,6 @@
|
|
1
|
-
<tr id="upload_<%=tab.
|
2
|
-
<%= render_component *tab.build("",:cells,:file=>file) %>
|
1
|
+
<tr id="upload_<%=tab.association.name%>_row_<%=file.id%>" data-<%=tab.association.name%>-id="<%=file.id%>">
|
2
|
+
<%= render_component *tab.build("",:cells,:file=>file) %>
|
3
|
+
<script>
|
4
|
+
$('#fixed-gallery').append("<%=escape_javascript(render_component(*tab.build("",:file,:file=>file,:format=>"html")))%>");
|
5
|
+
</script>
|
3
6
|
</tr>
|
@@ -1 +1 @@
|
|
1
|
-
$("#upload_<%=tab.
|
1
|
+
$("#upload_<%=tab.association.name%>_row_<%=file.id%>").html("<%=escape_javascript(render_component(*tab.build("",:cells,:file=>file,:format=>"html")))%>")
|
@@ -1,77 +1,79 @@
|
|
1
|
-
|
2
|
-
<link rel="stylesheet" href="
|
3
|
-
|
4
|
-
|
5
|
-
<script src="
|
6
|
-
<script type="text/javascript" src="/javascripts/lolita/upload/plupload.
|
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
|
-
"<%="upload[#{tab.association.options[:as]}
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
$("#file_list_for_<%=tab.
|
46
|
-
<% else %>
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
<%
|
51
|
-
|
52
|
-
<%
|
53
|
-
var ids
|
54
|
-
<%
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
1
|
+
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/overcast/jquery-ui.css" type="text/css" />
|
2
|
+
<link rel="stylesheet" href="/stylesheets/lolita/upload/jquery.ui.plupload.css" type="text/css" />
|
3
|
+
|
4
|
+
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js" type="text/javascript"></script>
|
5
|
+
<script type="text/javascript" src="/javascripts/lolita/upload/plupload.full.js"></script>
|
6
|
+
<script type="text/javascript" src="/javascripts/lolita/upload/jquery.ui.plupload.js"></script>
|
7
|
+
<% unless Lolita.locale.to_s.downcase=="en" %>
|
8
|
+
<script type="text/javascript" src="/javascripts/lolita/upload/I18n/<%=Lolita.locale%>.js"></script>
|
9
|
+
<% end %>
|
10
|
+
<script type="text/javascript">
|
11
|
+
$(function(){
|
12
|
+
$("#<%=container%>").plupload({
|
13
|
+
// General settings
|
14
|
+
runtimes : 'html5,flash',
|
15
|
+
url : '<%=send(:"create_upload_lolita_#{tab.dbi.klass.model_name.plural.downcase}_path", :association => tab.association.name)%>',
|
16
|
+
max_file_size : '100mb',
|
17
|
+
unique_names : true,
|
18
|
+
rename: true,
|
19
|
+
<% if tab.filters.any? %>
|
20
|
+
filters:[
|
21
|
+
<% tab.filters.each do |fdata| %>
|
22
|
+
{title: "<%=fdata[:title]%>", extensions: "<%= fdata[:extensions].is_a?(Array) ? fdata[:extensions].join(",") : fdata[:extensions] %>"},
|
23
|
+
<% end %>
|
24
|
+
],
|
25
|
+
<% end %>
|
26
|
+
multipart: true,
|
27
|
+
multipart_params: {
|
28
|
+
"authenticity_token" : '<%= form_authenticity_token %>',
|
29
|
+
<% if tab.association.options[:as] -%>
|
30
|
+
"<%="upload[#{tab.association.options[:as]}_type]"%>": "<%=resource.class%>",
|
31
|
+
"<%="upload[#{tab.association.options[:as]}_id]"%>": "<%=resource.new_record? ? 0 : resource.id%>"
|
32
|
+
<% else -%>
|
33
|
+
"<%="upload[#{lolita_mapping.singular}_id]"%>": "<%=resource.new_record? ? 0 : resource.id%>"
|
34
|
+
<% end -%>
|
35
|
+
},
|
36
|
+
headers:{
|
37
|
+
"X-CSRF-Token": $("meta[name='csrf-token']").attr("content")
|
38
|
+
},
|
39
|
+
|
40
|
+
// Flash settings
|
41
|
+
flash_swf_url : '/javascripts/lolita/upload/plupload.flash.swf',
|
42
|
+
init:{
|
43
|
+
FileUploaded:function(uploader, file, info){
|
44
|
+
<% if tab.association_type == :many %>
|
45
|
+
$("#file_list_for_<%=tab.association.name%>>tbody").append(info.response)
|
46
|
+
<% else %>
|
47
|
+
uploader.splice(0,10);
|
48
|
+
$("#file_list_for_<%=tab.association.name%>>tbody").html("")
|
49
|
+
$("#file_list_for_<%=tab.association.name%>>tbody").append(info.response)
|
50
|
+
<% end %>
|
51
|
+
|
52
|
+
<% if tab.association_type == :many %>
|
53
|
+
var ids="<%="#{resource_name}[#{tab.association.name.to_s.singularize}_ids][]"%>"
|
54
|
+
<% else %>
|
55
|
+
var ids = "<%="#{resource_name}[#{tab.association.name.to_s.singularize}_new]"%>"
|
56
|
+
<% end %>
|
57
|
+
|
58
|
+
var existing_ids=[]
|
59
|
+
$("input.<%=tab.association.name%>-ids").each(function(){
|
60
|
+
existing_ids.push($(this).val())
|
61
|
+
})
|
62
|
+
|
63
|
+
var new_ids=[]
|
64
|
+
$("#file_list_for_<%=tab.association.name%> tr[data-<%=tab.association.name%>-id]").each(function(){
|
65
|
+
if($.inArray($(this).attr("data-<%=tab.association.name%>-id"),existing_ids)<0){
|
66
|
+
new_ids.push($(this).attr("data-<%=tab.association.name%>-id"))
|
67
|
+
}
|
68
|
+
})
|
69
|
+
for(var i in new_ids){
|
70
|
+
$("#<%=tab.association.name%>_form").append('<input type="hidden" class="<%=tab.association.name%>-ids" name="'+ids+'" value="'+new_ids[i]+'" />')
|
71
|
+
}
|
72
|
+
|
73
|
+
}
|
74
|
+
},
|
75
|
+
|
76
|
+
});
|
77
|
+
|
78
|
+
});
|
79
|
+
</script>
|
data/config/locales/en.yml
CHANGED
@@ -1,19 +1,19 @@
|
|
1
|
-
en:
|
2
|
-
lolita:
|
3
|
-
upload:
|
4
|
-
errors:
|
5
|
-
"file too big": "file too big (max %{value} %{unit})"
|
6
|
-
support:
|
7
|
-
bytes:
|
8
|
-
byte:
|
9
|
-
one: byte
|
10
|
-
other: bytes
|
11
|
-
kilobyte:
|
12
|
-
one: kilobyte
|
13
|
-
other: kilobytes
|
14
|
-
megabyte:
|
15
|
-
one: megabyte
|
16
|
-
other: megabytes
|
17
|
-
gigabyte:
|
18
|
-
one: gigabyte
|
1
|
+
en:
|
2
|
+
lolita:
|
3
|
+
upload:
|
4
|
+
errors:
|
5
|
+
"file too big": "file too big (max %{value} %{unit})"
|
6
|
+
support:
|
7
|
+
bytes:
|
8
|
+
byte:
|
9
|
+
one: byte
|
10
|
+
other: bytes
|
11
|
+
kilobyte:
|
12
|
+
one: kilobyte
|
13
|
+
other: kilobytes
|
14
|
+
megabyte:
|
15
|
+
one: megabyte
|
16
|
+
other: megabytes
|
17
|
+
gigabyte:
|
18
|
+
one: gigabyte
|
19
19
|
other: gigabytes
|
@@ -1,26 +1,26 @@
|
|
1
|
-
Feature: lolita have new configuration for tab
|
2
|
-
|
3
|
-
Lolita file upload define new configuration for lolita tabs, that
|
4
|
-
allow to specify file types, file list view and add atributes for file.
|
5
|
-
Tab type for lolita-file-upload will be :file
|
6
|
-
|
7
|
-
Scenario: i am able to define new tab with type :file and set allowed file types
|
8
|
-
Given a lolita and lolita-file-upload
|
9
|
-
When I define a file tab for post
|
10
|
-
Then I can set included extension type pdf
|
11
|
-
|
12
|
-
Scenario: set maximum file upload size
|
13
|
-
Given a lolita
|
14
|
-
And a rails
|
15
|
-
And rails application
|
16
|
-
And file tab for post
|
17
|
-
When I set maximum file upload size to 100000
|
18
|
-
Then I cannot upload file large_file.txt
|
19
|
-
|
20
|
-
Scenario: set assciation with Lolita::Upload::File
|
21
|
-
Given a lolita
|
22
|
-
And lolita-file-upload
|
23
|
-
When I define a file tab for post
|
24
|
-
Then Post has association with Lolita::Upload::File
|
25
|
-
And association name for Post is :files
|
1
|
+
Feature: lolita have new configuration for tab
|
2
|
+
|
3
|
+
Lolita file upload define new configuration for lolita tabs, that
|
4
|
+
allow to specify file types, file list view and add atributes for file.
|
5
|
+
Tab type for lolita-file-upload will be :file
|
6
|
+
|
7
|
+
Scenario: i am able to define new tab with type :file and set allowed file types
|
8
|
+
Given a lolita and lolita-file-upload
|
9
|
+
When I define a file tab for post
|
10
|
+
Then I can set included extension type pdf
|
11
|
+
|
12
|
+
Scenario: set maximum file upload size
|
13
|
+
Given a lolita
|
14
|
+
And a rails
|
15
|
+
And rails application
|
16
|
+
And file tab for post
|
17
|
+
When I set maximum file upload size to 100000
|
18
|
+
Then I cannot upload file large_file.txt
|
19
|
+
|
20
|
+
Scenario: set assciation with Lolita::Upload::File
|
21
|
+
Given a lolita
|
22
|
+
And lolita-file-upload
|
23
|
+
When I define a file tab for post
|
24
|
+
Then Post has association with Lolita::Upload::File
|
25
|
+
And association name for Post is :files
|
26
26
|
|
@@ -1,14 +1,14 @@
|
|
1
|
-
Feature: lolita-file-upload connects to Lolita
|
2
|
-
|
3
|
-
To have all file upload features, file upload gem should connect itsefl to lolita base.
|
4
|
-
|
5
|
-
Scenario: lolita-file-upload load in universe
|
6
|
-
Given a lolita
|
7
|
-
When I load lolita-file-upload
|
8
|
-
Then lolita should have file-upload module
|
9
|
-
|
10
|
-
Scenario: lolita-file-upload starts rails engine
|
11
|
-
Given a rails
|
12
|
-
When I load lolita-file-upload
|
13
|
-
Then I have LolitaFileUpload engine
|
14
|
-
|
1
|
+
Feature: lolita-file-upload connects to Lolita
|
2
|
+
|
3
|
+
To have all file upload features, file upload gem should connect itsefl to lolita base.
|
4
|
+
|
5
|
+
Scenario: lolita-file-upload load in universe
|
6
|
+
Given a lolita
|
7
|
+
When I load lolita-file-upload
|
8
|
+
Then lolita should have file-upload module
|
9
|
+
|
10
|
+
Scenario: lolita-file-upload starts rails engine
|
11
|
+
Given a rails
|
12
|
+
When I load lolita-file-upload
|
13
|
+
Then I have LolitaFileUpload engine
|
14
|
+
|
@@ -1,17 +1,17 @@
|
|
1
|
-
Feature: all resoures have new routes for file upload
|
2
|
-
|
3
|
-
File upload lives in lolita/upload and loads only once when any of lolita resources has defined files tab.
|
4
|
-
|
5
|
-
Scenario: extend resources path
|
6
|
-
Given a lolita
|
7
|
-
And a rails
|
8
|
-
And rails application
|
9
|
-
And lolita-file-upload
|
10
|
-
When I load routes
|
11
|
-
Then I have get route /lolita/upload/files/new
|
12
|
-
And I have get route /lolita/upload/files/1/edit
|
13
|
-
And I have get route /lolita/upload/files/1
|
14
|
-
And I have post route /lolita/upload/files
|
15
|
-
And I have put route /lolita/upload/files/1
|
16
|
-
And I have delete route /lolita/upload/files/1
|
1
|
+
Feature: all resoures have new routes for file upload
|
2
|
+
|
3
|
+
File upload lives in lolita/upload and loads only once when any of lolita resources has defined files tab.
|
4
|
+
|
5
|
+
Scenario: extend resources path
|
6
|
+
Given a lolita
|
7
|
+
And a rails
|
8
|
+
And rails application
|
9
|
+
And lolita-file-upload
|
10
|
+
When I load routes
|
11
|
+
Then I have get route /lolita/upload/files/new
|
12
|
+
And I have get route /lolita/upload/files/1/edit
|
13
|
+
And I have get route /lolita/upload/files/1
|
14
|
+
And I have post route /lolita/upload/files
|
15
|
+
And I have put route /lolita/upload/files/1
|
16
|
+
And I have delete route /lolita/upload/files/1
|
17
17
|
And I have get route /lolita/upload/files
|
@@ -1,112 +1,112 @@
|
|
1
|
-
Given /^a lolita$/ do
|
2
|
-
|
3
|
-
end
|
4
|
-
|
5
|
-
When /^I load lolita\-file\-upload$/ do
|
6
|
-
require "lolita-file-upload"
|
7
|
-
end
|
8
|
-
|
9
|
-
Then /^lolita should have file\-upload module$/ do
|
10
|
-
Lolita.modules.include?(Lolita::FileUpload).should be_true
|
11
|
-
end
|
12
|
-
|
13
|
-
Given /^a rails$/ do
|
14
|
-
require 'rails'
|
15
|
-
require 'lolita/rails/all'
|
16
|
-
require 'lolita-file-upload/rails'
|
17
|
-
end
|
18
|
-
|
19
|
-
Given /^rails application$/ do
|
20
|
-
require File.expand_path("test_orm/rails/config/enviroment")
|
21
|
-
end
|
22
|
-
|
23
|
-
Then /^I have LolitaFileUpload engine$/ do
|
24
|
-
defined?(LolitaFileUpload::Engine).should be_true
|
25
|
-
end
|
26
|
-
|
27
|
-
Given /^a lolita and lolita\-file\-upload$/ do
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
When /^I define a file tab for (\w+)$/ do |model_name|
|
32
|
-
@file_tab=Support.file_tab(model_name)
|
33
|
-
end
|
34
|
-
|
35
|
-
Then /^I can set included extension type (\w+)$/ do |ext_name|
|
36
|
-
@file_tab.extension(ext_name)
|
37
|
-
@file_tab.extensions.size.should == 1
|
38
|
-
end
|
39
|
-
|
40
|
-
Given /^lolita\-file\-upload$/ do
|
41
|
-
|
42
|
-
end
|
43
|
-
|
44
|
-
Given /^file tab for (\w+)$/ do |model_name|
|
45
|
-
@file_tab=Support.file_tab(model_name)
|
46
|
-
end
|
47
|
-
|
48
|
-
When /^I set maximum file upload size to (\d+)$/ do |size|
|
49
|
-
@file_tab.maxfilesize(size)
|
50
|
-
end
|
51
|
-
|
52
|
-
Then /^I (c\w+)\supload file (\w+\.\w+)$/ do |predicate,file_name|
|
53
|
-
file=Lolita::Upload::File.create(:asset=>Support.get_file(file_name))
|
54
|
-
if predicate=="can"
|
55
|
-
file.errors.should be_empty
|
56
|
-
elsif predicate=="cannot"
|
57
|
-
file.errors[:asset].should_not be_nil
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
Then /^(\w+)\s+has association with ([\w:]+)$/ do |model_name,klass|
|
62
|
-
model=Support.get_model(model_name)
|
63
|
-
model.lolita.dbi.associations_klass_names.should include(klass)
|
64
|
-
end
|
65
|
-
|
66
|
-
Then /^association name for (\w+)\sis :(\w+)$/ do |model_name,assoc_name|
|
67
|
-
model=Support.get_model(model_name)
|
68
|
-
model.lolita.dbi.reflect_on_association(assoc_name.to_sym).should_not be_nil
|
69
|
-
end
|
70
|
-
|
71
|
-
When /^I upload file (.+)$/ do |file_name|
|
72
|
-
pending # express the regexp above with the code you wish you had
|
73
|
-
end
|
74
|
-
|
75
|
-
Then /^I see (\w+)$/ do |file_name|
|
76
|
-
pending # express the regexp above with the code you wish you had
|
77
|
-
end
|
78
|
-
|
79
|
-
Then /^I change file attribute ([^\s]) to (\w+)$/ do |attribute,value|
|
80
|
-
pending # express the regexp above with the code you wish you had
|
81
|
-
end
|
82
|
-
|
83
|
-
Then /^save file$/ do
|
84
|
-
pending # express the regexp above with the code you wish you had
|
85
|
-
end
|
86
|
-
|
87
|
-
Then /^I see (\w+)$/ do |file_name|
|
88
|
-
pending # express the regexp above with the code you wish you had
|
89
|
-
end
|
90
|
-
|
91
|
-
When /^I load routes$/ do
|
92
|
-
# routes is loaded when rails application loads, but i will load matcher for that
|
93
|
-
self.extend(Lolita::Test::Matchers)
|
94
|
-
# RSpec::Matchers.send(:include,Lolita::Test::Matchers)
|
95
|
-
end
|
96
|
-
|
97
|
-
Then /^I have (get|post|delete|put) route (.+)$/ do |method,url|
|
98
|
-
{method=>url}.should be_routable
|
99
|
-
end
|
100
|
-
|
101
|
-
Given /^byte converter$/ do
|
102
|
-
@converter=Lolita::Support::Bytes
|
103
|
-
end
|
104
|
-
|
105
|
-
When /^I humanize "([^"]*)"$/ do |size|
|
106
|
-
@converter=@converter.new(eval(size))
|
107
|
-
end
|
108
|
-
|
109
|
-
Then /^I should get "([^"]*)" and "([^"]*)"$/ do |unit, limit|
|
110
|
-
@converter.unit.should == unit
|
111
|
-
@converter.value.should == limit.to_f
|
112
|
-
end
|
1
|
+
Given /^a lolita$/ do
|
2
|
+
|
3
|
+
end
|
4
|
+
|
5
|
+
When /^I load lolita\-file\-upload$/ do
|
6
|
+
require "lolita-file-upload"
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^lolita should have file\-upload module$/ do
|
10
|
+
Lolita.modules.include?(Lolita::FileUpload).should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
Given /^a rails$/ do
|
14
|
+
require 'rails'
|
15
|
+
require 'lolita/rails/all'
|
16
|
+
require 'lolita-file-upload/rails'
|
17
|
+
end
|
18
|
+
|
19
|
+
Given /^rails application$/ do
|
20
|
+
require File.expand_path("test_orm/rails/config/enviroment")
|
21
|
+
end
|
22
|
+
|
23
|
+
Then /^I have LolitaFileUpload engine$/ do
|
24
|
+
defined?(LolitaFileUpload::Engine).should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
Given /^a lolita and lolita\-file\-upload$/ do
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
When /^I define a file tab for (\w+)$/ do |model_name|
|
32
|
+
@file_tab=Support.file_tab(model_name)
|
33
|
+
end
|
34
|
+
|
35
|
+
Then /^I can set included extension type (\w+)$/ do |ext_name|
|
36
|
+
@file_tab.extension(ext_name)
|
37
|
+
@file_tab.extensions.size.should == 1
|
38
|
+
end
|
39
|
+
|
40
|
+
Given /^lolita\-file\-upload$/ do
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
Given /^file tab for (\w+)$/ do |model_name|
|
45
|
+
@file_tab=Support.file_tab(model_name)
|
46
|
+
end
|
47
|
+
|
48
|
+
When /^I set maximum file upload size to (\d+)$/ do |size|
|
49
|
+
@file_tab.maxfilesize(size)
|
50
|
+
end
|
51
|
+
|
52
|
+
Then /^I (c\w+)\supload file (\w+\.\w+)$/ do |predicate,file_name|
|
53
|
+
file=Lolita::Upload::File.create(:asset=>Support.get_file(file_name))
|
54
|
+
if predicate=="can"
|
55
|
+
file.errors.should be_empty
|
56
|
+
elsif predicate=="cannot"
|
57
|
+
file.errors[:asset].should_not be_nil
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
Then /^(\w+)\s+has association with ([\w:]+)$/ do |model_name,klass|
|
62
|
+
model=Support.get_model(model_name)
|
63
|
+
model.lolita.dbi.associations_klass_names.should include(klass)
|
64
|
+
end
|
65
|
+
|
66
|
+
Then /^association name for (\w+)\sis :(\w+)$/ do |model_name,assoc_name|
|
67
|
+
model=Support.get_model(model_name)
|
68
|
+
model.lolita.dbi.reflect_on_association(assoc_name.to_sym).should_not be_nil
|
69
|
+
end
|
70
|
+
|
71
|
+
When /^I upload file (.+)$/ do |file_name|
|
72
|
+
pending # express the regexp above with the code you wish you had
|
73
|
+
end
|
74
|
+
|
75
|
+
Then /^I see (\w+)$/ do |file_name|
|
76
|
+
pending # express the regexp above with the code you wish you had
|
77
|
+
end
|
78
|
+
|
79
|
+
Then /^I change file attribute ([^\s]) to (\w+)$/ do |attribute,value|
|
80
|
+
pending # express the regexp above with the code you wish you had
|
81
|
+
end
|
82
|
+
|
83
|
+
Then /^save file$/ do
|
84
|
+
pending # express the regexp above with the code you wish you had
|
85
|
+
end
|
86
|
+
|
87
|
+
Then /^I see (\w+)$/ do |file_name|
|
88
|
+
pending # express the regexp above with the code you wish you had
|
89
|
+
end
|
90
|
+
|
91
|
+
When /^I load routes$/ do
|
92
|
+
# routes is loaded when rails application loads, but i will load matcher for that
|
93
|
+
self.extend(Lolita::Test::Matchers)
|
94
|
+
# RSpec::Matchers.send(:include,Lolita::Test::Matchers)
|
95
|
+
end
|
96
|
+
|
97
|
+
Then /^I have (get|post|delete|put) route (.+)$/ do |method,url|
|
98
|
+
{method=>url}.should be_routable
|
99
|
+
end
|
100
|
+
|
101
|
+
Given /^byte converter$/ do
|
102
|
+
@converter=Lolita::Support::Bytes
|
103
|
+
end
|
104
|
+
|
105
|
+
When /^I humanize "([^"]*)"$/ do |size|
|
106
|
+
@converter=@converter.new(eval(size))
|
107
|
+
end
|
108
|
+
|
109
|
+
Then /^I should get "([^"]*)" and "([^"]*)"$/ do |unit, limit|
|
110
|
+
@converter.unit.should == unit
|
111
|
+
@converter.value.should == limit.to_f
|
112
|
+
end
|