mokio 0.0.11 → 0.0.12
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/Rakefile +2 -0
- data/app/assets/stylesheets/backend/custom.css.scss +1 -1
- data/app/views/mokio/common/_meta.html.slim +20 -20
- data/app/views/mokio/menus/_form.html.haml +1 -1
- data/app/views/mokio/menus/_menu.html.slim +7 -1
- data/app/views/mokio/menus/index.html.slim +1 -0
- data/app/views/mokio/menus/new_menu_position.slim +21 -0
- data/config/locales/en.yml +4 -1
- data/config/locales/pl.yml +4 -1
- data/config/routes.rb +6 -3
- data/db/migrate/20140422135850_add_mokio_to_application.rb +15 -15
- data/lib/mokio/concerns/controllers/menus.rb +25 -2
- data/lib/mokio/concerns/models/contact.rb +1 -1
- data/lib/mokio/concerns/models/menu.rb +2 -1
- data/lib/mokio/concerns/models/recipient.rb +0 -9
- data/lib/mokio/engine.rb +8 -0
- data/lib/mokio/frontend_helpers/langs_helper.rb +16 -9
- data/lib/mokio/frontend_helpers/menu_helper.rb +21 -16
- data/lib/mokio/slugged.rb +5 -0
- data/lib/mokio/version.rb +1 -1
- data/spec/controllers/{backend → mokio}/contents_controller_spec.rb +34 -25
- data/spec/controllers/mokio/dashboard_controller_spec.rb +76 -0
- data/spec/controllers/{backend → mokio}/menus_controller_spec.rb +104 -99
- data/spec/controllers/mokio/mov_galleries_controller_spec.rb +125 -0
- data/spec/controllers/mokio/photos_controller_spec.rb +350 -0
- data/spec/controllers/mokio/pic_galleries_controller_spec.rb +125 -0
- data/spec/controllers/mokio/static_modules_controller_spec.rb +166 -0
- data/spec/factories/contact_templates.rb +1 -1
- data/spec/factories/content_links_factory.rb +1 -1
- data/spec/factories/contents_factory.rb +8 -8
- data/spec/factories/gmaps.rb +1 -1
- data/spec/factories/langs.rb +1 -1
- data/spec/factories/menus_factory.rb +1 -1
- data/spec/factories/meta.rb +1 -1
- data/spec/factories/recipients.rb +1 -1
- data/spec/factories/selected_modules.rb +1 -1
- data/spec/factories/static_modules_factory.rb +2 -2
- data/spec/factories/users.rb +1 -1
- data/spec/helpers/mokio/common_helper_spec.rb +141 -0
- data/spec/helpers/mokio/menus_helper_spec.rb +70 -0
- data/spec/models/available_module_spec.rb +13 -10
- data/spec/models/contact_template_spec.rb +5 -3
- data/spec/models/content_link_spec.rb +5 -4
- data/spec/models/content_spec.rb +71 -70
- data/spec/models/data_file_spec.rb +5 -4
- data/spec/models/gmap_spec.rb +5 -4
- data/spec/models/lang_spec.rb +5 -4
- data/spec/models/menu_spec.rb +10 -2
- data/spec/models/meta_spec.rb +5 -4
- data/spec/models/module_position_spec.rb +11 -10
- data/spec/models/mov_gallery_spec.rb +62 -59
- data/spec/models/pic_gallery_spec.rb +62 -59
- data/spec/models/recipient_spec.rb +5 -4
- data/spec/models/selected_module_spec.rb +72 -88
- data/spec/models/static_module_spec.rb +56 -55
- data/spec/models/user_spec.rb +7 -3
- data/spec/spec_helper.rb +4 -1
- metadata +21 -22
- data/spec/controllers/backend/dashboard_controller_spec.rb +0 -69
- data/spec/controllers/backend/mov_galleries_controller_spec.rb +0 -118
- data/spec/controllers/backend/photos_controller_spec.rb +0 -342
- data/spec/controllers/backend/pic_galleries_controller_spec.rb +0 -118
- data/spec/controllers/backend/static_modules_controller_spec.rb +0 -159
- data/spec/factories/tags.rb +0 -17
- data/spec/helpers/backend/common_helper_spec.rb +0 -137
- data/spec/helpers/backend/menus_helper_spec.rb +0 -64
@@ -10,22 +10,29 @@ module Mokio
|
|
10
10
|
#
|
11
11
|
# ==== Attributes
|
12
12
|
#
|
13
|
-
# * +controller_action+ - your controller action path (e.g. "content_home_path")
|
14
13
|
# * +image_folder+ - folder where helper will search country flag images (default: "langs" - searched in app/assets/images/langs)
|
15
|
-
# * +
|
14
|
+
# * +nav_class+ - nav css class (defaut: "lang_nav")
|
16
15
|
# * +image_ext+ - language flag image extension(defaut: "png")
|
17
16
|
#
|
18
|
-
def build_lang_menu(
|
19
|
-
|
17
|
+
def build_lang_menu(image_folder = "langs", nav_class = "lang_nav", image_ext = "png")
|
18
|
+
lang_links = ''
|
19
|
+
|
20
20
|
Mokio::Lang.active.each do |lang|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
html << lang_form
|
21
|
+
lang_link =<<HTML
|
22
|
+
<li>#{link_to_unless(I18n.locale.to_s == lang.shortname, image_tag("#{image_folder}/#{lang.shortname}.#{image_ext}"), root_url( locale: lang.shortname.to_sym ), class: 'lang-link')}</li>
|
23
|
+
HTML
|
24
|
+
lang_links << lang_link
|
26
25
|
end
|
26
|
+
html =<<HTML
|
27
|
+
<nav id="#{nav_class}">
|
28
|
+
<ul id='lang_list'>
|
29
|
+
#{lang_links}
|
30
|
+
</ul>
|
31
|
+
</nav>
|
32
|
+
HTML
|
27
33
|
html.html_safe
|
28
34
|
end
|
35
|
+
|
29
36
|
end
|
30
37
|
end
|
31
38
|
end
|
@@ -103,10 +103,10 @@ module Mokio
|
|
103
103
|
# Finds proper menu element - based on lang and menu position and calls build_menu_extended for this menu element
|
104
104
|
#
|
105
105
|
|
106
|
-
def build_menu_extended_lang(menu_position_name, lang_code,
|
106
|
+
def build_menu_extended_lang(menu_position_name, lang_code, options = {})
|
107
107
|
lang = Mokio::Lang.find_by_shortname(lang_code)
|
108
108
|
menu_parent = Mokio::Menu.where(lang_id: lang.id, name: menu_position_name) unless lang.blank?
|
109
|
-
build_menu_extended(menu_parent.first.id,
|
109
|
+
build_menu_extended(menu_parent.first.id, options) unless menu_parent.blank?
|
110
110
|
end
|
111
111
|
|
112
112
|
|
@@ -141,9 +141,9 @@ module Mokio
|
|
141
141
|
# ==== Attributes
|
142
142
|
#
|
143
143
|
# * +menu_parent_id+ - starting menu element's id - this element will be displayed or not and all its children will be displayed
|
144
|
-
# * +include_menu_parent+ - whether parent menu element should be displayed or not
|
145
|
-
# * +limit+ - how deep should builder look for children, count starts from 1
|
146
144
|
# * +options+ - hash with following options:
|
145
|
+
# * +include_menu_parent+ - whether parent menu element should be displayed or not
|
146
|
+
# * +limit+ - how deep should builder look for children, count starts from 1
|
147
147
|
# * +hierarchical+ - specifies if you want to use hierarchical links or not
|
148
148
|
# * +with_nav+ - whether nav element should be generated
|
149
149
|
# * +nav_class+ - css class of the nav element
|
@@ -158,30 +158,30 @@ module Mokio
|
|
158
158
|
# * +a_class+ - css class of the a element
|
159
159
|
#* +content_type+ - content types for which we'll build menu items(string or array e.g. "Mokio::Article" OR ["Mokio::Article", "Mokio::PicGallery"])
|
160
160
|
#* +content_item_class+ - css class of the content items (not Mokio::Menu, specified above)
|
161
|
+
#* +with_locale+ - whether add locale prefix to href
|
161
162
|
|
162
163
|
# if you need hierarchical links in your frontend, add following route to your routes.rb
|
163
164
|
|
164
165
|
# get "/*menu_path/:menu_id" => "content#show"
|
165
166
|
# get "/:menu_id" => "content#show"
|
166
167
|
|
167
|
-
def build_menu_extended(menu_parent_id,
|
168
|
+
def build_menu_extended(menu_parent_id, options = {})
|
168
169
|
|
169
170
|
set_options_defaults(options)
|
170
171
|
|
171
172
|
html = ""
|
172
|
-
html
|
173
|
+
html << "<nav #{"class='#{options[:nav_class]}'" if options[:nav_class]} id='menuMain'>" if options[:with_nav]
|
173
174
|
html << "<div class='#{options[:ul_wrapper_class]}'>" unless options[:ul_wrapper_class].nil?
|
174
175
|
html << "<ul #{"class='#{options[:ul_class]}'" if options[:ul_class]}>"
|
175
176
|
begin
|
176
177
|
menu_parent = Mokio::Menu.find(menu_parent_id)
|
177
|
-
if include_menu_parent
|
178
|
-
html << build_menu_items_extended(menu_parent,
|
178
|
+
if options[:include_menu_parent]
|
179
|
+
html << build_menu_items_extended(menu_parent, 1, menu_parent.ancestor_ids, options)
|
179
180
|
else
|
180
181
|
menu_parent.children.order_default.each do |i|
|
181
|
-
html << build_menu_items_extended(i,
|
182
|
+
html << build_menu_items_extended(i, 1, i.ancestor_ids, options)
|
182
183
|
end
|
183
184
|
end
|
184
|
-
|
185
185
|
rescue => e
|
186
186
|
MOKIO_LOG.error "BUILD MENU ERROR: #{e}"
|
187
187
|
end
|
@@ -194,32 +194,34 @@ module Mokio
|
|
194
194
|
# Builds menu starting from given menu element (real menu only)
|
195
195
|
# - displays all its children
|
196
196
|
|
197
|
-
def build_menu_items_extended (i,
|
197
|
+
def build_menu_items_extended (i, index, active_ids = [], options)
|
198
198
|
|
199
|
-
return "" if index > limit
|
199
|
+
return "" if index > options[:limit]
|
200
200
|
|
201
201
|
html = ""
|
202
202
|
if i.visible && i.active
|
203
203
|
item_class = build_item_class(i, options, active_ids)
|
204
204
|
html << "<li #{"class='#{item_class}'" unless item_class.blank?}>"
|
205
205
|
|
206
|
+
locale_prefix = "/#{I18n.locale.to_s}" if options[:with_locale]
|
207
|
+
locale_prefix ||= ''
|
206
208
|
if i.external_link.blank?
|
207
|
-
html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{i.real_slug(options[:hierarchical])}'>#{i.name}</a>"
|
209
|
+
html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{locale_prefix}#{i.real_slug(options[:hierarchical])}'>#{i.name}</a>"
|
208
210
|
else
|
209
|
-
html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{i.external_link}' #{"rel='nofollow'" unless i.follow || i.follow.nil?} #{"target='#{i.target}'" unless (i.target.blank? || i.target == '_self') }>#{i.name}</a>"
|
211
|
+
html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{locale_prefix}#{i.external_link}' #{"rel='nofollow'" unless i.follow || i.follow.nil?} #{"target='#{i.target}'" unless (i.target.blank? || i.target == '_self') }>#{i.name}</a>"
|
210
212
|
end
|
211
213
|
|
212
214
|
items_html = ""
|
213
215
|
|
214
216
|
i.children.order_default.each do |item_child|
|
215
|
-
items_html << build_menu_items_extended(item_child,
|
217
|
+
items_html << build_menu_items_extended(item_child, index + 1, active_ids, options)
|
216
218
|
end
|
217
219
|
|
218
220
|
content_item_class = [item_class, options[:content_item_class]].compact.join(" ")
|
219
221
|
i.contents.displayed.order_default.each do |content|
|
220
222
|
next if options[:content_type].blank? || options[:content_type].exclude?(content.type.to_s)
|
221
223
|
items_html << "<li #{"class='#{content_item_class}'" unless content_item_class.blank?}>"
|
222
|
-
items_html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{content.slug}'>#{content.title}</a>" if content.respond_to?("slug")
|
224
|
+
items_html << "<a #{"class='#{options[:a_class]}'" if options[:a_class]} href='#{locale_prefix}#{content.slug}'>#{content.title}</a>" if content.respond_to?("slug")
|
223
225
|
items_html << "</li>"
|
224
226
|
end
|
225
227
|
|
@@ -259,11 +261,14 @@ module Mokio
|
|
259
261
|
# Sets default values for build_menu_extended
|
260
262
|
|
261
263
|
def set_options_defaults(options)
|
264
|
+
options[:limit] = 999999 unless options.has_key? :limit
|
265
|
+
options[:include_menu_parent] = false unless options.has_key? :include_menu_parent
|
262
266
|
options[:hierarchical] = true unless options.has_key? :hierarchical
|
263
267
|
options[:with_nav] = true unless options.has_key? :with_nav
|
264
268
|
options[:nav_class] = "nav_menu" unless options.has_key? :nav_class
|
265
269
|
options[:active_class] = "active" unless options.has_key? :active_class
|
266
270
|
options[:content_type] = "" unless options.has_key? :content_type
|
271
|
+
options[:with_locale] = false unless options.has_key? :with_locale
|
267
272
|
end
|
268
273
|
|
269
274
|
|
data/lib/mokio/slugged.rb
CHANGED
data/lib/mokio/version.rb
CHANGED
@@ -18,30 +18,39 @@ require 'spec_helper'
|
|
18
18
|
# Message expectations are only used when there is no simpler way to specify
|
19
19
|
# that an instance is receiving a specific message.
|
20
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
|
-
|
21
|
+
module Mokio
|
22
|
+
|
23
|
+
describe Mokio::ContentsController do
|
24
|
+
|
25
|
+
before :each do
|
26
|
+
@routes = Mokio::Engine.routes
|
27
|
+
Content.delete_all
|
28
|
+
end
|
29
|
+
|
30
|
+
# This should return the minimal set of attributes required to create a valid
|
31
|
+
# Content. As you add validations to Content, be sure to
|
32
|
+
# adjust the attributes here as well.
|
33
|
+
let(:valid_attributes) { {:title => 'Tralalala' } }
|
34
|
+
|
35
|
+
# This should return the minimal set of values that should be in the session
|
36
|
+
# in order to pass any filters (e.g. authentication) defined in
|
37
|
+
# ContentsController. Be sure to keep this updated too.
|
38
|
+
let(:valid_session) { {} }
|
39
|
+
|
40
|
+
describe "GET index" do
|
41
|
+
it "assigns all contents as @contents" do
|
42
|
+
content = Content.create! valid_attributes
|
43
|
+
get :index, {}, valid_session
|
44
|
+
assigns(:contents).should eq([content])
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "GET new" do
|
49
|
+
it "redirects to Article controller" do
|
50
|
+
get :new, valid_session
|
51
|
+
expect(response).to redirect_to (new_article_path)
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
46
55
|
end
|
47
56
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Mokio
|
4
|
+
|
5
|
+
describe Mokio::DashboardController do
|
6
|
+
# include Devise::TestHelpers
|
7
|
+
let(:valid_session) { {} }
|
8
|
+
|
9
|
+
before :each do
|
10
|
+
@routes = Mokio::Engine.routes
|
11
|
+
end
|
12
|
+
|
13
|
+
describe "GET show" do
|
14
|
+
before(:all) do
|
15
|
+
Content.delete_all
|
16
|
+
Menu.delete_all
|
17
|
+
@root_pl_menu = FactoryGirl.create(:root_pl)
|
18
|
+
@top_menu = FactoryGirl.create(:top_pl)
|
19
|
+
@loose_content_elt = FactoryGirl.create(:article_displayed_and_active).becomes(Article)
|
20
|
+
@invisible_content = FactoryGirl.create(:article_non_displayed).becomes(Article)
|
21
|
+
@empty_menu_elt = FactoryGirl.create(:menu, :parent_id => @top_menu.id)
|
22
|
+
@menu_with_invisible = FactoryGirl.create(:menu, :parent_id => @top_menu.id)
|
23
|
+
@menu_with_invisible.contents << @invisible_content
|
24
|
+
@menu_with_invisible.save
|
25
|
+
|
26
|
+
@menu_with_visible = FactoryGirl.create(:menu, :parent_id => @top_menu.id)
|
27
|
+
@content = FactoryGirl.create(:article_displayed_and_active).becomes(Article)
|
28
|
+
@menu_with_visible.contents << @content
|
29
|
+
@menu_with_visible.save
|
30
|
+
end
|
31
|
+
|
32
|
+
it "displays loose content" do
|
33
|
+
get :show, {}, valid_session
|
34
|
+
if (!assigns(:more_loose_content))
|
35
|
+
expect(assigns(:loose_content).include?(@loose_content_elt)).to be_true
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it "displays empty menu" do
|
40
|
+
get :show, {}, valid_session
|
41
|
+
if (!assigns(:more_empty_menu))
|
42
|
+
expect(assigns(:empty_menu).include?(@empty_menu_elt)).to be_true
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
it "displays invisible menu" do
|
47
|
+
get :show, {}, valid_session
|
48
|
+
if (!assigns(:more_empty_menu))
|
49
|
+
expect(@menu_with_invisible.invisible_content).to be_true
|
50
|
+
expect(assigns(:empty_menu).include?(@menu_with_invisible)).to be_true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'does not display assigned content' do
|
55
|
+
get :show, {}, valid_session
|
56
|
+
expect(assigns(:loose_content).include?(@menu_with_invisible)).to be_false
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'does not display menu with visible content' do
|
60
|
+
get :show, {}, valid_session
|
61
|
+
expect(assigns(:empty_menu).include?(@menu_with_visible)).to be_false
|
62
|
+
end
|
63
|
+
|
64
|
+
it "displays last created" do
|
65
|
+
get :show, {}, valid_session
|
66
|
+
expect(assigns(:last_created).include?(@content)).to be_true
|
67
|
+
end
|
68
|
+
|
69
|
+
it "displays last updated" do
|
70
|
+
get :show, {}, valid_session
|
71
|
+
expect(assigns(:last_updated).include?(@content)).to be_true
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
3
|
+
module Mokio
|
4
|
+
|
5
|
+
describe Mokio::MenusController do
|
4
6
|
# include Devise::TestHelpers
|
5
7
|
render_views
|
6
8
|
# This should return the minimal set of attributes required to create a valid
|
@@ -14,64 +16,66 @@ describe Mokio::Backend::MenusController do
|
|
14
16
|
let(:valid_session) { {} }
|
15
17
|
|
16
18
|
before :each do
|
17
|
-
|
19
|
+
@routes = Mokio::Engine.routes
|
20
|
+
request.env["HTTP_REFERER"] = menus_path
|
18
21
|
end
|
19
22
|
|
20
23
|
before :all do
|
21
|
-
|
22
|
-
Lang.
|
23
|
-
|
24
|
-
Menu.new(:name => 'pl', :id => 1, :lang_id => 1, :editable => false).save(:validate => false)
|
25
|
-
Menu.new(:name => 'Stopka', :lang_id => 1, :parent_id => 1, :editable => false).save(:validate => false)
|
24
|
+
Mokio::Lang.delete_all
|
25
|
+
Mokio::Lang.create(:name => 'polish', :shortname => 'pl', :id => 1)
|
26
|
+
Mokio::Menu.delete_all
|
27
|
+
Mokio::Menu.new(:name => 'pl', :id => 1, :lang_id => 1, :editable => false, :slug => 'pl').save(:validate => false)
|
28
|
+
Mokio::Menu.new(:name => 'Stopka', :lang_id => 1, :parent_id => 1, :editable => false, :slug => 'stopka').save(:validate => false)
|
26
29
|
end
|
27
30
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
describe "GET index" do
|
32
|
+
it "@menus contains arranged tree" do
|
33
|
+
get :index, {}, valid_session
|
34
|
+
assigns(:menus).keys[0].name.should eq("pl")
|
35
|
+
end
|
36
|
+
end
|
34
37
|
|
35
38
|
describe "GET new" do
|
39
|
+
|
36
40
|
it "assigns a new backend_menu as @menu" do
|
37
|
-
get :new,
|
38
|
-
assigns(:menu).should be_a_new(Menu)
|
41
|
+
get :new, valid_session
|
42
|
+
assigns(:menu).should be_a_new(Mokio::Menu)
|
39
43
|
end
|
40
|
-
it "@
|
41
|
-
get :new,
|
42
|
-
assigns(:menu).
|
44
|
+
it "@parent_root is set for valid lang_id" do
|
45
|
+
get :new, valid_session
|
46
|
+
assigns(:menu).parent_root.name.should eq("pl") #todo - more than one language
|
43
47
|
end
|
44
48
|
end
|
45
49
|
|
46
50
|
describe "GET edit" do
|
47
51
|
it "assigns the requested backend_menu as @menu" do
|
48
|
-
menu = Menu.create! valid_attributes
|
52
|
+
menu = Mokio::Menu.create! valid_attributes
|
49
53
|
get :edit, {:id => menu.to_param}, valid_session
|
50
54
|
assigns(:menu).should eq(menu)
|
51
55
|
end
|
52
56
|
|
53
|
-
it "@
|
54
|
-
menu = Menu.create! valid_attributes
|
57
|
+
it "@parent_root is set for valid lang_id" do
|
58
|
+
menu = Mokio::Menu.create! valid_attributes
|
55
59
|
get :edit, {:id => menu.to_param}, valid_session
|
56
|
-
assigns(:menu).
|
60
|
+
assigns(:menu).parent_root.name.should eq("pl")
|
57
61
|
end
|
58
62
|
|
59
63
|
it "@parent_tree is set for deep element" do
|
60
|
-
menu = Menu.find_by('ancestry is not NULL')
|
64
|
+
menu = Mokio::Menu.find_by('ancestry is not NULL')
|
61
65
|
get :edit, {:id => menu.to_param}, valid_session
|
62
|
-
assigns(:menu).
|
66
|
+
assigns(:menu).parent_root.name.should eq(menu.parent.name)
|
63
67
|
end
|
64
68
|
|
65
69
|
it "@parent_tree does not contain self" do
|
66
|
-
menu = Menu.find_by('ancestry is not NULL')
|
70
|
+
menu = Mokio::Menu.find_by('ancestry is not NULL')
|
67
71
|
get :edit, {:id => menu.to_param}, valid_session
|
68
72
|
assigns(:menu).parent_tree.should_not include(menu)
|
69
73
|
end
|
70
74
|
|
71
75
|
it "gets article list for valid lang PL" do
|
72
|
-
menu = Menu.create! valid_attributes
|
76
|
+
menu = Mokio::Menu.create! valid_attributes
|
73
77
|
get :edit, {:id => menu.to_param}, valid_session
|
74
|
-
assigns(:menu).available_contents.to_set.superset?(Article.where(:lang_id => menu.lang_id).to_set).should be_true
|
78
|
+
assigns(:menu).available_contents.to_set.superset?(Mokio::Article.where(:lang_id => menu.lang_id).to_set).should be_true
|
75
79
|
end
|
76
80
|
|
77
81
|
it "assigns a list of available (not selected) modules to available_modules_by_pos (with lang_id = 1)" do
|
@@ -80,12 +84,12 @@ describe Mokio::Backend::MenusController do
|
|
80
84
|
stat_module.module_positions = [mod_pos]
|
81
85
|
stat_module.lang_id = 1
|
82
86
|
stat_module.save
|
83
|
-
av_module = AvailableModule.where(static_module_id: stat_module.id, module_position_id: mod_pos.id).first
|
87
|
+
av_module = Mokio::AvailableModule.where(static_module_id: stat_module.id, module_position_id: mod_pos.id).first
|
84
88
|
menu = FactoryGirl.create(:menu)
|
85
|
-
get :edit, {:id => menu.to_param}, valid_session
|
89
|
+
get :edit, {:id => menu.to_param}, valid_session
|
86
90
|
(assigns(:menu).available_modules_by_pos[mod_pos.id].include?(av_module)).should be_true
|
87
91
|
end
|
88
|
-
|
92
|
+
|
89
93
|
end
|
90
94
|
|
91
95
|
describe "POST create" do
|
@@ -93,33 +97,33 @@ describe Mokio::Backend::MenusController do
|
|
93
97
|
it "creates a new Menu" do
|
94
98
|
expect {
|
95
99
|
post :create, {:menu => valid_attributes}, valid_session
|
96
|
-
}.to change(Menu, :count).by(1)
|
100
|
+
}.to change(Mokio::Menu, :count).by(1)
|
97
101
|
end
|
98
102
|
|
99
|
-
|
103
|
+
|
100
104
|
it "assigns a newly created backend_menu as @menu" do
|
101
105
|
post :create, {:menu => valid_attributes}, valid_session
|
102
|
-
assigns(:menu).should be_a(Menu)
|
106
|
+
assigns(:menu).should be_a(Mokio::Menu)
|
103
107
|
assigns(:menu).should be_persisted
|
104
108
|
end
|
105
109
|
|
106
110
|
it "redirects to the created backend_menu" do
|
107
111
|
post :create, {:menu => valid_attributes}, valid_session
|
108
|
-
response.should redirect_to(
|
112
|
+
response.should redirect_to(menus_path)
|
109
113
|
end
|
110
114
|
end
|
111
115
|
|
112
116
|
describe "with invalid params" do
|
113
117
|
it "assigns a newly created but unsaved menu as @menu" do
|
114
118
|
# Trigger the behavior that occurs when invalid params are submitted
|
115
|
-
Menu.any_instance.stub(:save).and_return(false)
|
119
|
+
Mokio::Menu.any_instance.stub(:save).and_return(false)
|
116
120
|
post :create, {:menu => { }}, valid_session
|
117
|
-
assigns(:menu).should be_a_new(Menu)
|
121
|
+
assigns(:menu).should be_a_new(Mokio::Menu)
|
118
122
|
end
|
119
123
|
|
120
124
|
it "re-renders the 'new' template" do
|
121
125
|
# Trigger the behavior that occurs when invalid params are submitted
|
122
|
-
@menu = Menu.any_instance.stub(:save).and_return(false)
|
126
|
+
@menu = Mokio::Menu.any_instance.stub(:save).and_return(false)
|
123
127
|
post :create, {:menu => { }}, valid_session
|
124
128
|
response.should render_template("new")
|
125
129
|
end
|
@@ -129,53 +133,53 @@ describe Mokio::Backend::MenusController do
|
|
129
133
|
describe "PUT update" do
|
130
134
|
describe "with valid params" do
|
131
135
|
it "updates the requested backend_menu" do
|
132
|
-
menu = Menu.create! valid_attributes
|
136
|
+
menu = Mokio::Menu.create! valid_attributes
|
133
137
|
put :update, {:id => menu.to_param, :menu => { :name => "bla" }}, valid_session
|
134
|
-
@new_menu = Menu.find(menu.id)
|
138
|
+
@new_menu = Mokio::Menu.find(menu.id)
|
135
139
|
@new_menu.name.should eq("bla") #_receive(:update) #.with({ :name => "bla" })
|
136
|
-
|
140
|
+
|
137
141
|
end
|
138
142
|
|
139
143
|
it "for not editable menu update is not performed" do
|
140
|
-
menu = Menu.where(editable: false).first
|
144
|
+
menu = Mokio::Menu.where(editable: false).first
|
141
145
|
expect(menu.editable).to be_false
|
142
146
|
put :update, {:id => menu.to_param, :menu => {:name => 'New name'}}, valid_session
|
143
|
-
@new_menu = Menu.find(menu.id)
|
147
|
+
@new_menu = Mokio::Menu.find(menu.id)
|
144
148
|
@new_menu.name.should eq(menu.name)
|
145
149
|
end
|
146
150
|
|
147
151
|
it "assigns the requested backend_menu as @menu" do
|
148
|
-
menu = Menu.create! valid_attributes
|
152
|
+
menu = Mokio::Menu.create! valid_attributes
|
149
153
|
put :update, {:id => menu.to_param, :menu => valid_attributes}, valid_session
|
150
154
|
assigns(:menu).should eq(menu)
|
151
155
|
end
|
152
156
|
|
153
157
|
it "redirects to the backend_menu" do
|
154
|
-
menu = Menu.create! valid_attributes
|
158
|
+
menu = Mokio::Menu.create! valid_attributes
|
155
159
|
put :update, {:id => menu.to_param, :menu => valid_attributes}, valid_session
|
156
|
-
response.should redirect_to(
|
160
|
+
response.should redirect_to(menus_path)
|
157
161
|
end
|
158
162
|
end
|
159
163
|
|
160
164
|
describe "with invalid params" do
|
161
165
|
it "assigns the backend_menu as @menu" do
|
162
|
-
menu = Menu.create! valid_attributes
|
166
|
+
menu = Mokio::Menu.create! valid_attributes
|
163
167
|
# Trigger the behavior that occurs when invalid params are submitted
|
164
|
-
Menu.any_instance.stub(:save).and_return(false)
|
168
|
+
Mokio::Menu.any_instance.stub(:save).and_return(false)
|
165
169
|
put :update, {:id => menu.to_param, :menu => { }}, valid_session
|
166
170
|
assigns(:menu).should eq(menu)
|
167
171
|
end
|
168
172
|
|
169
173
|
it "re-renders the 'edit' template" do
|
170
|
-
menu = Menu.create! valid_attributes
|
174
|
+
menu = Mokio::Menu.create! valid_attributes
|
171
175
|
# Trigger the behavior that occurs when invalid params are submitted
|
172
|
-
Menu.any_instance.stub(:save).and_return(false)
|
176
|
+
Mokio::Menu.any_instance.stub(:save).and_return(false)
|
173
177
|
put :update, {:id => menu.to_param, :menu => { }}, valid_session
|
174
178
|
response.should render_template("edit")
|
175
179
|
end
|
176
180
|
|
177
181
|
it "contents are not removed" do
|
178
|
-
menu = Menu.create! valid_attributes
|
182
|
+
menu = Mokio::Menu.create! valid_attributes
|
179
183
|
content = FactoryGirl.create(:content)
|
180
184
|
menu.contents << content
|
181
185
|
menu.save
|
@@ -192,7 +196,7 @@ describe Mokio::Backend::MenusController do
|
|
192
196
|
stat_module.module_positions = [mod_pos]
|
193
197
|
stat_module.lang_id = 1
|
194
198
|
stat_module.save
|
195
|
-
menu = Menu.create! valid_attributes
|
199
|
+
menu = Mokio::Menu.create! valid_attributes
|
196
200
|
first_module = menu.available_modules_by_pos[mod_pos.id][0]
|
197
201
|
menu.available_modules << first_module
|
198
202
|
menu.save
|
@@ -205,9 +209,9 @@ describe Mokio::Backend::MenusController do
|
|
205
209
|
end
|
206
210
|
|
207
211
|
it "contents order is saved after update" do
|
208
|
-
content1 = Article.create(:title => 'Bla')
|
209
|
-
content2 = Article.create(:title => 'ZZZZ')
|
210
|
-
menu = Menu.create! valid_attributes
|
212
|
+
content1 = Mokio::Article.create(:title => 'Bla')
|
213
|
+
content2 = Mokio::Article.create(:title => 'ZZZZ')
|
214
|
+
menu = Mokio::Menu.create! valid_attributes
|
211
215
|
put :update, {:id => menu.to_param, :menu => {:content_ids => [content2.id, content1.id] }}, valid_session
|
212
216
|
menu.reload
|
213
217
|
expect(menu.contents.first).to eq(content2)
|
@@ -223,7 +227,7 @@ describe Mokio::Backend::MenusController do
|
|
223
227
|
stat_module1.module_positions = [mod_pos]
|
224
228
|
stat_module1.lang_id = 1
|
225
229
|
stat_module1.save
|
226
|
-
menu = Menu.create! valid_attributes
|
230
|
+
menu = Mokio::Menu.create! valid_attributes
|
227
231
|
first_module_id = menu.available_modules_by_pos[mod_pos.id][0].id
|
228
232
|
put :update, {:id => menu.to_param, :menu => {:available_module_ids => {mod_pos.id.to_s => [menu.available_modules_by_pos[mod_pos.id][0].id, menu.available_modules_by_pos[mod_pos.id][1].id] }}}, valid_session
|
229
233
|
(assigns(:menu).available_modules.first.id).should eq(first_module_id)
|
@@ -231,8 +235,8 @@ describe Mokio::Backend::MenusController do
|
|
231
235
|
|
232
236
|
|
233
237
|
it "contents are cleared properly" do
|
234
|
-
content = Article.create(:title => 'Bla')
|
235
|
-
menu = Menu.create! valid_attributes
|
238
|
+
content = Mokio::Article.create(:title => 'Bla')
|
239
|
+
menu = Mokio::Menu.create! valid_attributes
|
236
240
|
menu.contents << content
|
237
241
|
menu.save
|
238
242
|
expect(menu.contents.length).to eq(1)
|
@@ -246,7 +250,7 @@ describe Mokio::Backend::MenusController do
|
|
246
250
|
stat_module.module_positions = [mod_pos]
|
247
251
|
stat_module.lang_id = 1
|
248
252
|
stat_module.save
|
249
|
-
menu = Menu.create! valid_attributes
|
253
|
+
menu = Mokio::Menu.create! valid_attributes
|
250
254
|
first_module = menu.available_modules_by_pos[mod_pos.id][0]
|
251
255
|
menu.available_modules << first_module
|
252
256
|
menu.save
|
@@ -260,72 +264,72 @@ describe Mokio::Backend::MenusController do
|
|
260
264
|
|
261
265
|
describe "DELETE destroy" do
|
262
266
|
it "destroys the requested menu when deletable" do
|
263
|
-
menu = Menu.create! valid_attributes.merge(:deletable => true)
|
267
|
+
menu = Mokio::Menu.create! valid_attributes.merge(:deletable => true)
|
264
268
|
@obj = menu
|
265
269
|
expect {
|
266
270
|
delete :destroy, {:id => menu.to_param}, valid_session
|
267
|
-
}.to change(Menu, :count).by(-1)
|
271
|
+
}.to change(Mokio::Menu, :count).by(-1)
|
268
272
|
end
|
269
273
|
|
270
274
|
it "redirects to the backend_menus list" do
|
271
|
-
menu = Menu.create! valid_attributes
|
275
|
+
menu = Mokio::Menu.create! valid_attributes
|
272
276
|
delete :destroy, {:id => menu.to_param}, valid_session
|
273
|
-
response.should redirect_to(
|
277
|
+
response.should redirect_to(menus_url)
|
274
278
|
|
275
279
|
end
|
276
280
|
|
277
281
|
it "not destroys the requested menu when not deletable" do
|
278
|
-
menu = Menu.create! valid_attributes.merge(:deletable => false)
|
282
|
+
menu = Mokio::Menu.create! valid_attributes.merge(:deletable => false)
|
279
283
|
expect {
|
280
284
|
delete :destroy, {:id => menu.to_param}, valid_session
|
281
|
-
}.to change(Menu, :count).by(0)
|
285
|
+
}.to change(Mokio::Menu, :count).by(0)
|
282
286
|
end
|
283
287
|
|
284
288
|
it "redirects to the backend_menus list when not deletable" do
|
285
|
-
menu = Menu.create! valid_attributes.merge(:deletable => false)
|
289
|
+
menu = Mokio::Menu.create! valid_attributes.merge(:deletable => false)
|
286
290
|
delete :destroy, {:id => menu.to_param}, valid_session
|
287
|
-
response.should redirect_to(
|
291
|
+
response.should redirect_to(menus_url)
|
288
292
|
|
289
293
|
end
|
290
294
|
|
291
295
|
|
292
296
|
it "destroys the requested menu" do
|
293
|
-
menu = Menu.create! valid_attributes.merge(:deletable => true)
|
294
|
-
child_del = Menu.create! valid_attributes.merge(:deletable => false, :parent => menu)
|
295
|
-
child_not_del = Menu.create! valid_attributes.merge(:deletable => true, :parent => menu)
|
297
|
+
menu = Mokio::Menu.create! valid_attributes.merge(:deletable => true)
|
298
|
+
child_del = Mokio::Menu.create! valid_attributes.merge(:deletable => false, :parent => menu)
|
299
|
+
child_not_del = Mokio::Menu.create! valid_attributes.merge(:deletable => true, :parent => menu)
|
296
300
|
expect {
|
297
301
|
delete :destroy, {:id => menu.to_param}, valid_session
|
298
|
-
}.to change(Menu, :count).by(-1)
|
302
|
+
}.to change(Mokio::Menu, :count).by(-1)
|
299
303
|
|
300
304
|
end
|
301
305
|
|
302
306
|
it "attaches children to parent node" do
|
303
|
-
top_parent = Menu.create! valid_attributes.merge(:deletable => true)
|
304
|
-
menu = Menu.create! valid_attributes.merge(:deletable => true, :parent => top_parent)
|
305
|
-
child_del = Menu.create! valid_attributes.merge(:deletable => false, :parent => menu)
|
306
|
-
child_not_del = Menu.create! valid_attributes.merge(:deletable => true, :parent => menu)
|
307
|
+
top_parent = Mokio::Menu.create! valid_attributes.merge(:deletable => true)
|
308
|
+
menu = Mokio::Menu.create! valid_attributes.merge(:deletable => true, :parent => top_parent)
|
309
|
+
child_del = Mokio::Menu.create! valid_attributes.merge(:deletable => false, :parent => menu)
|
310
|
+
child_not_del = Mokio::Menu.create! valid_attributes.merge(:deletable => true, :parent => menu)
|
307
311
|
delete :destroy, {:id => menu.to_param}, valid_session
|
308
|
-
expect top_parent.children.should include(child_del)
|
312
|
+
expect top_parent.children.should include(child_del)
|
309
313
|
end
|
310
314
|
end
|
311
315
|
|
312
316
|
describe "update_menu_breadcrumps" do
|
313
317
|
subject {controller.update_menu_breadcrumps}
|
314
318
|
it "updates menu_breadcrumps element" do
|
315
|
-
menu = Menu.find_by(:name => "Stopka")
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
319
|
+
menu = Mokio::Menu.find_by(:name => "Stopka")
|
320
|
+
expect(
|
321
|
+
(xhr :get, :update_menu_breadcrumps, {:id => menu.id}, valid_session).body
|
322
|
+
).to match('.*pl.*Stopka.*')
|
323
|
+
|
320
324
|
end
|
321
325
|
end
|
322
326
|
|
323
327
|
describe "lang_changed" do
|
324
328
|
subject {controller.lang_changed}
|
325
329
|
it "updates menu_parent options" do
|
326
|
-
menu = Menu.find_by(:name => "Stopka")
|
330
|
+
menu = Mokio::Menu.find_by(:name => "Stopka")
|
327
331
|
body = (xhr :get, :lang_changed, {:menu_id => menu.id, :lang_id => 1}, valid_session).body
|
328
|
-
expect(body).to match('.*
|
332
|
+
expect(body).to match('.*Stopka.*')
|
329
333
|
end
|
330
334
|
|
331
335
|
end
|
@@ -333,14 +337,14 @@ describe Mokio::Backend::MenusController do
|
|
333
337
|
describe "sort" do
|
334
338
|
before(:each) {
|
335
339
|
@menu_hash = {}
|
336
|
-
@menu_fake_pl = Menu.create! valid_attributes.merge(:parent => nil, :lang_id => 1)
|
337
|
-
@menu_fake_top = Menu.create! valid_attributes.merge(:parent_id => @menu_fake_pl.id, :lang_id => 1)
|
338
|
-
@menu = Menu.create! valid_attributes.merge(:parent_id => @menu_fake_top.id, :lang_id => 1)
|
339
|
-
@menu_child = Menu.create! valid_attributes.merge(:parent_id => @menu.id, :lang_id => 1)
|
340
|
-
@menu_grandchild1 = Menu.create! valid_attributes.merge(:parent_id => @menu_child.id, :seq => 1, :lang_id => 1)
|
341
|
-
@menu_grandchild2 = Menu.create! valid_attributes.merge(:parent_id => @menu_child.id, :seq => 2, :lang_id => 1)
|
342
|
-
@menu_grandchild3 = Menu.create! valid_attributes.merge(:parent_id => @menu_child.id, :seq => 3, :lang_id => 1)
|
343
|
-
@potential_parent = Menu.create! valid_attributes
|
340
|
+
@menu_fake_pl = Mokio::Menu.create! valid_attributes.merge(:parent => nil, :lang_id => 1)
|
341
|
+
@menu_fake_top = Mokio::Menu.create! valid_attributes.merge(:parent_id => @menu_fake_pl.id, :lang_id => 1)
|
342
|
+
@menu = Mokio::Menu.create! valid_attributes.merge(:parent_id => @menu_fake_top.id, :lang_id => 1)
|
343
|
+
@menu_child = Mokio::Menu.create! valid_attributes.merge(:parent_id => @menu.id, :lang_id => 1)
|
344
|
+
@menu_grandchild1 = Mokio::Menu.create! valid_attributes.merge(:parent_id => @menu_child.id, :seq => 1, :lang_id => 1)
|
345
|
+
@menu_grandchild2 = Mokio::Menu.create! valid_attributes.merge(:parent_id => @menu_child.id, :seq => 2, :lang_id => 1)
|
346
|
+
@menu_grandchild3 = Mokio::Menu.create! valid_attributes.merge(:parent_id => @menu_child.id, :seq => 3, :lang_id => 1)
|
347
|
+
@potential_parent = Mokio::Menu.create! valid_attributes
|
344
348
|
@menu_hash[@menu.id] = @menu_fake_top.id
|
345
349
|
@menu_hash[@menu_child.id] = @menu_child.parent_id
|
346
350
|
}
|
@@ -349,7 +353,7 @@ describe Mokio::Backend::MenusController do
|
|
349
353
|
it "changes the order of elements" do
|
350
354
|
@menu_hash[@menu_grandchild2.id] = @menu_grandchild2.parent_id
|
351
355
|
@menu_hash[@menu_grandchild1.id] = @menu_grandchild1.parent_id
|
352
|
-
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
356
|
+
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
353
357
|
expect(@menu_grandchild2.reload.seq).to eq(1)
|
354
358
|
expect(@menu_grandchild1.reload.seq).to eq(2)
|
355
359
|
end
|
@@ -375,21 +379,21 @@ describe Mokio::Backend::MenusController do
|
|
375
379
|
expect(@menu_child.reload.root.id).to eq(@menu_grandchild3.root.id)
|
376
380
|
expect(@menu_child.reload.root.id).not_to eq(@menu_child.parent.id)
|
377
381
|
expect(@menu_child.root.lang.id).to eq(@menu_child.lang.id)
|
378
|
-
|
382
|
+
|
379
383
|
end
|
380
384
|
|
381
|
-
it "allows changes of ROOT nodes order" do
|
382
|
-
@menu2 = Menu.create! valid_attributes.merge(:parent => nil, :lang_id => 1)
|
383
|
-
@menu3 = Menu.create! valid_attributes.merge(:parent_id => nil, :lang_id => 1)
|
385
|
+
it "allows changes of ROOT nodes order" do
|
386
|
+
@menu2 = Mokio::Menu.create! valid_attributes.merge(:parent => nil, :lang_id => 1)
|
387
|
+
@menu3 = Mokio::Menu.create! valid_attributes.merge(:parent_id => nil, :lang_id => 1)
|
384
388
|
@menu_hash[@menu2.id] = "null"
|
385
389
|
@menu_hash[@menu3.id] = "null"
|
386
|
-
|
387
|
-
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
390
|
+
|
391
|
+
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
388
392
|
expect(@menu3.reload.seq).to eq(@menu2.reload.seq + 1)
|
389
393
|
|
390
394
|
end
|
391
395
|
|
392
|
-
it "doesn't allow loops in the tree" do
|
396
|
+
it "doesn't allow loops in the tree" do
|
393
397
|
@menu_hash[@menu_child.id] = @menu_grandchild1.id
|
394
398
|
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
395
399
|
@menu_child.reload
|
@@ -402,8 +406,9 @@ describe Mokio::Backend::MenusController do
|
|
402
406
|
@menu_grandchild1.save
|
403
407
|
@menu_hash[@menu_grandchild1.id] = @root_en.id
|
404
408
|
expect(@menu_grandchild1.lang_id).not_to eq(@root_en.lang_id)
|
405
|
-
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
409
|
+
xhr :get, :sort, {:menu => @menu_hash}, valid_session
|
406
410
|
expect(@menu_grandchild1.reload.lang_id).to eq(@root_en.lang_id)
|
407
411
|
end
|
408
412
|
end
|
409
413
|
end
|
414
|
+
end
|