refinerycms-core 3.0.1 → 3.0.2
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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/refinery/_colours.scss +1 -1
- data/app/assets/stylesheets/refinery/_icons.scss +2 -0
- data/app/assets/stylesheets/refinery/_layout.scss +1 -0
- data/app/helpers/refinery/image_helper.rb +1 -1
- data/app/helpers/refinery/tag_helper.rb +2 -1
- data/app/helpers/refinery/translation_helper.rb +3 -0
- data/app/presenters/refinery/base_presenter.rb +3 -3
- data/app/presenters/refinery/translated_field_presenter.rb +15 -0
- data/app/views/layouts/refinery/admin.html.erb +1 -1
- data/app/views/refinery/_head.html.erb +2 -2
- data/config/locales/en.yml +2 -1
- data/config/locales/nl.yml +7 -0
- data/config/locales/zh-CN.yml +0 -0
- data/lib/generators/refinery/engine/USAGE +1 -1
- data/lib/generators/refinery/engine/templates/app/views/refinery/namespace/admin/plural_name/_singular_name.html.erb +18 -14
- data/lib/generators/refinery/engine/templates/db/seeds.rb.erb +1 -1
- data/lib/generators/refinery/engine/templates/refinerycms-extension_plural_name.gemspec +1 -0
- data/lib/generators/refinery/engine/templates/spec/spec_helper.rb +0 -1
- data/lib/refinery.rb +1 -0
- data/lib/refinery/application_controller.rb +1 -1
- data/lib/refinery/core/engine.rb +1 -1
- data/lib/refinery/crud.rb +7 -7
- data/lib/refinery/extension_generation.rb +5 -0
- data/lib/refinery/version.rb +1 -1
- data/license.md +1 -1
- data/refinerycms-core.gemspec +1 -0
- data/spec/helpers/refinery/translation_helper_spec.rb +30 -1
- data/spec/lib/generators/refinery/engine/engine_generator_with_author_spec.rb +90 -0
- data/spec/presenters/refinery/translated_field_presenter_spec.rb +35 -0
- metadata +27 -25
- data/config/initializers/assets.rb +0 -6
- data/vendor/assets/fonts/font-awesome/FontAwesome.otf +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.eot +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.svg +0 -565
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff +0 -0
- data/vendor/assets/fonts/font-awesome/fontawesome-webfont.woff2 +0 -0
- data/vendor/assets/stylesheets/_font-awesome-compass.scss +0 -5
- data/vendor/assets/stylesheets/_font-awesome-sprockets.scss +0 -5
- data/vendor/assets/stylesheets/_font-awesome.scss +0 -17
- data/vendor/assets/stylesheets/font-awesome/_animated.scss +0 -34
- data/vendor/assets/stylesheets/font-awesome/_bordered-pulled.scss +0 -16
- data/vendor/assets/stylesheets/font-awesome/_core.scss +0 -12
- data/vendor/assets/stylesheets/font-awesome/_extras.scss +0 -44
- data/vendor/assets/stylesheets/font-awesome/_fixed-width.scss +0 -6
- data/vendor/assets/stylesheets/font-awesome/_icons.scss +0 -596
- data/vendor/assets/stylesheets/font-awesome/_larger.scss +0 -13
- data/vendor/assets/stylesheets/font-awesome/_list.scss +0 -19
- data/vendor/assets/stylesheets/font-awesome/_mixins.scss +0 -26
- data/vendor/assets/stylesheets/font-awesome/_path.scss +0 -14
- data/vendor/assets/stylesheets/font-awesome/_rotated-flipped.scss +0 -20
- data/vendor/assets/stylesheets/font-awesome/_stacked.scss +0 -20
- data/vendor/assets/stylesheets/font-awesome/_variables.scss +0 -606
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b4a8adbdc868b1a05d524a24e5cfc6b6742004c
|
4
|
+
data.tar.gz: ed062b6ec449a4c2e27e14c6fe52299740d04411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 094c812cf2973fb866be1a7bfad33a813da1d95cb3ff0882e56a4e8b40f1b4d6510f44e5a408f791dca9960f43f3f52fc28fe3c509eaa3afce71e948289c4c50
|
7
|
+
data.tar.gz: 23e55f338fe65c9469d0b617ef52344305ddc01a17371ab2b0f65cc91dca2d814f4bf861e5565aab2f5fd937bc668f1145411cfbb4e984a652ad111e572fd2ce
|
@@ -12,7 +12,7 @@ $icon_preview_colour: $icon_default_colour;
|
|
12
12
|
$icon_locale_colour: #b7e3fc; // pale blue
|
13
13
|
$icon_done_colour: #00a017; //
|
14
14
|
$info_icon_blue: #316CC8;
|
15
|
-
|
15
|
+
$icon_warning_colour: #FF6600; // orange
|
16
16
|
|
17
17
|
$action_background_colour: lighten($icon_locale_colour,10%);
|
18
18
|
$action_border_colour: $icon_locale_colour;
|
@@ -61,6 +61,7 @@
|
|
61
61
|
.switch_view_list_icon {@include icon('list')}
|
62
62
|
.upload_icon {@include icon('upload');}
|
63
63
|
.user_comment_icon {@include icon('comment-o');}
|
64
|
+
.warning_icon {@include icon('warning', $icon_warning_colour)}
|
64
65
|
|
65
66
|
.hidden_icon {display:none}
|
66
67
|
.unhidden_icon {display: inline-block}
|
@@ -83,3 +84,4 @@
|
|
83
84
|
// don't want underlines on icons
|
84
85
|
#content a[class$='icon'] {border-bottom: none}
|
85
86
|
#content a[class$='icon']:hover {border-bottom: none}
|
87
|
+
|
@@ -7,7 +7,7 @@ module Refinery
|
|
7
7
|
content.gsub(%r{<img.+?src=['"](/system/images/.+?)/.+?/>}) do |img|
|
8
8
|
begin
|
9
9
|
sha = img.match(%r{/system/images/(.+?)/})[1]
|
10
|
-
job = Dragonfly::Job.deserialize sha, Dragonfly
|
10
|
+
job = Dragonfly::Job.deserialize sha, Dragonfly.app(:refinery_images)
|
11
11
|
|
12
12
|
image_fu Image.where(:image_uid => job.uid).first, thumbnail
|
13
13
|
rescue Dragonfly::Serializer::BadString
|
@@ -5,7 +5,8 @@ module Refinery
|
|
5
5
|
|
6
6
|
# Remember to wrap your block with <span class='label_with_help'></span> if you're using a label next to the help tag.
|
7
7
|
def refinery_help_tag(title='Tip')
|
8
|
-
|
8
|
+
title = title.html_safe? ? title : h(title)
|
9
|
+
action_icon(:info, '#', title, {tooltip: title})
|
9
10
|
end
|
10
11
|
|
11
12
|
# This is just a quick wrapper to render an image tag that lives inside refinery/icons.
|
@@ -15,7 +15,7 @@ module Refinery
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def method_missing(method, *args)
|
18
|
-
if @model.respond_to? method
|
18
|
+
if @model.respond_to? method, include_all = true
|
19
19
|
@model.send method
|
20
20
|
elsif DEFAULT_FIELDS.has_key? method
|
21
21
|
(value = DEFAULT_FIELDS[method]).is_a?(Proc) ? value.call(self) : value
|
@@ -24,8 +24,8 @@ module Refinery
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
def respond_to?(method)
|
28
|
-
super || @model.respond_to?(method) || DEFAULT_FIELDS.has_key?(method)
|
27
|
+
def respond_to?(method, include_all = false)
|
28
|
+
super || @model.respond_to?(method, include_all) || DEFAULT_FIELDS.has_key?(method)
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Refinery
|
2
|
+
class TranslatedFieldPresenter
|
3
|
+
def initialize(record)
|
4
|
+
@record = record
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(field)
|
8
|
+
record.send(field).presence ||
|
9
|
+
record.translations.detect {|t| t.send(field).present?}.send(field)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
attr_accessor :record
|
14
|
+
end
|
15
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<%= render '/refinery/html_tag' %>
|
3
|
-
<% content_for :meta,
|
3
|
+
<% content_for :meta, tag(:meta, name: 'refinerycms', content: Refinery.version) %>
|
4
4
|
<%= render 'refinery/admin/head' %>
|
5
5
|
<body class="<%= action_name %> <%= I18n.locale %>">
|
6
6
|
<%= render '/refinery/site_bar' %>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<meta charset='<%= Rails.application.config.encoding %>' />
|
2
2
|
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><![endif]-->
|
3
3
|
<title><%= browser_title(yield(:title)) %></title>
|
4
|
-
<%=
|
5
|
-
<%=
|
4
|
+
<%= tag(:meta, name: 'description', content: @meta.meta_description) if @meta.meta_description.present? -%>
|
5
|
+
<%= tag(:link, href: request.protocol+request.host_with_port+@canonical, rel: 'canonical') if @canonical.present? -%>
|
6
6
|
<%= csrf_meta_tags if Refinery::Core.authenticity_token_on_frontend -%>
|
7
7
|
<%= yield :meta %>
|
8
8
|
|
data/config/locales/en.yml
CHANGED
@@ -37,7 +37,7 @@ en:
|
|
37
37
|
delete: Remove
|
38
38
|
close: Close
|
39
39
|
image_picker:
|
40
|
-
none_selected:
|
40
|
+
none_selected: No image selected, please click here to add one.
|
41
41
|
remove_current: Remove current image
|
42
42
|
change: Click here to pick an image
|
43
43
|
show: Show
|
@@ -55,6 +55,7 @@ en:
|
|
55
55
|
results_for_html: "Search results for ‘<em>%{query}</em>’"
|
56
56
|
no_results: 'Sorry, no results found'
|
57
57
|
cancel_search: 'Cancel search'
|
58
|
+
search_input_notice: ''
|
58
59
|
input:
|
59
60
|
placeholder: "Search …"
|
60
61
|
help: 'Enter a word or phrase you want to search for'
|
data/config/locales/nl.yml
CHANGED
@@ -41,6 +41,8 @@ nl:
|
|
41
41
|
remove_current: "Huidige afbeelding verwijderen"
|
42
42
|
change: Klik hier om een afbeelding te kiezen
|
43
43
|
show: Tonen
|
44
|
+
locale_picker:
|
45
|
+
language: Taal
|
44
46
|
resource_picker:
|
45
47
|
download_current: "Huidig bestand downloaden"
|
46
48
|
opens_in_new_window: Opent in een nieuw venster
|
@@ -52,6 +54,11 @@ nl:
|
|
52
54
|
button_text: Zoeken
|
53
55
|
results_for_html: "Zoekresultaten voor ‘<em>%{query}</em>’"
|
54
56
|
no_results: "Excuses, geen resultaten gevonden"
|
57
|
+
cancel_search: 'Stop met zoeken'
|
58
|
+
search_input_notice: ''
|
59
|
+
input:
|
60
|
+
placeholder: "Zoek …"
|
61
|
+
help: 'Vul een woord ofz in in waar je op wil zoeken'
|
55
62
|
delete:
|
56
63
|
message: Weet u zeker dat u '%{title}' wilt verwijderen?
|
57
64
|
error_messages:
|
data/config/locales/zh-CN.yml
CHANGED
File without changes
|
@@ -20,5 +20,5 @@ Additional Supported Field Types
|
|
20
20
|
resource - link to a resource picker dialogue
|
21
21
|
|
22
22
|
Examples:
|
23
|
-
rails generate refinery:engine product title:string description:text image:image brochure:resource
|
23
|
+
rails generate refinery:engine product title:string description:text image:image brochure:resource --authors 'John Jones'
|
24
24
|
rails generate refinery:engine product title:string description:text image:image brochure:resource --i18n title description
|
@@ -1,25 +1,29 @@
|
|
1
1
|
<% title_attribute = (title = attributes.detect { |a| a.type.to_s == "string" }).present? ? title.name : 'title' -%>
|
2
2
|
<li class='clearfix record <%%= cycle("on", "on-hover") %>' id="<%%= dom_id(<%= singular_name %>) -%>">
|
3
3
|
<span class='title'>
|
4
|
-
|
4
|
+
<% if localized? %><%%= translated_field(<%= singular_name %>, :<%= title_attribute %>) %><% else %><%%= <%= singular_name %>.<%= title_attribute %> %><% end %>
|
5
|
+
</span>
|
5
6
|
<% if localized? %>
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
<%% if Refinery::I18n.frontend_locales.many? %>
|
8
|
+
<span class='locales'>
|
9
|
+
<%% <%= singular_name %>.translations.sort_by{ |t| Refinery::I18n.frontend_locales.index(t.locale)}.each do |translation| %>
|
10
|
+
<%% if translation.<%= title_attribute %>.present? %>
|
11
|
+
<%%= link_to refinery.edit_<%= namespacing.underscore %>_admin_<%= singular_name %>_path(<%= singular_name %>, :switch_locale => translation.locale),
|
12
|
+
class: 'locale', title: translation.locale.upcase do %>
|
13
|
+
|
14
|
+
<div class="<%%=translation.locale %> locale_marker">
|
15
|
+
<%%= locale_text_icon(translation.locale.upcase) %>
|
16
|
+
</div>
|
13
17
|
<%% end %>
|
14
18
|
<%% end %>
|
15
|
-
|
16
|
-
|
19
|
+
<%% end %>
|
20
|
+
</span>
|
21
|
+
<%% end %>
|
17
22
|
<% end %>
|
18
|
-
|
23
|
+
<span class='preview'></span>
|
24
|
+
|
19
25
|
<span class='actions'>
|
20
|
-
<% unless skip_frontend? %>
|
21
|
-
<%%= action_icon(:preview, refinery.<%= namespacing.underscore %>_<%= singular_name %>_path(<%= singular_name %>), t('.view_live_html')) %>
|
22
|
-
<%end %>
|
26
|
+
<% unless skip_frontend? %><%%= action_icon(:preview, refinery.<%= namespacing.underscore %>_<%= singular_name %>_path(<%= singular_name %>), t('.view_live_html')) %><%end %>
|
23
27
|
<%%= action_icon(:edit, refinery.edit_<%= namespacing.underscore %>_admin_<%= singular_name %>_path(<%= singular_name %>), t('.edit') ) %>
|
24
28
|
<%%= action_icon(:delete, refinery.<%= namespacing.underscore %>_admin_<%= singular_name %>_path(<%= singular_name %>), t('.delete'),
|
25
29
|
{ class: "cancel confirm-delete",
|
@@ -14,7 +14,7 @@ Refinery::I18n.frontend_locales.each do |lang|
|
|
14
14
|
menu_match: "^#{url}(\/|\/.+?|)$"
|
15
15
|
) do |page|
|
16
16
|
Refinery::Pages.default_parts.each_with_index do |part, index|
|
17
|
-
page.parts.build title: part, body: nil, position: index
|
17
|
+
page.parts.build title: part[:title], slug: part[:slug], body: nil, position: index
|
18
18
|
end
|
19
19
|
end if defined?(Refinery::Page)
|
20
20
|
<% end -%>
|
@@ -7,6 +7,7 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.description = 'Ruby on Rails <%= extension_plural_name.titleize %> extension for Refinery CMS'
|
8
8
|
s.date = '<%= Time.now.strftime('%Y-%m-%d') %>'
|
9
9
|
s.summary = '<%= extension_plural_name.titleize %> extension for Refinery CMS'
|
10
|
+
s.authors = <%= extension_authors %>
|
10
11
|
s.require_paths = %w(lib)
|
11
12
|
s.files = Dir["{app,config,db,lib}/**/*"] + ["readme.md"]
|
12
13
|
|
data/lib/refinery.rb
CHANGED
@@ -11,7 +11,7 @@ module Refinery
|
|
11
11
|
:current_refinery_user,
|
12
12
|
:authorisation_manager, :authorization_manager
|
13
13
|
|
14
|
-
base.protect_from_forgery # See ActionController::RequestForgeryProtection
|
14
|
+
base.protect_from_forgery with: :exception # See ActionController::RequestForgeryProtection
|
15
15
|
|
16
16
|
base.send :include, Refinery::Crud # basic create, read, update and delete methods
|
17
17
|
|
data/lib/refinery/core/engine.rb
CHANGED
@@ -36,7 +36,7 @@ module Refinery
|
|
36
36
|
# Wrap errors in spans
|
37
37
|
config.to_prepare do
|
38
38
|
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
|
39
|
-
|
39
|
+
ActionController::Base.helpers.content_tag(:span, html_tag, class: "fieldWithErrors")
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
data/lib/refinery/crud.rb
CHANGED
@@ -227,7 +227,7 @@ module Refinery
|
|
227
227
|
:create_or_update_successful,
|
228
228
|
:create_or_update_unsuccessful,
|
229
229
|
:merge_position_into_params!
|
230
|
-
)
|
230
|
+
), __FILE__, __LINE__
|
231
231
|
|
232
232
|
# Methods that are only included when this controller is searchable.
|
233
233
|
if options[:searchable]
|
@@ -239,7 +239,7 @@ module Refinery
|
|
239
239
|
|
240
240
|
render_partial_response?
|
241
241
|
end
|
242
|
-
)
|
242
|
+
), __FILE__, __LINE__
|
243
243
|
else
|
244
244
|
module_eval %(
|
245
245
|
def index
|
@@ -251,7 +251,7 @@ module Refinery
|
|
251
251
|
|
252
252
|
render_partial_response?
|
253
253
|
end
|
254
|
-
)
|
254
|
+
), __FILE__, __LINE__
|
255
255
|
end
|
256
256
|
|
257
257
|
else
|
@@ -262,14 +262,14 @@ module Refinery
|
|
262
262
|
|
263
263
|
render_partial_response?
|
264
264
|
end
|
265
|
-
)
|
265
|
+
), __FILE__, __LINE__
|
266
266
|
else
|
267
267
|
module_eval %(
|
268
268
|
def index
|
269
269
|
find_all_#{plural_name}
|
270
270
|
render_partial_response?
|
271
271
|
end
|
272
|
-
)
|
272
|
+
), __FILE__, __LINE__
|
273
273
|
end
|
274
274
|
|
275
275
|
end
|
@@ -333,7 +333,7 @@ module Refinery
|
|
333
333
|
end
|
334
334
|
|
335
335
|
protected :after_update_positions
|
336
|
-
)
|
336
|
+
), __FILE__, __LINE__
|
337
337
|
end
|
338
338
|
|
339
339
|
module_eval %(
|
@@ -351,7 +351,7 @@ module Refinery
|
|
351
351
|
#{options[:searchable]}
|
352
352
|
end
|
353
353
|
end
|
354
|
-
)
|
354
|
+
), __FILE__, __LINE__
|
355
355
|
|
356
356
|
end
|
357
357
|
|
@@ -6,6 +6,7 @@ module Refinery
|
|
6
6
|
argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
|
7
7
|
|
8
8
|
class_option :namespace, :type => :string, :default => nil, :banner => 'NAMESPACE', :required => false
|
9
|
+
class_option :authors, :type => :array, :default => [], :banner => 'author author', :required => false, :desc => 'Indicates authors of this extension'
|
9
10
|
class_option :extension, :type => :string, :default => nil, :banner => 'ENGINE', :required => false
|
10
11
|
class_option :i18n, :type => :array, :default => [], :required => false, :banner => "field field", :desc => 'Indicates generated fields'
|
11
12
|
class_option :install, :type => :boolean, :default => false, :required => false, :banner => nil, :desc => 'Bundles and runs the generated generator, rake db:migrate, rake db:seed for you'
|
@@ -33,6 +34,10 @@ module Refinery
|
|
33
34
|
@extension_name ||= options[:extension].presence || singular_name
|
34
35
|
end
|
35
36
|
|
37
|
+
def extension_authors
|
38
|
+
@extension_authors ||= options[:authors].presence
|
39
|
+
end
|
40
|
+
|
36
41
|
def extension_class_name
|
37
42
|
@extension_class_name ||= extension_name.camelize
|
38
43
|
end
|
data/lib/refinery/version.rb
CHANGED
data/license.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# MIT License
|
2
2
|
|
3
|
-
Copyright (c) 2005 [Resolve Digital](
|
3
|
+
Copyright (c) 2005 [Resolve Digital](https://resolve.digital)
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/refinerycms-core.gemspec
CHANGED
@@ -30,6 +30,7 @@ Gem::Specification.new do |s|
|
|
30
30
|
s.add_dependency 'truncate_html', '~> 0.9'
|
31
31
|
s.add_dependency 'will_paginate', '~> 3.0.2'
|
32
32
|
s.add_dependency 'sass-rails', '>= 4.0', '< 5.1'
|
33
|
+
s.add_dependency 'font-awesome-sass', '>= 4.3.0', '< 5.0'
|
33
34
|
s.add_dependency 'coffee-rails', ['~> 4.0', '>= 4.0.0']
|
34
35
|
s.add_dependency 'jquery-rails', '>= 2.3.0'
|
35
36
|
s.add_dependency 'jquery-ui-rails', '~> 5.0.0'
|
@@ -10,5 +10,34 @@ module Refinery
|
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
+
describe "#translated_field" do
|
14
|
+
let(:page) { FactoryGirl.build(:page) }
|
15
|
+
|
16
|
+
before do
|
17
|
+
Globalize.with_locale(:en) do
|
18
|
+
page.title = "draft"
|
19
|
+
page.save!
|
20
|
+
end
|
21
|
+
|
22
|
+
Globalize.with_locale(:lv) do
|
23
|
+
page.title = "melnraksts"
|
24
|
+
page.save!
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context "when title is present" do
|
29
|
+
it "returns it" do
|
30
|
+
expect(helper.translated_field(page, :title)).to eq("draft")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when title for current locale isn't available" do
|
35
|
+
it "returns existing title from translations" do
|
36
|
+
Page.translation_class.where(locale: :en).first.destroy
|
37
|
+
expect(helper.translated_field(page, :title)).to eq("melnraksts")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
13
42
|
end
|
14
|
-
end
|
43
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'generator_spec/test_case'
|
3
|
+
require 'generators/refinery/engine/engine_generator'
|
4
|
+
|
5
|
+
module Refinery
|
6
|
+
describe EngineGenerator do
|
7
|
+
include GeneratorSpec::TestCase
|
8
|
+
destination File.expand_path("../../../../../../tmp", __FILE__)
|
9
|
+
|
10
|
+
before do
|
11
|
+
prepare_destination
|
12
|
+
run_generator %w{ rspec_product_test title:string description:text image:image brochure:resource --authors Author1 Author2 }
|
13
|
+
end
|
14
|
+
|
15
|
+
it "uses reference columns for image and resource attributes" do
|
16
|
+
File.open("#{destination_root}/vendor/extensions/rspec_product_tests/refinerycms-rspec_product_tests.gemspec") do |file|
|
17
|
+
content = file.read
|
18
|
+
expect(content.include?('["Author1", "Author2"]')).to be_truthy
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
specify do
|
23
|
+
expect(destination_root).to have_structure {
|
24
|
+
directory "vendor" do
|
25
|
+
directory "extensions" do
|
26
|
+
directory "rspec_product_tests" do
|
27
|
+
directory "app" do
|
28
|
+
directory "controllers" do
|
29
|
+
directory "refinery" do
|
30
|
+
directory "rspec_product_tests" do
|
31
|
+
directory "admin" do
|
32
|
+
file "rspec_product_tests_controller.rb"
|
33
|
+
end
|
34
|
+
file "rspec_product_tests_controller.rb"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
directory "models" do
|
39
|
+
directory "refinery" do
|
40
|
+
directory "rspec_product_tests" do
|
41
|
+
file "rspec_product_test.rb"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
directory "views" do
|
46
|
+
directory "refinery" do
|
47
|
+
directory "rspec_product_tests" do
|
48
|
+
directory "admin" do
|
49
|
+
directory "rspec_product_tests" do
|
50
|
+
file "_form.html.erb"
|
51
|
+
file "_sortable_list.html.erb"
|
52
|
+
file "edit.html.erb"
|
53
|
+
file "index.html.erb"
|
54
|
+
file "new.html.erb"
|
55
|
+
file "_rspec_product_test.html.erb"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
directory "rspec_product_tests" do
|
59
|
+
file "index.html.erb"
|
60
|
+
file "show.html.erb"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
directory "lib" do
|
67
|
+
file "refinerycms-rspec_product_tests.rb"
|
68
|
+
end
|
69
|
+
directory "spec" do
|
70
|
+
file "spec_helper.rb"
|
71
|
+
end
|
72
|
+
directory "tasks" do
|
73
|
+
file "testing.rake"
|
74
|
+
file "rspec.rake"
|
75
|
+
end
|
76
|
+
directory "config" do
|
77
|
+
directory "locales" do
|
78
|
+
file "en.yml"
|
79
|
+
end
|
80
|
+
file "routes.rb"
|
81
|
+
end
|
82
|
+
file "Gemfile"
|
83
|
+
file "Rakefile"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
}
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|