alchemy_cms 2.2.rc6 → 2.2.rc7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.rspec +0 -1
  2. data/.travis.yml +5 -4
  3. data/Gemfile +7 -8
  4. data/app/controllers/alchemy/admin/pages_controller.rb +1 -2
  5. data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
  6. data/app/controllers/alchemy/base_controller.rb +2 -1
  7. data/app/controllers/alchemy/pages_controller.rb +5 -5
  8. data/app/helpers/alchemy/admin/base_helper.rb +2 -0
  9. data/app/models/alchemy/attachment.rb +2 -1
  10. data/app/models/alchemy/element.rb +12 -16
  11. data/app/models/alchemy/page.rb +8 -4
  12. data/config/locales/alchemy.en.yml +1 -1
  13. data/db/migrate/20101216151419_add_language_id_to_pages.rb +11 -3
  14. data/lib/alchemy/version.rb +1 -1
  15. data/lib/alchemy_cms.rb +2 -2
  16. data/spec/controllers/admin/clipboard_controller_spec.rb +12 -12
  17. data/spec/controllers/admin/contents_controller_spec.rb +3 -3
  18. data/spec/controllers/admin/elements_controller_spec.rb +1 -1
  19. data/spec/controllers/admin/languages_controller_spec.rb +1 -1
  20. data/spec/controllers/admin/pages_controller_spec.rb +33 -1
  21. data/spec/controllers/admin/trash_controller_spec.rb +3 -3
  22. data/spec/controllers/base_controller_spec.rb +3 -3
  23. data/spec/controllers/pages_controller_spec.rb +6 -6
  24. data/spec/dummy/config/database.yml +24 -18
  25. data/spec/dummy/db/schema.rb +1 -1
  26. data/spec/factories.rb +5 -5
  27. data/spec/helpers/admin/contents_helper_spec.rb +1 -1
  28. data/spec/helpers/admin/elements_helper_spec.rb +2 -2
  29. data/spec/helpers/admin/essences_helper_spec.rb +1 -1
  30. data/spec/helpers/elements_helper_spec.rb +35 -35
  31. data/spec/helpers/essences_helper_spec.rb +1 -1
  32. data/spec/helpers/pages_helper_spec.rb +27 -27
  33. data/spec/integration/admin/modules_integration_spec.rb +30 -0
  34. data/spec/integration/admin/pages_controller_spec.rb +7 -7
  35. data/spec/integration/pages_controller_spec.rb +38 -24
  36. data/spec/integration/security_spec.rb +1 -1
  37. data/spec/models/content_spec.rb +5 -5
  38. data/spec/models/element_spec.rb +59 -14
  39. data/spec/models/language_spec.rb +9 -9
  40. data/spec/models/page_spec.rb +66 -42
  41. data/spec/models/user_spec.rb +1 -1
  42. data/spec/page_layout_spec.rb +1 -1
  43. data/spec/spec_helper.rb +2 -2
  44. data/spec/support/alchemy/specs_helpers.rb +1 -1
  45. metadata +36 -34
data/.rspec CHANGED
@@ -1,2 +1 @@
1
- --format Fuubar
2
1
  --color
@@ -9,8 +9,9 @@ branches:
9
9
  only:
10
10
  - master
11
11
  before_script:
12
- #- "mysql -e 'create database alchemy_cms_test;'"
13
- - "sh -c 'cd spec/dummy && RAILS_ENV=test bundle exec rake db:schema:load'"
12
+ - "sh -c 'cd spec/dummy && RAILS_ENV=test bundle exec rake db:create db:schema:load --trace'"
14
13
  script: "bundle exec rspec spec"
15
- # env:
16
- # - DB=mysql
14
+ env:
15
+ - DB=mysql
16
+ - DB=postgresql
17
+ - DB=sqlite
data/Gemfile CHANGED
@@ -7,14 +7,15 @@ gem 'jasmine'
7
7
  gem 'jasminerice'
8
8
 
9
9
  group :test do
10
+ gem 'sqlite3' if ENV['DB'].nil? || ENV['DB'] == 'sqlite'
11
+ gem 'mysql2' if ENV['DB'] == 'mysql'
12
+ gem 'pg' if ENV['DB'] == 'postgresql'
10
13
  gem 'rspec-rails'
11
- gem 'sqlite3'
12
- gem 'factory_girl_rails', '1.4.0'
14
+ gem 'factory_girl_rails', '~> 1.7.0'
13
15
  gem "capybara"
14
- gem 'capybara-webkit', '~>0.8.0'
15
- gem "launchy"
16
+ gem 'capybara-webkit' unless ENV['CI']
17
+ gem "launchy" unless ENV['CI']
16
18
  gem "database_cleaner"
17
- gem "fuubar"
18
19
  end
19
20
 
20
21
  group :assets do
@@ -24,8 +25,6 @@ group :assets do
24
25
  end
25
26
 
26
27
  group :development do
27
- gem 'ruby-debug19', :require => 'ruby-debug', :platform => :ruby_19
28
- gem 'ruby-debug', :platform => :ruby_18
29
28
  gem 'guard-spork'
30
29
  gem 'yard'
31
- end
30
+ end
@@ -181,8 +181,7 @@ module Alchemy
181
181
  new_language_root = Page.copy(
182
182
  original_language_root,
183
183
  :language_id => params[:languages][:new_lang_id],
184
- :language_code => session[:language_code],
185
- :layoutpage => params[:layoutpage]
184
+ :language_code => session[:language_code]
186
185
  )
187
186
  new_language_root.move_to_child_of Page.root
188
187
  original_language_root.copy_children_to(new_language_root)
@@ -16,7 +16,7 @@ module Alchemy
16
16
  else
17
17
  search_terms = ActiveRecord::Base.sanitize("%#{params[:query]}%")
18
18
  items = resource_handler.model.where(resource_handler.searchable_attributes.map { |attribute|
19
- "`#{resource_handler.namespaced_model_name.pluralize}`.`#{attribute[:name]}` LIKE #{search_terms}"
19
+ "#{resource_handler.namespaced_model_name.pluralize}.#{attribute[:name]} LIKE #{search_terms}"
20
20
  }.join(" OR "))
21
21
  end
22
22
  instance_variable_set("@#{resource_handler.resources_name}", items.page(params[:page] || 1).per(per_page_value_for_screen_size))
@@ -88,7 +88,8 @@ module Alchemy
88
88
  end
89
89
 
90
90
  def store_language_in_session(language)
91
- if language
91
+ if language && language.id
92
+ return if language.id == session[:language_id]
92
93
  session[:language_code] = language.code
93
94
  session[:language_id] = language.id
94
95
  else
@@ -72,12 +72,12 @@ module Alchemy
72
72
  if params[:urlname].blank?
73
73
  @page = Page.language_root_for(Language.get_default.id)
74
74
  else
75
- @page = Page.find_by_urlname_and_language_id(params[:urlname], session[:language_id])
76
- # try to find the page in another language
77
- if @page.nil?
78
- @page = Page.find_by_urlname(params[:urlname])
79
- else
75
+ if params[:lang].blank?
76
+ @page = Page.contentpages.find_by_urlname(params[:urlname])
77
+ store_language_in_session(@page.language) if @page.present?
80
78
  return @page
79
+ else
80
+ @page = Page.contentpages.find_by_urlname_and_language_id(params[:urlname], session[:language_id])
81
81
  end
82
82
  end
83
83
  end
@@ -253,6 +253,8 @@ module Alchemy
253
253
  if alchemy_module['engine_name']
254
254
  eval(alchemy_module['engine_name']).url_for(url_options)
255
255
  else
256
+ # hack to prefix any controller-path with / so it doesn't refer to alchemy/...
257
+ url_options[:controller] = url_options[:controller].gsub(/^([^\/])/, "/#{$1}")
256
258
  main_app.url_for(url_options)
257
259
  end
258
260
  end
@@ -13,7 +13,8 @@ module Alchemy
13
13
  validates_as_attachment
14
14
 
15
15
  def self.find_paginated(params, per_page)
16
- cond = "name LIKE '%#{params[:query]}%' OR filename LIKE '%#{params[:query]}%'"
16
+ attachments = Attachment.arel_table
17
+ cond = attachments[:name].matches("%#{params[:query]}%").or(attachments[:filename].matches("%#{params[:query]}%"))
17
18
  self.where(cond).page(params[:page] || 1).per(per_page).order(:name)
18
19
  end
19
20
 
@@ -29,30 +29,26 @@ module Alchemy
29
29
 
30
30
  # TODO: add a trashed column to elements table
31
31
  scope :trashed, where(:page_id => nil).order('updated_at DESC')
32
- scope :not_trashed, where('`alchemy_elements`.`page_id` IS NOT NULL')
32
+ scope :not_trashed, where(Element.arel_table[:page_id].not_eq(nil))
33
33
  scope :published, where(:public => true)
34
- scope :named, lambda { |names| where(arel_table[:name].in(names)) }
34
+ scope :named, lambda { |names| where(:name => names) }
35
35
  scope :excluded, lambda { |names| where(arel_table[:name].not_in(names)) }
36
36
  scope :not_in_cell, where(:cell_id => nil)
37
37
 
38
- # Returns next Element on self.page or nil. Pass a Element.name to get next of this kind.
38
+ # Returns next public element from same page.
39
+ # Pass an element name to get next of this kind.
39
40
  def next(name = nil)
40
- if name.nil?
41
- find_conditions = ["public = 1 AND page_id = ? AND position > ?", self.page.id, self.position]
42
- else
43
- find_conditions = ["public = 1 AND page_id = ? AND name = ? AND position > ?", self.page.id, name, self.position]
44
- end
45
- self.class.where(find_conditions).order("position ASC").limit(1)
41
+ elements = page.elements.published.where(Element.arel_table[:position].gt(position))
42
+ elements = elements.where(:name => name) if name.present?
43
+ elements.order("position ASC").limit(1).first
46
44
  end
47
45
 
48
- # Returns previous Element on self.page or nil. Pass a Element.name to get previous of this kind.
46
+ # Returns previous public element from same page.
47
+ # Pass an element name to get previous of this kind.
49
48
  def prev(name = nil)
50
- if name.nil?
51
- find_conditions = ["public = 1 AND page_id = ? AND position < ?", self.page.id, self.position]
52
- else
53
- find_conditions = ["public = 1 AND page_id = ? AND name = ? AND position < ?", self.page.id, name, self.position]
54
- end
55
- self.class.where(find_conditions).order("position DESC").limit(1)
49
+ elements = page.elements.published.where(Element.arel_table[:position].lt(position))
50
+ elements = elements.where(:name => name) if name.present?
51
+ elements.order("position DESC").limit(1).first
56
52
  end
57
53
 
58
54
  # Stores the page into `to_be_sweeped_pages` (Pages that have to be sweeped after updating element).
@@ -3,11 +3,15 @@ module Alchemy
3
3
  class Page < ActiveRecord::Base
4
4
 
5
5
  attr_accessible(
6
+ :do_not_autogenerate,
6
7
  :do_not_sweep,
7
8
  :language_code,
9
+ :language,
8
10
  :language_id,
9
11
  :language_root,
10
12
  :layoutpage,
13
+ :locked,
14
+ :locked_by,
11
15
  :meta_description,
12
16
  :meta_keywords,
13
17
  :name,
@@ -64,14 +68,14 @@ module Alchemy
64
68
  scope :restricted, where(:restricted => true)
65
69
  scope :not_restricted, where(:restricted => false)
66
70
  scope :public_language_roots, lambda {
67
- where(:language_root => true).where("`alchemy_pages`.`language_code` IN ('#{Language.all_codes_for_published.join('\',\'')}')").where(:public => true)
71
+ where(:language_root => true, :language_code => Language.all_codes_for_published, :public => true)
68
72
  }
69
- scope :all_last_edited_from, lambda { |user| where(:updater_id => user.id).order('`alchemy_pages`.`updated_at` DESC').limit(5) }
73
+ scope :all_last_edited_from, lambda { |user| where(:updater_id => user.id).order('updated_at DESC').limit(5) }
70
74
  # Returns all pages that have the given language_id
71
75
  scope :with_language, lambda { |language_id| where(:language_id => language_id) }
76
+ scope :contentpages, where(:layoutpage => [false, nil]).where(Page.arel_table[:parent_id].not_eq(nil))
72
77
  # Returns all pages that are not locked and public.
73
78
  # Used for flushing all page caches at once.
74
- scope :contentpages, where("`alchemy_pages`.`layoutpage` = 0 AND `alchemy_pages`.`parent_id` IS NOT NULL")
75
79
  scope :flushables, not_locked.published.contentpages
76
80
  scope :searchables, not_restricted.published.contentpages
77
81
 
@@ -402,7 +406,7 @@ module Alchemy
402
406
  :locked => false,
403
407
  :locked_by => nil
404
408
  )
405
- page = self.new(attributes.except(:id, :updated_at, :created_at, :created_id, :updater_id, :lft, :rgt, :depth))
409
+ page = self.new(attributes.except(:id, :updated_at, :created_at, :creator_id, :updater_id, :lft, :rgt, :depth))
406
410
  if page.save
407
411
  # copy the page´s cells
408
412
  source.cells.each do |cell|
@@ -161,7 +161,7 @@ en:
161
161
  "Image size": "Imagesize"
162
162
  "Image deleted successfully": "Image deleted successfully."
163
163
  "Mandatory": "Mandatory fields"
164
- "Page deleted": "Page: '%{name}' deleted."
164
+ "Page deleted": "Page: %{name} deleted."
165
165
  "Page saved": "Page: '%{name}' saved."
166
166
  "Password": "Password"
167
167
  "Paste from clipboard": "Paste from clipboard"
@@ -3,8 +3,16 @@ class AddLanguageIdToPages < ActiveRecord::Migration
3
3
  add_column :pages, :language_id, :integer
4
4
  rename_column :pages, :language, :language_code
5
5
  rename_column :pages, :language_root_for, :language_root
6
- change_column :pages, :language_root, :boolean
7
- execute("UPDATE pages SET language_root = 1 WHERE language_root IS NOT NULL")
6
+ # PostgreSQL does not support changing string columns to boolean.
7
+ # We do not have existing Alchemy installations running on postgresql to support anyway,
8
+ # so it's not critical to recreate the column.
9
+ if ActiveRecord::Base.connection_config[:adapter] == "postgresql"
10
+ remove_column :pages, :language_root
11
+ add_column :pages, :language_root, :boolean
12
+ else
13
+ change_column :pages, :language_root, :boolean
14
+ execute("UPDATE pages SET language_root = 1 WHERE language_root IS NOT NULL")
15
+ end
8
16
  add_index :pages, :language_id
9
17
  end
10
18
 
@@ -12,8 +20,8 @@ class AddLanguageIdToPages < ActiveRecord::Migration
12
20
  remove_index :pages, :language_id
13
21
  change_column :pages, :language_root, :string
14
22
  rename_column :pages, :language_root, :language_root_for
23
+ execute("UPDATE pages SET language_root_for = 1 WHERE language_root_for IS NOT NULL")
15
24
  rename_column :pages, :language_code, :language
16
- execute("UPDATE pages SET language_root_for = language WHERE language_root IS NOT NULL")
17
25
  remove_column :pages, :language_id
18
26
  end
19
27
  end
@@ -1,5 +1,5 @@
1
1
  module Alchemy
2
2
 
3
- VERSION = "2.2.rc6"
3
+ VERSION = "2.2.rc7"
4
4
 
5
5
  end
@@ -1,4 +1,4 @@
1
- if defined?(Rails) && Rails::VERSION::MAJOR == 3
1
+ if defined?(Rails) && Rails::VERSION::MAJOR == 3 && Rails::VERSION::MINOR == 2
2
2
  require 'acts_as_list'
3
3
  require 'attachment_magic'
4
4
  require 'authlogic'
@@ -23,7 +23,7 @@ if defined?(Rails) && Rails::VERSION::MAJOR == 3
23
23
  end
24
24
  require File.join(File.dirname(__FILE__), "alchemy", "seeder")
25
25
  else
26
- raise "Alchemy 2.1 needs Rails 3.1 or higher. You are currently using Rails #{Rails::VERSION::STRING}"
26
+ raise "Alchemy 2.2 needs Rails 3.2 or higher. You are currently using Rails #{Rails::VERSION::STRING}"
27
27
  end
28
28
 
29
29
  module Alchemy
@@ -4,41 +4,41 @@ describe Alchemy::Admin::ClipboardController do
4
4
 
5
5
  before(:each) do
6
6
  activate_authlogic
7
- Alchemy::UserSession.create(Factory(:admin_user))
7
+ Alchemy::UserSession.create(FactoryGirl.create(:admin_user))
8
8
  end
9
9
 
10
10
  context "clipboard" do
11
11
 
12
12
  it "should hold element ids" do
13
- @page = Factory(:page, :parent_id => Alchemy::Page.rootpage.id)
14
- @element = Factory(:element, :page => @page)
15
- @another_element = Factory(:element, :page => @page)
13
+ @page = FactoryGirl.create(:page, :parent_id => Alchemy::Page.rootpage.id)
14
+ @element = FactoryGirl.create(:element, :page => @page)
15
+ @another_element = FactoryGirl.create(:element, :page => @page)
16
16
  session['clipboard'] = {'elements' => [{:id => @element.id, :action => 'copy'}]}
17
17
  post(:insert, {:remarkable_type => 'element', :remarkable_id => @another_element.id, :format => :js})
18
18
  session['clipboard']['elements'].should == [{:id => @element.id, :action => 'copy'}, {:id => @another_element.id.to_s, :action => 'copy'}]
19
19
  end
20
20
 
21
21
  it "should not have the same element twice" do
22
- @page = Factory(:page, :parent_id => Alchemy::Page.rootpage.id)
23
- @element = Factory(:element, :page => @page)
22
+ @page = FactoryGirl.create(:page, :parent_id => Alchemy::Page.rootpage.id)
23
+ @element = FactoryGirl.create(:element, :page => @page)
24
24
  session['clipboard'] = {'elements' => [{:id => @element.id, :action => 'copy'}]}
25
25
  post(:insert, {:remarkable_type => 'element', :remarkable_id => @element.id, :format => :js})
26
26
  session['clipboard']['elements'].should == [{:id => @element.id, :action => 'copy'}]
27
27
  end
28
28
 
29
29
  it "should remove element ids" do
30
- @page = Factory(:page, :parent_id => Alchemy::Page.rootpage.id)
31
- @element = Factory(:element, :page => @page)
32
- @another_element = Factory(:element, :page => @page)
30
+ @page = FactoryGirl.create(:page, :parent_id => Alchemy::Page.rootpage.id)
31
+ @element = FactoryGirl.create(:element, :page => @page)
32
+ @another_element = FactoryGirl.create(:element, :page => @page)
33
33
  session['clipboard'] = {'elements' => [{:id => @element.id, :action => 'copy'}, {:id => @another_element.id, :action => 'copy'}]}
34
34
  delete(:remove, {:remarkable_type => 'element', :remarkable_id => @another_element.id, :format => :js})
35
35
  session['clipboard']['elements'].should == [{:id => @element.id, :action => 'copy'}]
36
36
  end
37
37
 
38
38
  it "should be clearable" do
39
- @page = Factory(:page, :parent_id => Alchemy::Page.rootpage.id)
40
- @element = Factory(:element, :page => @page)
41
- @another_element = Factory(:element, :page => @page)
39
+ @page = FactoryGirl.create(:page, :parent_id => Alchemy::Page.rootpage.id)
40
+ @element = FactoryGirl.create(:element, :page => @page)
41
+ @another_element = FactoryGirl.create(:element, :page => @page)
42
42
  session['clipboard'] = {'elements' => [@element.id, @another_element.id]}
43
43
  delete(:clear, :format => :js)
44
44
  session['clipboard'].should == {}
@@ -4,11 +4,11 @@ describe Alchemy::Admin::ContentsController do
4
4
 
5
5
  before(:each) do
6
6
  activate_authlogic
7
- Alchemy::UserSession.create Factory(:admin_user)
7
+ Alchemy::UserSession.create FactoryGirl.create(:admin_user)
8
8
  end
9
9
 
10
10
  it "should update a content via ajax" do
11
- @element = Factory(:element)
11
+ @element = FactoryGirl.create(:element)
12
12
  post :update, {:id => @element.contents.find_by_name('intro').id, :content => {:body => 'Peters Petshop'}, :format => :js}
13
13
  @element.ingredient('intro').should == "Peters Petshop"
14
14
  end
@@ -18,7 +18,7 @@ describe Alchemy::Admin::ContentsController do
18
18
  context "with content_ids in params" do
19
19
 
20
20
  before(:each) do
21
- @element = Factory(:element)
21
+ @element = FactoryGirl.create(:element)
22
22
  end
23
23
 
24
24
  it "should reorder the contents" do
@@ -6,7 +6,7 @@ describe Alchemy::Admin::ElementsController do
6
6
 
7
7
  before(:each) do
8
8
  activate_authlogic
9
- Alchemy::UserSession.create Factory(:admin_user)
9
+ Alchemy::UserSession.create FactoryGirl.create(:admin_user)
10
10
  end
11
11
 
12
12
  let(:page) { mock_model('Page', {:id => 1, :urlname => 'lulu'}) }
@@ -7,7 +7,7 @@ describe Alchemy::Admin::LanguagesController do
7
7
 
8
8
  before(:each) do
9
9
  activate_authlogic
10
- Alchemy::UserSession.create Factory(:admin_user)
10
+ Alchemy::UserSession.create FactoryGirl.create(:admin_user)
11
11
  end
12
12
 
13
13
  describe "new" do
@@ -4,7 +4,7 @@ describe Alchemy::Admin::PagesController do
4
4
 
5
5
  before(:each) do
6
6
  activate_authlogic
7
- Alchemy::UserSession.create Factory(:admin_user)
7
+ Alchemy::UserSession.create FactoryGirl.create(:admin_user)
8
8
  end
9
9
 
10
10
  describe "#flush" do
@@ -16,4 +16,36 @@ describe Alchemy::Admin::PagesController do
16
16
 
17
17
  end
18
18
 
19
+ describe '#copy_language_tree' do
20
+
21
+ before(:each) do
22
+ @language = Alchemy::Language.get_default
23
+ @language_root = FactoryGirl.create(:language_root_page, :language => @language, :name => 'Intro')
24
+ @level_1 = FactoryGirl.create(:public_page, :language => @language, :parent_id => @language_root.id, :visible => true, :name => 'Level 1')
25
+ @level_2 = FactoryGirl.create(:public_page, :language => @language, :parent_id => @level_1.id, :visible => true, :name => 'Level 2')
26
+ @level_3 = FactoryGirl.create(:public_page, :language => @language, :parent_id => @level_2.id, :visible => true, :name => 'Level 3')
27
+ @level_4 = FactoryGirl.create(:public_page, :language => @language, :parent_id => @level_3.id, :visible => true, :name => 'Level 4')
28
+ @new_language = FactoryGirl.create(:language)
29
+ session[:language_code] = @new_language.code
30
+ session[:language_id] = @new_language.id
31
+ post :copy_language_tree, {:languages => {:new_lang_id => @new_language.id, :old_lang_id => @language.id}}
32
+ @new_lang_root = Alchemy::Page.language_root_for(@new_language.id)
33
+ end
34
+
35
+ it "should copy all pages" do
36
+ @new_lang_root.should_not be_nil
37
+ @new_lang_root.descendants.count.should == 4
38
+ @new_lang_root.descendants.collect(&:name).should == ["Level 1 (Copy)", "Level 2 (Copy)", "Level 3 (Copy)", "Level 4 (Copy)"]
39
+ end
40
+
41
+ it "should not set layoutpage attribute to nil" do
42
+ @new_lang_root.layoutpage.should_not be_nil
43
+ end
44
+
45
+ it "should not set layoutpage attribute to true" do
46
+ @new_lang_root.layoutpage.should_not be_true
47
+ end
48
+
49
+ end
50
+
19
51
  end
@@ -6,12 +6,12 @@ describe Alchemy::Admin::TrashController do
6
6
 
7
7
  before(:each) do
8
8
  activate_authlogic
9
- Alchemy::UserSession.create Factory(:admin_user)
9
+ Alchemy::UserSession.create FactoryGirl.create(:admin_user)
10
10
  end
11
11
 
12
12
  it "should hold trashed elements" do
13
- @page = Factory(:page, :parent_id => Alchemy::Page.rootpage.id)
14
- @element = Factory(:element, :page => nil, :public => false, :position => 0, :folded => true)
13
+ @page = FactoryGirl.create(:page, :parent_id => Alchemy::Page.rootpage.id)
14
+ @element = FactoryGirl.create(:element, :page => nil, :public => false, :position => 0, :folded => true)
15
15
  get :index, :page_id => @page.id
16
16
  response.body.should have_selector("#trash_items #element_#{@element.id}.element_editor")
17
17
  end
@@ -11,14 +11,14 @@ describe Alchemy::BaseController do
11
11
  end
12
12
 
13
13
  it "should set the language from code" do
14
- @language = Factory(:language, :code => 'kl')
14
+ @language = FactoryGirl.create(:language, :code => 'kl')
15
15
  controller.send :set_language_from, "kl"
16
16
  controller.session[:language_id].should == @language.id
17
17
  controller.session[:language_code].should == @language.code
18
18
  end
19
19
 
20
20
  it "should set the language from id as string" do
21
- @language = Factory(:language)
21
+ @language = FactoryGirl.create(:language)
22
22
  controller.send :set_language_from, @language.id.to_s
23
23
  controller.session[:language_id].should == @language.id
24
24
  controller.session[:language_code].should == @language.code
@@ -42,7 +42,7 @@ describe Alchemy::BaseController do
42
42
  context "with lang param" do
43
43
 
44
44
  it "should set the language" do
45
- @language = Factory(:language)
45
+ @language = FactoryGirl.create(:language)
46
46
  controller.stub!(:params).and_return({:lang => 'kl'})
47
47
  controller.send :set_language
48
48
  controller.session[:language_id].should == @language.id