change load behaviour in a better engine way and add more tests
This commit is contained in:
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
rvm:
|
rvm:
|
||||||
- 1.9.2
|
- 1.9.3
|
||||||
services:
|
services:
|
||||||
- couchdb
|
- couchdb
|
||||||
before_script:
|
before_script:
|
||||||
|
|||||||
+13
-15
@@ -9,7 +9,7 @@ GIT
|
|||||||
|
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/bterkuile/simply_stored.git
|
remote: git://github.com/bterkuile/simply_stored.git
|
||||||
revision: 04f58b15bb308420f78c66d27ce4d4d3b58183ff
|
revision: fe749c792e303817f825fa4964936cc68a62b14b
|
||||||
specs:
|
specs:
|
||||||
simply_stored (1.0.0)
|
simply_stored (1.0.0)
|
||||||
activesupport
|
activesupport
|
||||||
@@ -65,8 +65,10 @@ GEM
|
|||||||
addressable (2.3.2)
|
addressable (2.3.2)
|
||||||
arel (3.0.2)
|
arel (3.0.2)
|
||||||
bcrypt-ruby (3.0.1)
|
bcrypt-ruby (3.0.1)
|
||||||
bourbon (2.1.2)
|
bootstrap-sass (2.2.1.1)
|
||||||
sass (>= 3.2)
|
sass (~> 3.2)
|
||||||
|
bourbon (3.0.1)
|
||||||
|
sass (>= 3.2.0)
|
||||||
thor
|
thor
|
||||||
builder (3.0.4)
|
builder (3.0.4)
|
||||||
capybara (2.0.1)
|
capybara (2.0.1)
|
||||||
@@ -128,7 +130,6 @@ GEM
|
|||||||
less-rails (2.2.6)
|
less-rails (2.2.6)
|
||||||
actionpack (>= 3.1)
|
actionpack (>= 3.1)
|
||||||
less (~> 2.2.0)
|
less (~> 2.2.0)
|
||||||
libv8 (3.3.10.4)
|
|
||||||
libwebsocket (0.1.7.1)
|
libwebsocket (0.1.7.1)
|
||||||
addressable
|
addressable
|
||||||
websocket
|
websocket
|
||||||
@@ -138,7 +139,7 @@ GEM
|
|||||||
treetop (~> 1.4.8)
|
treetop (~> 1.4.8)
|
||||||
method_source (0.8.1)
|
method_source (0.8.1)
|
||||||
mime-types (1.19)
|
mime-types (1.19)
|
||||||
multi_json (1.4.0)
|
multi_json (1.5.0)
|
||||||
nokogiri (1.5.5)
|
nokogiri (1.5.5)
|
||||||
orm_adapter (0.0.7)
|
orm_adapter (0.0.7)
|
||||||
paperclip (3.3.1)
|
paperclip (3.3.1)
|
||||||
@@ -174,12 +175,13 @@ GEM
|
|||||||
rake (>= 0.8.7)
|
rake (>= 0.8.7)
|
||||||
rdoc (~> 3.4)
|
rdoc (~> 3.4)
|
||||||
thor (>= 0.14.6, < 2.0)
|
thor (>= 0.14.6, < 2.0)
|
||||||
rake (10.0.2)
|
rake (10.0.3)
|
||||||
rdoc (3.12)
|
rdoc (3.12)
|
||||||
json (~> 1.4)
|
json (~> 1.4)
|
||||||
|
ref (1.0.2)
|
||||||
rest-client (1.6.7)
|
rest-client (1.6.7)
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
rspec-core (2.12.1)
|
rspec-core (2.12.2)
|
||||||
rspec-expectations (2.12.0)
|
rspec-expectations (2.12.0)
|
||||||
diff-lcs (~> 1.1.3)
|
diff-lcs (~> 1.1.3)
|
||||||
rspec-mocks (2.12.0)
|
rspec-mocks (2.12.0)
|
||||||
@@ -196,7 +198,7 @@ GEM
|
|||||||
railties (~> 3.2.0)
|
railties (~> 3.2.0)
|
||||||
sass (>= 3.1.10)
|
sass (>= 3.1.10)
|
||||||
tilt (~> 1.3)
|
tilt (~> 1.3)
|
||||||
selenium-webdriver (2.26.0)
|
selenium-webdriver (2.27.2)
|
||||||
childprocess (>= 0.2.5)
|
childprocess (>= 0.2.5)
|
||||||
libwebsocket (~> 0.1.3)
|
libwebsocket (~> 0.1.3)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
@@ -219,8 +221,8 @@ GEM
|
|||||||
capybara (>= 1.0.0)
|
capybara (>= 1.0.0)
|
||||||
rspec-rails (>= 2.5.0)
|
rspec-rails (>= 2.5.0)
|
||||||
temple (0.5.5)
|
temple (0.5.5)
|
||||||
therubyracer (0.10.2)
|
therubyracer (0.11.0)
|
||||||
libv8 (~> 3.3.10)
|
ref
|
||||||
thin (1.5.0)
|
thin (1.5.0)
|
||||||
daemons (>= 1.0.9)
|
daemons (>= 1.0.9)
|
||||||
eventmachine (>= 0.12.6)
|
eventmachine (>= 0.12.6)
|
||||||
@@ -232,10 +234,6 @@ GEM
|
|||||||
treetop (1.4.12)
|
treetop (1.4.12)
|
||||||
polyglot
|
polyglot
|
||||||
polyglot (>= 0.3.1)
|
polyglot (>= 0.3.1)
|
||||||
twitter-bootstrap-rails (2.1.7)
|
|
||||||
actionpack (>= 3.1)
|
|
||||||
execjs
|
|
||||||
railties (>= 3.1)
|
|
||||||
tzinfo (0.3.35)
|
tzinfo (0.3.35)
|
||||||
warden (1.1.1)
|
warden (1.1.1)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
@@ -247,6 +245,7 @@ PLATFORMS
|
|||||||
ruby
|
ruby
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
bootstrap-sass
|
||||||
bourbon
|
bourbon
|
||||||
cmtool!
|
cmtool!
|
||||||
coffee-script
|
coffee-script
|
||||||
@@ -267,4 +266,3 @@ DEPENDENCIES
|
|||||||
therubyracer
|
therubyracer
|
||||||
thin
|
thin
|
||||||
tinymce-rails
|
tinymce-rails
|
||||||
twitter-bootstrap-rails
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
= f.text_area :sidebar, :rows => 15, :cols => 80, :class => 'editor_full'
|
= f.text_area :sidebar, :rows => 15, :cols => 80, :class => 'editor_full'
|
||||||
.field
|
.field
|
||||||
= f.label :parent_id
|
= f.label :parent_id
|
||||||
= f.select :parent_id, tree_options_for_select(Page.full_tree(@page.locale), exclude: @page.id, selected: @page.parent_id), include_blank: ' -- '
|
= f.select :parent_id, tree_options_for_select(Page.full_tree(@page.locale || Page.locales.first), exclude: @page.id, selected: @page.parent_id), include_blank: ' -- '
|
||||||
.field
|
.field
|
||||||
= f.label :position
|
= f.label :position
|
||||||
= f.select :position, (0..20).to_a
|
= f.select :position, (0..20).to_a
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
Cmtool::Menu.register do
|
|
||||||
group label: :site do
|
|
||||||
title t('cmtool.menu.site.title')
|
|
||||||
resource_link Page, scope: Cmtool
|
|
||||||
resource_link Cmtool::Keyword
|
|
||||||
end
|
|
||||||
group label: :publications do
|
|
||||||
title t('cmtool.menu.publications.title')
|
|
||||||
resource_link Cmtool::News
|
|
||||||
resource_link Cmtool::Faq
|
|
||||||
resource_link Cmtool::Quote
|
|
||||||
end
|
|
||||||
group label: :forms do
|
|
||||||
title t('cmtool.menu.forms.title')
|
|
||||||
resource_link Cmtool::ContactForm
|
|
||||||
resource_link Cmtool::NewsletterSubscription
|
|
||||||
end
|
|
||||||
group label: :files do
|
|
||||||
title t('cmtool.menu.files.title')
|
|
||||||
resource_link Cmtool::Image
|
|
||||||
resource_link Cmtool::Directory
|
|
||||||
end
|
|
||||||
|
|
||||||
resource_link User, label: :users, scope: Cmtool
|
|
||||||
end
|
|
||||||
Cmtool::Menu.register do
|
|
||||||
end
|
|
||||||
+26
-1
@@ -14,7 +14,32 @@ require 'bourbon'
|
|||||||
module Cmtool
|
module Cmtool
|
||||||
class Engine < ::Rails::Engine
|
class Engine < ::Rails::Engine
|
||||||
isolate_namespace Cmtool
|
isolate_namespace Cmtool
|
||||||
initializer "cmtool" do
|
initializer "cmtool.build_menu" do
|
||||||
|
Cmtool::Menu.register do
|
||||||
|
group label: :site do
|
||||||
|
title t('cmtool.menu.site.title')
|
||||||
|
resource_link Page, scope: Cmtool
|
||||||
|
resource_link Cmtool::Keyword
|
||||||
|
end
|
||||||
|
group label: :publications do
|
||||||
|
title t('cmtool.menu.publications.title')
|
||||||
|
resource_link Cmtool::News
|
||||||
|
resource_link Cmtool::Faq
|
||||||
|
resource_link Cmtool::Quote
|
||||||
|
end
|
||||||
|
group label: :forms do
|
||||||
|
title t('cmtool.menu.forms.title')
|
||||||
|
resource_link Cmtool::ContactForm
|
||||||
|
resource_link Cmtool::NewsletterSubscription
|
||||||
|
end
|
||||||
|
group label: :files do
|
||||||
|
title t('cmtool.menu.files.title')
|
||||||
|
resource_link Cmtool::Image
|
||||||
|
resource_link Cmtool::Directory
|
||||||
|
end
|
||||||
|
|
||||||
|
resource_link User, label: :users, scope: Cmtool
|
||||||
|
end
|
||||||
end
|
end
|
||||||
ActiveSupport.on_load(:action_view) do
|
ActiveSupport.on_load(:action_view) do
|
||||||
require File.expand_path('../../../app/helpers/cmtool/application_helper', __FILE__)
|
require File.expand_path('../../../app/helpers/cmtool/application_helper', __FILE__)
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ module Cmtool
|
|||||||
|
|
||||||
klass.validates :name, presence: true
|
klass.validates :name, presence: true
|
||||||
klass.validates :locale, presence: true
|
klass.validates :locale, presence: true
|
||||||
|
klass.validate :parent_locale_match
|
||||||
|
|
||||||
# RELATIONS
|
# RELATIONS
|
||||||
klass.has_and_belongs_to_many :keywords, storing_keys: true, class_name: 'Cmtool::Keyword'
|
klass.has_and_belongs_to_many :keywords, storing_keys: true, class_name: 'Cmtool::Keyword'
|
||||||
@@ -36,6 +37,12 @@ module Cmtool
|
|||||||
def generate_name
|
def generate_name
|
||||||
name = self.class.generate_name(title)
|
name = self.class.generate_name(title)
|
||||||
end
|
end
|
||||||
|
private
|
||||||
|
def parent_locale_match
|
||||||
|
if parent.present?
|
||||||
|
errors.add(:locale, 'must be the same as the parent') unless parent.locale == locale
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
module ClassMethods
|
module ClassMethods
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
module Cmtool
|
module Cmtool
|
||||||
VERSION = "0.4.0"
|
VERSION = "0.5.0"
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
require 'acceptance/acceptance_helper'
|
||||||
|
|
||||||
|
feature 'Pages index', %q{
|
||||||
|
In order have pages
|
||||||
|
As a user
|
||||||
|
I want to see pages
|
||||||
|
} do
|
||||||
|
|
||||||
|
scenario 'visit root' do
|
||||||
|
visit '/cmtool'
|
||||||
|
page.current_path.should == '/users/sign_in'
|
||||||
|
end
|
||||||
|
context 'with logged in user' do
|
||||||
|
background do
|
||||||
|
create_user 'test@example.com'
|
||||||
|
login_as 'test@example.com'
|
||||||
|
end
|
||||||
|
context 'without pages' do
|
||||||
|
scenario 'list pages as root' do
|
||||||
|
visit '/cmtool'
|
||||||
|
page.should have_link 'New Page'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'with pages' do
|
||||||
|
background do
|
||||||
|
@nl1 = create :page, name: 'nl1', locale: 'nl'
|
||||||
|
@nl11 = create :page, name: 'nl11', locale: 'nl', parent_id: @nl1.id
|
||||||
|
@nl111 = create :page, name: 'nl111', locale: 'nl', parent_id: @nl11.id
|
||||||
|
@nl12 = create :page, name: 'nl12', locale: 'nl', parent_id: @nl1.id
|
||||||
|
|
||||||
|
@en1 = create :page, name: 'en1', locale: 'en'
|
||||||
|
end
|
||||||
|
|
||||||
|
scenario 'see both languages' do
|
||||||
|
visit '/cmtool'
|
||||||
|
page.should have_link 'nl1'
|
||||||
|
page.should have_link '- nl11'
|
||||||
|
page.should have_link '- - nl111'
|
||||||
|
page.should have_link '- nl12'
|
||||||
|
page.should have_link 'en1'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -1,6 +1,19 @@
|
|||||||
module HelperMethods
|
module HelperMethods
|
||||||
# Put helper methods you need to be available in all acceptance specs here.
|
# Put helper methods you need to be available in all acceptance specs here.
|
||||||
|
def create_user(email, password='secret')
|
||||||
|
@user = User.find_by_email(email) || FactoryGirl.create(:user, email: email, password: password)
|
||||||
|
end
|
||||||
|
|
||||||
|
def login_as(email)
|
||||||
|
visit "/users/sign_in"
|
||||||
|
fill_in "user_email", with: email
|
||||||
|
fill_in "user_password", with: "secret"
|
||||||
|
submit_form
|
||||||
|
end
|
||||||
|
|
||||||
|
def submit_form
|
||||||
|
find("[type=submit]").click
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
RSpec.configuration.include HelperMethods, :type => :acceptance
|
RSpec.configuration.include HelperMethods, :type => :acceptance
|
||||||
@@ -63,5 +63,15 @@ describe Cmtool::Menu do
|
|||||||
second_last.should be_a Cmtool::Menu::ResourceLink
|
second_last.should be_a Cmtool::Menu::ResourceLink
|
||||||
second_last.resource.should == Page
|
second_last.resource.should == Page
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "should fall back to normal behaviour when no menu item specified is found" do
|
||||||
|
Cmtool::Menu.reset!
|
||||||
|
Cmtool::Menu.register do
|
||||||
|
append_to :publications do
|
||||||
|
resource_link Cmtool::Directory
|
||||||
|
end
|
||||||
|
end
|
||||||
|
Cmtool::Menu.items.size.should == 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
FactoryGirl.define do
|
||||||
|
factory :page, class: Page do
|
||||||
|
sequence(:name){|i| "page#{i}"}
|
||||||
|
locale 'en'
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Page do
|
||||||
|
before :each do
|
||||||
|
@nl1 = create :page, name: 'nl1', locale: 'nl'
|
||||||
|
@nl11 = create :page, name: 'nl11', locale: 'nl', parent_id: @nl1.id
|
||||||
|
@nl111 = create :page, name: 'nl111', locale: 'nl', parent_id: @nl11.id
|
||||||
|
@nl12 = create :page, name: 'nl12', locale: 'nl', parent_id: @nl1.id
|
||||||
|
|
||||||
|
@en1 = create :page, name: 'en1', locale: 'en'
|
||||||
|
end
|
||||||
|
|
||||||
|
describe :ancestry do
|
||||||
|
it "should not be valid when the parent has a different locale then the page itself" do
|
||||||
|
@nl12.parent_id = @en1.id
|
||||||
|
@nl12.should_not be_valid
|
||||||
|
@nl12.error_on(:locale).should_not be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
+1
-14
@@ -15,7 +15,7 @@ Dir[File.join(ENGINE_RAILS_ROOT, "spec/factories/**/*.rb")].each {|f| require f
|
|||||||
|
|
||||||
I18n.locale = :en
|
I18n.locale = :en
|
||||||
Devise.stretches = 1
|
Devise.stretches = 1
|
||||||
Capybara.default_driver = :selenium
|
#Capybara.default_driver = :selenium
|
||||||
RSpec.configure do |config|
|
RSpec.configure do |config|
|
||||||
config.mock_with :rspec
|
config.mock_with :rspec
|
||||||
config.include FactoryGirl::Syntax::Methods
|
config.include FactoryGirl::Syntax::Methods
|
||||||
@@ -42,19 +42,6 @@ RSpec.configure do |config|
|
|||||||
|
|
||||||
config.before :all do
|
config.before :all do
|
||||||
end
|
end
|
||||||
config.before :each, type: :request do
|
|
||||||
#Capybara.current_driver = :selenium
|
|
||||||
sign_in_user_through_request
|
|
||||||
end
|
|
||||||
config.after :each, type: :request do
|
|
||||||
visit "/users/sign_out"
|
|
||||||
end
|
|
||||||
def sign_in_user_through_request
|
|
||||||
visit "/users/sign_in"
|
|
||||||
fill_in 'user[email]', with: @user.email
|
|
||||||
fill_in 'user[password]', with: @user.password
|
|
||||||
click_on 'Sign in'
|
|
||||||
end
|
|
||||||
|
|
||||||
def create_pages_tree
|
def create_pages_tree
|
||||||
root1 = Page.create(name: 'root1', locale: 'en')
|
root1 = Page.create(name: 'root1', locale: 'en')
|
||||||
|
|||||||
Reference in New Issue
Block a user