alchemy_cms 2.2.2 → 2.2.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,7 +4,7 @@ module Alchemy
4
4
  describe EssenceBoolean do
5
5
 
6
6
  it "should act as essence" do
7
- expect { EssenceBoolean.new.acts_as_essence? }.should_not raise_error(NoMethodError)
7
+ expect { EssenceBoolean.new.acts_as_essence? }.to_not raise_error(NoMethodError)
8
8
  end
9
9
 
10
10
  it "should have correct partial path" do
@@ -4,7 +4,7 @@ module Alchemy
4
4
  describe EssenceSelect do
5
5
 
6
6
  it "should act as essence" do
7
- expect { EssenceSelect.new.acts_as_essence? }.should_not raise_error(NoMethodError)
7
+ expect { EssenceSelect.new.acts_as_essence? }.to_not raise_error(NoMethodError)
8
8
  end
9
9
 
10
10
  it "should have correct partial path" do
@@ -58,7 +58,7 @@ describe Alchemy::Language do
58
58
  if !@default_language
59
59
  @default_language = FactoryGirl.create(:language, :name => "default", :code => "aa", :frontpage_name => "intro", :default => true)
60
60
  end
61
- expect { @default_language.destroy }.should raise_error
61
+ expect { @default_language.destroy }.to raise_error
62
62
  end
63
63
 
64
64
  describe "before save" do
@@ -5,7 +5,7 @@ require 'spec_helper'
5
5
  module Alchemy
6
6
  describe Page do
7
7
 
8
- before(:all) do
8
+ before(:each) do
9
9
  @rootpage = Page.root
10
10
  @rootpage.children.destroy_all
11
11
  @language = Language.get_default
@@ -9,9 +9,6 @@ def configure
9
9
 
10
10
  require File.expand_path("../dummy/config/environment.rb", __FILE__)
11
11
 
12
- require 'database_cleaner'
13
- DatabaseCleaner.strategy = :truncation
14
-
15
12
  require 'authlogic/test_case'
16
13
  include Authlogic::TestCase
17
14
 
@@ -25,6 +22,8 @@ def configure
25
22
  ActionMailer::Base.default_url_options[:host] = "test.com"
26
23
 
27
24
  Rails.backtrace_cleaner.remove_silencers!
25
+ # Disable rails loggin for faster IO. Remove this if you want to have a test.log
26
+ Rails.logger.level = 4
28
27
 
29
28
  # Configure capybara for integration testing
30
29
  require "capybara/rails"
@@ -32,6 +31,9 @@ def configure
32
31
  Capybara.default_driver = :rack_test
33
32
  Capybara.default_selector = :css
34
33
  Capybara.javascript_driver = :poltergeist
34
+ Capybara.register_driver(:rack_test_translated_header) do |app|
35
+ Capybara::RackTest::Driver.new(app, :headers => { 'HTTP_ACCEPT_LANGUAGE' => 'de' })
36
+ end
35
37
 
36
38
  # Load support files
37
39
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
@@ -42,22 +44,21 @@ def configure
42
44
  config.include Alchemy::Engine.routes.url_helpers
43
45
  config.mock_with :rspec
44
46
  config.use_transactional_fixtures = true
47
+ # Make sure the database is clean and ready for test
48
+ config.before(:suite) do
49
+ truncate_all_tables
50
+ Alchemy::Seeder.seed!
51
+ end
52
+ # Ensuring that the locale is always resetted to :en before running any tests
53
+ config.before(:each) do
54
+ ::I18n.locale = :en
55
+ end
45
56
  end
46
57
 
47
58
  end
48
59
 
49
- def seed
50
- # This code will be run each time you run your specs.
51
- DatabaseCleaner.clean
52
- # Seed the database
53
- Alchemy::Seeder.seed!
54
- ::I18n.locale = :en
55
- end
56
-
57
60
  if defined?(Spork)
58
61
  Spork.prefork { configure }
59
- Spork.each_run { seed }
60
62
  else
61
63
  configure
62
- seed
63
64
  end
@@ -2,22 +2,29 @@ require 'declarative_authorization/maintenance'
2
2
 
3
3
  module Alchemy
4
4
  module Specs
5
+
5
6
  # Helpers for integration specs
7
+ #
6
8
  # This file is auto included in rspec integration/request tests.
9
+ #
7
10
  module Helpers
8
11
  include Authorization::TestHelper
9
12
 
10
- # Capybara actions to login into Alchemy Backend
13
+ # Shortcut method for:
11
14
  #
12
- # === IMPORTANT NOTE:
15
+ # * create_admin_user
16
+ # * login_into_alchemy
13
17
  #
14
- # Because of a very strange bug in capybara, or rspec, or what ever, you **MUST** create the user inside a +before(:all)+ block inside your integrations specs.
18
+ def authorize_as_admin
19
+ create_admin_user
20
+ login_into_alchemy
21
+ end
22
+
23
+ # Capybara actions to login into Alchemy Backend
15
24
  #
16
- # === Example:
25
+ # You should have a admin user before loggin in.
17
26
  #
18
- # before(:all) do
19
- # create_admin_user
20
- # end
27
+ # See: create_admin_user method
21
28
  #
22
29
  def login_into_alchemy
23
30
  visit '/alchemy/admin/login'
@@ -27,18 +34,30 @@ module Alchemy
27
34
  end
28
35
 
29
36
  # Load additional authorization_rules for specs.
37
+ #
30
38
  # For some strange reason, this isn't done automatically while running the specs
39
+ #
31
40
  def load_authorization_rules
32
41
  instance = Alchemy::AuthEngine.get_instance
33
42
  instance.load(File.join(File.dirname(__FILE__), '../../dummy', 'config/authorization_rules.rb'))
34
43
  end
35
44
 
36
45
  # Creates an admin user in a way it works
46
+ #
47
+ # You should create it once in a before block
48
+ #
49
+ # === Example:
50
+ #
51
+ # before do
52
+ # create_admin_user
53
+ # end
54
+ #
37
55
  def create_admin_user
38
- @user = FactoryGirl.build(:admin_user).save_without_session_maintenance
56
+ @user ||= FactoryGirl.build(:admin_user).save_without_session_maintenance
39
57
  end
40
58
 
41
59
  end
60
+
42
61
  end
43
62
  end
44
63
 
@@ -0,0 +1,35 @@
1
+ # Fixes Capybara database connection issues
2
+ # Found http://blog.plataformatec.com.br/2011/12/three-tips-to-improve-the-performance-of-your-test-suite/
3
+
4
+ class ActiveRecord::Base
5
+ mattr_accessor :shared_connection
6
+ @@shared_connection = nil
7
+
8
+ def self.connection
9
+ @@shared_connection || retrieve_connection
10
+ end
11
+ end
12
+
13
+ # Forces all threads to share the same connection. This works on
14
+ # Capybara because it starts the web server in a thread.
15
+ ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
16
+
17
+ # fast truncation of all tables that need truncations (select is 10x faster then truncate)
18
+ # http://grosser.it/2012/07/03/rubyactiverecord-fastest-way-to-truncate-test-database/
19
+ def truncate_all_tables
20
+ config = ActiveRecord::Base.configurations[::Rails.env]
21
+ connection = ActiveRecord::Base.connection
22
+ connection.disable_referential_integrity do
23
+ connection.tables.each do |table_name|
24
+ next if connection.select_value("SELECT count(*) FROM #{table_name}") == 0
25
+ case config["adapter"]
26
+ when "mysql2", "postgresql"
27
+ connection.execute("TRUNCATE #{table_name}")
28
+ when "sqlite3"
29
+ connection.execute("DELETE FROM #{table_name}")
30
+ connection.execute("DELETE FROM sqlite_sequence where name='#{table_name}'")
31
+ end
32
+ end
33
+ connection.execute("VACUUM") if config["adapter"] == "sqlite3"
34
+ end
35
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.2.3.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2012-07-07 00:00:00.000000000 Z
15
+ date: 2012-09-19 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: rails
@@ -270,22 +270,6 @@ dependencies:
270
270
  - - ! '>='
271
271
  - !ruby/object:Gem::Version
272
272
  version: '0'
273
- - !ruby/object:Gem::Dependency
274
- name: database_cleaner
275
- requirement: !ruby/object:Gem::Requirement
276
- none: false
277
- requirements:
278
- - - ! '>='
279
- - !ruby/object:Gem::Version
280
- version: '0'
281
- type: :development
282
- prerelease: false
283
- version_requirements: !ruby/object:Gem::Requirement
284
- none: false
285
- requirements:
286
- - - ! '>='
287
- - !ruby/object:Gem::Version
288
- version: '0'
289
273
  - !ruby/object:Gem::Dependency
290
274
  name: factory_girl_rails
291
275
  requirement: !ruby/object:Gem::Requirement
@@ -863,6 +847,7 @@ files:
863
847
  - spec/dummy/config/initializers/session_store.rb
864
848
  - spec/dummy/config/initializers/wrap_parameters.rb
865
849
  - spec/dummy/config/locales/en.yml
850
+ - spec/dummy/config/locales/fo.yml
866
851
  - spec/dummy/config/routes.rb
867
852
  - spec/dummy/db/schema.rb
868
853
  - spec/dummy/lib/assets/.gitkeep
@@ -917,6 +902,7 @@ files:
917
902
  - spec/spec_helper.rb
918
903
  - spec/support/alchemy/controller_hacks.rb
919
904
  - spec/support/alchemy/specs_helpers.rb
905
+ - spec/support/alchemy/test_tweaks.rb
920
906
  - vendor/assets/javascripts/jquery_plugins/jquery.Jcrop.min.js
921
907
  - vendor/assets/javascripts/jquery_plugins/jquery.dialogextend.min.js
922
908
  - vendor/assets/javascripts/jquery_plugins/jquery.html5uploader.js
@@ -1039,7 +1025,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1039
1025
  version: '0'
1040
1026
  segments:
1041
1027
  - 0
1042
- hash: -4110800022102781738
1028
+ hash: -3671524832789070109
1043
1029
  requirements:
1044
1030
  - ImageMagick (libmagick), v6.6 or greater.
1045
1031
  rubyforge_project:
@@ -1085,6 +1071,7 @@ test_files:
1085
1071
  - spec/dummy/config/initializers/session_store.rb
1086
1072
  - spec/dummy/config/initializers/wrap_parameters.rb
1087
1073
  - spec/dummy/config/locales/en.yml
1074
+ - spec/dummy/config/locales/fo.yml
1088
1075
  - spec/dummy/config/routes.rb
1089
1076
  - spec/dummy/db/schema.rb
1090
1077
  - spec/dummy/lib/assets/.gitkeep
@@ -1139,4 +1126,5 @@ test_files:
1139
1126
  - spec/spec_helper.rb
1140
1127
  - spec/support/alchemy/controller_hacks.rb
1141
1128
  - spec/support/alchemy/specs_helpers.rb
1129
+ - spec/support/alchemy/test_tweaks.rb
1142
1130
  has_rdoc: