refinerycms-sl-videos 2.0.0
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.
- data/Gemfile +71 -0
- data/Gemfile.lock +289 -0
- data/Guardfile +27 -0
- data/Rakefile +22 -0
- data/app/controllers/refinery/videos/admin/videos_controller.rb +12 -0
- data/app/controllers/refinery/videos/videos_controller.rb +34 -0
- data/app/models/refinery/videos/video.rb +64 -0
- data/app/views/refinery/videos/admin/shared/_locale_picker.html.erb +11 -0
- data/app/views/refinery/videos/admin/videos/_actions.html.erb +25 -0
- data/app/views/refinery/videos/admin/videos/_form.html.erb +44 -0
- data/app/views/refinery/videos/admin/videos/_records.html.erb +18 -0
- data/app/views/refinery/videos/admin/videos/_sortable_list.html.erb +5 -0
- data/app/views/refinery/videos/admin/videos/_video.html.erb +33 -0
- data/app/views/refinery/videos/admin/videos/_videos.html.erb +2 -0
- data/app/views/refinery/videos/admin/videos/edit.html.erb +1 -0
- data/app/views/refinery/videos/admin/videos/index.html.erb +7 -0
- data/app/views/refinery/videos/admin/videos/new.html.erb +1 -0
- data/app/views/refinery/videos/videos/index.html.erb +11 -0
- data/app/views/refinery/videos/videos/show.html.erb +25 -0
- data/config/locales/en.yml +34 -0
- data/config/locales/es.yml +35 -0
- data/config/routes.rb +19 -0
- data/db/migrate/1_create_videos_videos.rb +31 -0
- data/db/migrate/2_create_videos_translations.rb +17 -0
- data/db/migrate/3_add_dimensions_to_videos.rb +13 -0
- data/db/seeds.rb +25 -0
- data/lib/generators/refinery/videos_generator.rb +19 -0
- data/lib/refinery/videos/engine.rb +26 -0
- data/lib/refinery/videos/version.rb +18 -0
- data/lib/refinery/videos.rb +22 -0
- data/lib/refinerycms-sl-videos.rb +1 -0
- data/lib/tasks/refinery/videos.rake +13 -0
- data/readme.md +43 -0
- data/refinerycms-sl-videos.gemspec +23 -0
- data/script/rails +10 -0
- data/spec/models/refinery/videos/video_spec.rb +18 -0
- data/spec/requests/refinery/videos/admin/videos_spec.rb +101 -0
- data/spec/spec_helper.rb +61 -0
- data/spec/support/factories/refinery/videos.rb +7 -0
- data/tasks/rspec.rake +6 -0
- data/tasks/testing.rake +8 -0
- metadata +112 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
<% content_for :body_content_title do %>
|
2
|
+
<%= @video.title %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<% content_for :body do %>
|
6
|
+
<section>
|
7
|
+
<%= raw @video.embed_html_with_dimensions %>
|
8
|
+
<div id="video-text"><%= raw @video.video_text %></div>
|
9
|
+
</section>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% content_for :side_body do %>
|
13
|
+
<aside>
|
14
|
+
<h2><%= t('.other') %></h2>
|
15
|
+
<ul id="videos">
|
16
|
+
<% @videos.each do |video| %>
|
17
|
+
<li>
|
18
|
+
<%= link_to video.title, refinery.videos_video_path(video) %>
|
19
|
+
</li>
|
20
|
+
<% end %>
|
21
|
+
</ul>
|
22
|
+
</aside>
|
23
|
+
<% end %>
|
24
|
+
|
25
|
+
<%= render '/refinery/content_page' %>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
en:
|
2
|
+
refinery:
|
3
|
+
plugins:
|
4
|
+
videos:
|
5
|
+
title: Videos
|
6
|
+
videos:
|
7
|
+
admin:
|
8
|
+
videos:
|
9
|
+
actions:
|
10
|
+
create_new: Add New Video
|
11
|
+
reorder: Reorder Videos
|
12
|
+
reorder_done: Done Reordering Videos
|
13
|
+
records:
|
14
|
+
title: Videos
|
15
|
+
sorry_no_results: Sorry! There are no results found.
|
16
|
+
no_items_yet: There are no Videos yet. Click "Add New Video" to add your first video.
|
17
|
+
video:
|
18
|
+
view_live_html: View this video live <br/><em>(opens in a new window)</em>
|
19
|
+
edit: Edit this video
|
20
|
+
delete: Remove this video forever
|
21
|
+
form:
|
22
|
+
title_description: Leave blank to set title from video
|
23
|
+
videos:
|
24
|
+
show:
|
25
|
+
other: Other Videos
|
26
|
+
activerecord:
|
27
|
+
attributes:
|
28
|
+
'refinery/videos/video':
|
29
|
+
title: Title
|
30
|
+
video_url: Video url
|
31
|
+
video_text: Video text
|
32
|
+
custom_url: Custom url
|
33
|
+
height: Height
|
34
|
+
width: Width
|
@@ -0,0 +1,35 @@
|
|
1
|
+
es:
|
2
|
+
refinery:
|
3
|
+
plugins:
|
4
|
+
videos:
|
5
|
+
title: Vídeos
|
6
|
+
# article: masculino/femenino
|
7
|
+
videos:
|
8
|
+
admin:
|
9
|
+
videos:
|
10
|
+
actions:
|
11
|
+
create_new: Crear nuevo video
|
12
|
+
reorder: Reordenar vídeos
|
13
|
+
reorder_done: Reordenación de vídeos completada
|
14
|
+
records:
|
15
|
+
title: Vídeos
|
16
|
+
sorry_no_results: Lo siento, no hay resultados
|
17
|
+
no_items_yet: No hay vídeos todavía. Pulsa en "Crear nuevo Video" para crear tu primer video.
|
18
|
+
video:
|
19
|
+
view_live_html: Ver este video como abierto al público <br/><em>(abre en ventana nueva)</em>
|
20
|
+
edit: Editar este video
|
21
|
+
delete: Borrar este video para siempre
|
22
|
+
form:
|
23
|
+
title_description: Dejar vacío para recoger el título del vídeo
|
24
|
+
videos:
|
25
|
+
show:
|
26
|
+
other: Otros vídeos
|
27
|
+
activerecord:
|
28
|
+
attributes:
|
29
|
+
'refinery/videos/video':
|
30
|
+
title: Título
|
31
|
+
video_url: Url del video
|
32
|
+
video_text: Texto del vídeo
|
33
|
+
custom_url: Url personalizada
|
34
|
+
height: Alto
|
35
|
+
width: Ancho
|
data/config/routes.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Refinery::Core::Engine.routes.append do
|
2
|
+
|
3
|
+
# Frontend routes
|
4
|
+
namespace :videos do
|
5
|
+
resources :videos, :path => '', :only => [:index, :show]
|
6
|
+
end
|
7
|
+
|
8
|
+
# Admin routes
|
9
|
+
namespace :videos, :path => '' do
|
10
|
+
namespace :admin, :path => 'refinery' do
|
11
|
+
resources :videos, :except => :show do
|
12
|
+
collection do
|
13
|
+
post :update_positions
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
class CreateVideosVideos < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def up
|
4
|
+
create_table Refinery::Videos::Video.table_name do |t|
|
5
|
+
t.string :title
|
6
|
+
t.string :video_text
|
7
|
+
t.string :video_url
|
8
|
+
t.string :custom_url
|
9
|
+
t.integer :position
|
10
|
+
t.string :slug
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
|
15
|
+
add_index Refinery::Videos::Video.table_name, :slug
|
16
|
+
end
|
17
|
+
|
18
|
+
def down
|
19
|
+
if defined?(::Refinery::UserPlugin)
|
20
|
+
::Refinery::UserPlugin.destroy_all({:name => "refinerycms-videos"})
|
21
|
+
end
|
22
|
+
|
23
|
+
if defined?(::Refinery::Page)
|
24
|
+
::Refinery::Page.delete_all({:link_url => "/videos/videos"})
|
25
|
+
end
|
26
|
+
|
27
|
+
drop_table Refinery::Videos::Video.table_name
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class CreateVideosTranslations < ActiveRecord::Migration
|
2
|
+
def up
|
3
|
+
Refinery::Videos::Video.create_translation_table!({
|
4
|
+
:title => :string,
|
5
|
+
:video_text => :text,
|
6
|
+
:video_url => :string,
|
7
|
+
:custom_url => :string,
|
8
|
+
:slug => :string
|
9
|
+
}, {
|
10
|
+
:migrate_data => true
|
11
|
+
})
|
12
|
+
end
|
13
|
+
|
14
|
+
def down
|
15
|
+
Refinery::Videos::Video.drop_translation_table! :migrate_data => true
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class AddDimensionsToVideos < ActiveRecord::Migration
|
2
|
+
|
3
|
+
def up
|
4
|
+
add_column Refinery::Videos::Video.table_name, :width, :integer
|
5
|
+
add_column Refinery::Videos::Video.table_name, :height, :integer
|
6
|
+
end
|
7
|
+
|
8
|
+
def down
|
9
|
+
remove_column Refinery::Videos::Video.table_name, :width
|
10
|
+
remove_column Refinery::Videos::Video.table_name, :height
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
data/db/seeds.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
(Refinery.i18n_enabled? ? Refinery::I18n.frontend_locales : [:en]).each do |lang|
|
2
|
+
I18n.locale = lang
|
3
|
+
|
4
|
+
if defined?(Refinery::User)
|
5
|
+
Refinery::User.all.each do |user|
|
6
|
+
if user.plugins.where(:name => 'refinerycms-videos').blank?
|
7
|
+
user.plugins.create(:name => 'refinerycms-videos',
|
8
|
+
:position => (user.plugins.maximum(:position) || -1) +1)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
url = "/videos"
|
14
|
+
if defined?(Refinery::Page) && Refinery::Page.where(:link_url => url).empty?
|
15
|
+
page = Refinery::Page.create(
|
16
|
+
:title => 'Videos',
|
17
|
+
:link_url => url,
|
18
|
+
:deletable => false,
|
19
|
+
:menu_match => "^#{url}(\/|\/.+?|)$"
|
20
|
+
)
|
21
|
+
Refinery::Pages.default_parts.each_with_index do |default_page_part, index|
|
22
|
+
page.parts.create(:title => default_page_part, :body => nil, :position => index)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Refinery
|
2
|
+
class VideosGenerator < Rails::Generators::Base
|
3
|
+
|
4
|
+
def rake_db
|
5
|
+
rake("refinery_videos:install:migrations")
|
6
|
+
end
|
7
|
+
|
8
|
+
def append_load_seed_data
|
9
|
+
create_file 'db/seeds.rb' unless File.exists?(File.join(destination_root, 'db', 'seeds.rb'))
|
10
|
+
append_file 'db/seeds.rb', :verbose => true do
|
11
|
+
<<-EOH
|
12
|
+
|
13
|
+
# Added by Refinery CMS Videos extension
|
14
|
+
Refinery::Videos::Engine.load_seed
|
15
|
+
EOH
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Refinery
|
2
|
+
module Videos
|
3
|
+
class Engine < Rails::Engine
|
4
|
+
include Refinery::Engine
|
5
|
+
isolate_namespace Refinery::Videos
|
6
|
+
|
7
|
+
engine_name :refinery_videos
|
8
|
+
|
9
|
+
initializer "register refinerycms_videos plugin" do
|
10
|
+
Refinery::Plugin.register do |plugin|
|
11
|
+
plugin.name = "videos"
|
12
|
+
plugin.url = proc { Refinery::Core::Engine.routes.url_helpers.videos_admin_videos_path }
|
13
|
+
plugin.pathname = root
|
14
|
+
plugin.activity = {
|
15
|
+
:class_name => :'refinery/videos/video'
|
16
|
+
}
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
config.after_initialize do
|
22
|
+
Refinery.register_extension(Refinery::Videos)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Refinery
|
2
|
+
module Videos
|
3
|
+
class Version
|
4
|
+
@major = 2
|
5
|
+
@minor = 0
|
6
|
+
@tiny = 0
|
7
|
+
@build = nil
|
8
|
+
|
9
|
+
class << self
|
10
|
+
attr_reader :major, :minor, :tiny, :build
|
11
|
+
|
12
|
+
def to_s
|
13
|
+
[@major, @minor, @tiny, @build].compact.join('.')
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'refinerycms-core'
|
2
|
+
require 'acts_as_unvlogable'
|
3
|
+
|
4
|
+
module Refinery
|
5
|
+
autoload :VideosGenerator, 'generators/refinery/videos_generator'
|
6
|
+
|
7
|
+
module Videos
|
8
|
+
require 'refinery/videos/engine'
|
9
|
+
|
10
|
+
class << self
|
11
|
+
attr_writer :root
|
12
|
+
|
13
|
+
def root
|
14
|
+
@root ||= Pathname.new(File.expand_path('../../../', __FILE__))
|
15
|
+
end
|
16
|
+
|
17
|
+
def factory_paths
|
18
|
+
@factory_paths ||= [ root.join('spec', 'factories').to_s ]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'refinery/videos'
|
data/readme.md
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# Videos extension for Refinery CMS.
|
2
|
+
|
3
|
+
## About
|
4
|
+
|
5
|
+
A page for videos from diferent sources, in a blog format with multilingual support, custom urls and seo.
|
6
|
+
Check supported video formats of [acts\_as\_unvlogable](https://github.com/mamuso/acts_as_unvlogable).
|
7
|
+
|
8
|
+
For RefineryCMS 2.0.0.
|
9
|
+
|
10
|
+
## Requirements
|
11
|
+
|
12
|
+
* [acts\_as\_unvlogable](https://github.com/mamuso/acts_as_unvlogable) gem (>= 1.0.0)
|
13
|
+
|
14
|
+
## TODO
|
15
|
+
|
16
|
+
* Fix SEO (seo data is stored but for some reason data is not in html head)
|
17
|
+
* Build the gem
|
18
|
+
* Documentation
|
19
|
+
* Tests
|
20
|
+
|
21
|
+
## Install
|
22
|
+
|
23
|
+
Add this line to your applications `Gemfile`
|
24
|
+
|
25
|
+
gem 'refinerycms-sl-videos', '~> 2.0.0'
|
26
|
+
|
27
|
+
Next, run
|
28
|
+
|
29
|
+
bundle install
|
30
|
+
rails g refinery:videos
|
31
|
+
rake db:migrate
|
32
|
+
|
33
|
+
## Thanks
|
34
|
+
|
35
|
+
To people from [acts\_as\_unvlogable](https://github.com/mamuso/acts_as_unvlogable), for the great video sources support.
|
36
|
+
|
37
|
+
## How to build this extension as a gem
|
38
|
+
|
39
|
+
gem build refinerycms-sl-videos.gemspec
|
40
|
+
gem install refinerycms-sl-videos.gem
|
41
|
+
|
42
|
+
# Sign up for a http://rubygems.org/ account and publish the gem
|
43
|
+
gem push refinerycms-sl-videos.gem
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Encoding: UTF-8
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'refinery/videos/version'
|
4
|
+
|
5
|
+
version = Refinery::Videos::Version.to_s
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = %q{refinerycms-sl-videos}
|
9
|
+
s.version = version
|
10
|
+
s.description = %q{Ruby on Rails Videos extension for Refinery CMS.}
|
11
|
+
s.summary = %q{A page for videos from diferent sources, in a blog format with multilingual support, custom urls and seo.}
|
12
|
+
s.email = %q{simplelogica@simplelogica.net}
|
13
|
+
s.homepage = %q{http://www.github.com/simplelogica/refinerycms-sl-videos}
|
14
|
+
s.authors = ['Simplelógica']
|
15
|
+
s.require_paths = %w(lib)
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- spec/*`.split("\n")
|
19
|
+
|
20
|
+
# Runtime dependencies
|
21
|
+
s.add_dependency 'refinerycms-core', '~> 2.0.0'
|
22
|
+
s.add_dependency 'acts_as_unvlogable', '~> 1.0.0'
|
23
|
+
end
|
data/script/rails
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
+
|
4
|
+
ENGINE_PATH = File.expand_path('../..', __FILE__)
|
5
|
+
dummy_rails_path = File.expand_path('../../spec/dummy/script/rails', __FILE__)
|
6
|
+
if File.exist?(dummy_rails_path)
|
7
|
+
load dummy_rails_path
|
8
|
+
else
|
9
|
+
puts "Please first run 'rake refinery:testing:dummy_app' to create a dummy Refinery CMS application."
|
10
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Refinery
|
4
|
+
module Videos
|
5
|
+
describe Video do
|
6
|
+
describe "validations" do
|
7
|
+
subject do
|
8
|
+
FactoryGirl.create(:video,
|
9
|
+
:title => "Refinery CMS")
|
10
|
+
end
|
11
|
+
|
12
|
+
it { should be_valid }
|
13
|
+
its(:errors) { should be_empty }
|
14
|
+
its(:title) { should == "Refinery CMS" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "spec_helper"
|
3
|
+
|
4
|
+
describe Refinery do
|
5
|
+
describe "Videos" do
|
6
|
+
describe "Admin" do
|
7
|
+
describe "videos" do
|
8
|
+
login_refinery_user
|
9
|
+
|
10
|
+
describe "videos list" do
|
11
|
+
before do
|
12
|
+
FactoryGirl.create(:video, :title => "UniqueTitleOne")
|
13
|
+
FactoryGirl.create(:video, :title => "UniqueTitleTwo")
|
14
|
+
end
|
15
|
+
|
16
|
+
it "shows two items" do
|
17
|
+
visit refinery.videos_admin_videos_path
|
18
|
+
page.should have_content("UniqueTitleOne")
|
19
|
+
page.should have_content("UniqueTitleTwo")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "create" do
|
24
|
+
before do
|
25
|
+
visit refinery.videos_admin_videos_path
|
26
|
+
|
27
|
+
click_link "Add New Video"
|
28
|
+
end
|
29
|
+
|
30
|
+
context "valid data" do
|
31
|
+
it "should succeed" do
|
32
|
+
fill_in "Title", :with => "This is a test of the first string field"
|
33
|
+
click_button "Save"
|
34
|
+
|
35
|
+
page.should have_content("'This is a test of the first string field' was successfully added.")
|
36
|
+
Refinery::Videos::Video.count.should == 1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context "invalid data" do
|
41
|
+
it "should fail" do
|
42
|
+
click_button "Save"
|
43
|
+
|
44
|
+
page.should have_content("Title can't be blank")
|
45
|
+
Refinery::Videos::Video.count.should == 0
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "duplicate" do
|
50
|
+
before { FactoryGirl.create(:video, :title => "UniqueTitle") }
|
51
|
+
|
52
|
+
it "should fail" do
|
53
|
+
visit refinery.videos_admin_videos_path
|
54
|
+
|
55
|
+
click_link "Add New Video"
|
56
|
+
|
57
|
+
fill_in "Title", :with => "UniqueTitle"
|
58
|
+
click_button "Save"
|
59
|
+
|
60
|
+
page.should have_content("There were problems")
|
61
|
+
Refinery::Videos::Video.count.should == 1
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "edit" do
|
68
|
+
before { FactoryGirl.create(:video, :title => "A title") }
|
69
|
+
|
70
|
+
it "should succeed" do
|
71
|
+
visit refinery.videos_admin_videos_path
|
72
|
+
|
73
|
+
within ".actions" do
|
74
|
+
click_link "Edit this video"
|
75
|
+
end
|
76
|
+
|
77
|
+
fill_in "Title", :with => "A different title"
|
78
|
+
click_button "Save"
|
79
|
+
|
80
|
+
page.should have_content("'A different title' was successfully updated.")
|
81
|
+
page.should have_no_content("A title")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe "destroy" do
|
86
|
+
before { FactoryGirl.create(:video, :title => "UniqueTitleOne") }
|
87
|
+
|
88
|
+
it "should succeed" do
|
89
|
+
visit refinery.videos_admin_videos_path
|
90
|
+
|
91
|
+
click_link "Remove this video forever"
|
92
|
+
|
93
|
+
page.should have_content("'UniqueTitleOne' was successfully removed.")
|
94
|
+
Refinery::Videos::Video.count.should == 0
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
def setup_environment
|
4
|
+
# Configure Rails Environment
|
5
|
+
ENV["RAILS_ENV"] ||= 'test'
|
6
|
+
|
7
|
+
if File.exist?(dummy_path = File.expand_path('../dummy/config/environment.rb', __FILE__))
|
8
|
+
require dummy_path
|
9
|
+
elsif File.dirname(__FILE__) =~ %r{vendor/extensions}
|
10
|
+
# Require the path to the refinerycms application this is vendored inside.
|
11
|
+
require File.expand_path('../../../../../config/environment', __FILE__)
|
12
|
+
end
|
13
|
+
|
14
|
+
require 'rspec/rails'
|
15
|
+
require 'capybara/rspec'
|
16
|
+
require 'factory_girl_rails'
|
17
|
+
|
18
|
+
Rails.backtrace_cleaner.remove_silencers!
|
19
|
+
|
20
|
+
RSpec.configure do |config|
|
21
|
+
config.mock_with :rspec
|
22
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
23
|
+
config.filter_run :focus => true
|
24
|
+
config.run_all_when_everything_filtered = true
|
25
|
+
end
|
26
|
+
|
27
|
+
# set javascript driver for capybara
|
28
|
+
Capybara.javascript_driver = :selenium
|
29
|
+
end
|
30
|
+
|
31
|
+
def each_run
|
32
|
+
Rails.cache.clear
|
33
|
+
ActiveSupport::Dependencies.clear
|
34
|
+
FactoryGirl.reload
|
35
|
+
|
36
|
+
# Requires supporting files with custom matchers and macros, etc,
|
37
|
+
# in ./support/ and its subdirectories including factories.
|
38
|
+
([Rails.root.to_s] | ::Refinery::Plugins.registered.pathnames).map{|p|
|
39
|
+
Dir[File.join(p, 'spec', 'support', '**', '*.rb').to_s]
|
40
|
+
}.flatten.sort.each do |support_file|
|
41
|
+
require support_file
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# If spork is available in the Gemfile it'll be used but we don't force it.
|
46
|
+
unless (begin; require 'spork'; rescue LoadError; nil end).nil?
|
47
|
+
Spork.prefork do
|
48
|
+
# Loading more in this block will cause your tests to run faster. However,
|
49
|
+
# if you change any configuration or code from libraries loaded here, you'll
|
50
|
+
# need to restart spork for it take effect.
|
51
|
+
setup_environment
|
52
|
+
end
|
53
|
+
|
54
|
+
Spork.each_run do
|
55
|
+
# This code will be run each time you run your specs.
|
56
|
+
each_run
|
57
|
+
end
|
58
|
+
else
|
59
|
+
setup_environment
|
60
|
+
each_run
|
61
|
+
end
|
data/tasks/rspec.rake
ADDED
data/tasks/testing.rake
ADDED