refinerycms-polls 0.0.1.dev

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.
Files changed (68) hide show
  1. data/.gitignore +55 -0
  2. data/Gemfile +71 -0
  3. data/Guardfile +27 -0
  4. data/README.md +35 -0
  5. data/Rakefile +20 -0
  6. data/app/assets/images/refinery/polls/pollbg.gif +0 -0
  7. data/app/assets/javascripts/refinery/polls/poll_form.js +8 -0
  8. data/app/assets/stylesheets/refinery/polls/poll_form.css.scss +31 -0
  9. data/app/controllers/refinery/polls/admin/answers_controller.rb +55 -0
  10. data/app/controllers/refinery/polls/admin/questions_controller.rb +11 -0
  11. data/app/controllers/refinery/polls/questions_controller.rb +62 -0
  12. data/app/models/refinery/polls/answer.rb +39 -0
  13. data/app/models/refinery/polls/question.rb +60 -0
  14. data/app/models/refinery/polls/setting.rb +62 -0
  15. data/app/models/refinery/polls/vote.rb +34 -0
  16. data/app/views/refinery/polls/admin/answers/_actions.html.erb +25 -0
  17. data/app/views/refinery/polls/admin/answers/_answer.html.erb +16 -0
  18. data/app/views/refinery/polls/admin/answers/_answers.html.erb +2 -0
  19. data/app/views/refinery/polls/admin/answers/_form.html.erb +17 -0
  20. data/app/views/refinery/polls/admin/answers/_records.html.erb +18 -0
  21. data/app/views/refinery/polls/admin/answers/_sorteable_list.html.erb +5 -0
  22. data/app/views/refinery/polls/admin/answers/edit.html.erb +1 -0
  23. data/app/views/refinery/polls/admin/answers/index.html.erb +7 -0
  24. data/app/views/refinery/polls/admin/answers/new.html.erb +1 -0
  25. data/app/views/refinery/polls/admin/questions/_actions.html.erb +25 -0
  26. data/app/views/refinery/polls/admin/questions/_form.html.erb +29 -0
  27. data/app/views/refinery/polls/admin/questions/_question.html.erb +22 -0
  28. data/app/views/refinery/polls/admin/questions/_questions.html.erb +2 -0
  29. data/app/views/refinery/polls/admin/questions/_records.html.erb +18 -0
  30. data/app/views/refinery/polls/admin/questions/_sortable_list.html.erb +5 -0
  31. data/app/views/refinery/polls/admin/questions/edit.html.erb +1 -0
  32. data/app/views/refinery/polls/admin/questions/index.html.erb +7 -0
  33. data/app/views/refinery/polls/admin/questions/new.html.erb +1 -0
  34. data/app/views/refinery/polls/questions/_answers_form.html.erb +10 -0
  35. data/app/views/refinery/polls/questions/_poll.html.erb +10 -0
  36. data/app/views/refinery/polls/questions/_results.html.erb +14 -0
  37. data/app/views/refinery/polls/questions/index.html.erb +11 -0
  38. data/app/views/refinery/polls/questions/results.html.erb +0 -0
  39. data/app/views/refinery/polls/questions/show.html.erb +39 -0
  40. data/app/views/refinery/polls/questions/submit.js.erb +1 -0
  41. data/config/locales/en.yml +44 -0
  42. data/config/locales/es.yml +31 -0
  43. data/config/locales/fr.yml +30 -0
  44. data/config/locales/nb.yml +30 -0
  45. data/config/locales/nl.yml +30 -0
  46. data/config/routes.rb +33 -0
  47. data/db/migrate/1_create_polls_questions.rb +41 -0
  48. data/db/migrate/2_create_polls_answers.rb +25 -0
  49. data/db/migrate/3_create_polls_votes.rb +14 -0
  50. data/db/migrate/4_add_slug_to_questions_and_answers.rb +9 -0
  51. data/db/migrate/5_create_polls_translations.rb +22 -0
  52. data/db/seeds.rb +24 -0
  53. data/lib/generators/refinery/polls_generator.rb +25 -0
  54. data/lib/generators/refinery/templates/config/initializers/refinery/poll.rb.erb +4 -0
  55. data/lib/refinery/polls/configuration.rb +10 -0
  56. data/lib/refinery/polls/engine.rb +26 -0
  57. data/lib/refinery/polls/version.rb +18 -0
  58. data/lib/refinery/polls.rb +21 -0
  59. data/lib/refinerycms-polls.rb +1 -0
  60. data/lib/tasks/refinery/polls.rake +13 -0
  61. data/refinerycms-polls.gemspec +27 -0
  62. data/spec/models/refinery/polls/question_spec.rb +18 -0
  63. data/spec/requests/refinery/polls/admin/questions_spec.rb +101 -0
  64. data/spec/spec_helper.rb +50 -0
  65. data/spec/support/factories/refinery/polls.rb +7 -0
  66. data/tasks/rspec.rake +6 -0
  67. data/tasks/testing.rake +8 -0
  68. metadata +163 -0
@@ -0,0 +1,18 @@
1
+ module Refinery
2
+ module Polls
3
+ class Version
4
+ @major = 0
5
+ @minor = 0
6
+ @tiny = 1
7
+ @build = 'dev'
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,21 @@
1
+ require 'refinerycms-core'
2
+
3
+ module Refinery
4
+ autoload :PollsGenerator, 'generators/refinery/polls_generator'
5
+
6
+ module Polls
7
+ require 'refinery/polls/engine'
8
+ require 'refinery/polls/configuration'
9
+ class << self
10
+ attr_writer :root
11
+
12
+ def root
13
+ @root ||= Pathname.new(File.expand_path('../../../', __FILE__))
14
+ end
15
+
16
+ def factory_paths
17
+ @factory_paths ||= [ root.join('spec', 'factories').to_s ]
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1 @@
1
+ require 'refinery/polls'
@@ -0,0 +1,13 @@
1
+ namespace :refinery do
2
+
3
+ namespace :polls do
4
+
5
+ # call this task by running: rake refinery:polls:my_task
6
+ # desc "Description of my task below"
7
+ # task :my_task => :environment do
8
+ # # add your logic here
9
+ # end
10
+
11
+ end
12
+
13
+ end
@@ -0,0 +1,27 @@
1
+ # Encoding: UTF-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'refinery/polls/version'
4
+
5
+ version = Refinery::Polls::Version.to_s
6
+
7
+ Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = %q{refinerycms-polls}
10
+ s.version = version
11
+ s.description = 'Ruby on Rails Polls extension for Refinery CMS'
12
+ s.date = '2012-07-03'
13
+ s.summary = 'Polls extension for Refinery CMS'
14
+ s.require_paths = %w(lib)
15
+ s.files = `git ls-files`.split("\n") #Dir["{app,config,db,lib}/**/*"] + ["readme.md"]
16
+ s.test_files = `git ls-files -- spec/*`.split("\n")
17
+ s.authors = ['Agustin Viñao']
18
+ s.email = %q{agustinvinao@gmail.com}
19
+ s.homepage = 'https://github.com/agustinvinao/refinerycms-polls'
20
+
21
+ # Runtime dependencies
22
+ s.add_dependency 'refinerycms-core' , '~> 2.0.2'
23
+ s.add_dependency 'refinerycms-settings' , '~> 2.0.0'
24
+
25
+ # Development dependencies (usually used for testing)
26
+ s.add_development_dependency 'refinerycms-testing' , '~> 2.0.2'
27
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ module Refinery
4
+ module Polls
5
+ describe quesiton do
6
+ describe "validations" do
7
+ subject do
8
+ FactoryGirl.create(:question,
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 "Polls" do
6
+ describe "Admin" do
7
+ describe "questions" do
8
+ login_refinery_user
9
+
10
+ describe "questions list" do
11
+ before(:each) do
12
+ FactoryGirl.create(:question, :title => "UniqueTitleOne")
13
+ FactoryGirl.create(:question, :title => "UniqueTitleTwo")
14
+ end
15
+
16
+ it "shows two items" do
17
+ visit refinery.polls_admin_questions_path
18
+ page.should have_content("UniqueTitleOne")
19
+ page.should have_content("UniqueTitleTwo")
20
+ end
21
+ end
22
+
23
+ describe "create" do
24
+ before(:each) do
25
+ visit refinery.polls_admin_questions_path
26
+
27
+ click_link "Add New Question"
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::Polls::Question.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::Polls::Question.count.should == 0
46
+ end
47
+ end
48
+
49
+ context "duplicate" do
50
+ before(:each) { FactoryGirl.create(:question, :title => "UniqueTitle") }
51
+
52
+ it "should fail" do
53
+ visit refinery.polls_admin_questions_path
54
+
55
+ click_link "Add New Question"
56
+
57
+ fill_in "Title", :with => "UniqueTitle"
58
+ click_button "Save"
59
+
60
+ page.should have_content("There were problems")
61
+ Refinery::Polls::Question.count.should == 1
62
+ end
63
+ end
64
+
65
+ end
66
+
67
+ describe "edit" do
68
+ before(:each) { FactoryGirl.create(:question, :title => "A title") }
69
+
70
+ it "should succeed" do
71
+ visit refinery.polls_admin_questions_path
72
+
73
+ within ".actions" do
74
+ click_link "Edit this question"
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(:each) { FactoryGirl.create(:question, :title => "UniqueTitleOne") }
87
+
88
+ it "should succeed" do
89
+ visit refinery.polls_admin_questions_path
90
+
91
+ click_link "Remove this question forever"
92
+
93
+ page.should have_content("'UniqueTitleOne' was successfully removed.")
94
+ Refinery::Polls::Question.count.should == 0
95
+ end
96
+ end
97
+
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,50 @@
1
+ def setup_environment
2
+ # Configure Rails Environment
3
+ ENV["RAILS_ENV"] ||= 'test'
4
+
5
+ require File.expand_path("../dummy/config/environment", __FILE__)
6
+
7
+ require 'rspec/rails'
8
+ require 'capybara/rspec'
9
+
10
+ Rails.backtrace_cleaner.remove_silencers!
11
+
12
+ RSpec.configure do |config|
13
+ config.mock_with :rspec
14
+ config.treat_symbols_as_metadata_keys_with_true_values = true
15
+ config.filter_run :focus => true
16
+ config.run_all_when_everything_filtered = true
17
+ end
18
+ end
19
+
20
+ def each_run
21
+ Rails.cache.clear
22
+ ActiveSupport::Dependencies.clear
23
+ FactoryGirl.reload
24
+
25
+ # Requires supporting files with custom matchers and macros, etc,
26
+ # in ./support/ and its subdirectories including factories.
27
+ ([Rails.root.to_s] | ::Refinery::Plugins.registered.pathnames).map{|p|
28
+ Dir[File.join(p, 'spec', 'support', '**', '*.rb').to_s]
29
+ }.flatten.sort.each do |support_file|
30
+ require support_file
31
+ end
32
+ end
33
+
34
+ # If spork is available in the Gemfile it'll be used but we don't force it.
35
+ unless (begin; require 'spork'; rescue LoadError; nil end).nil?
36
+ Spork.prefork do
37
+ # Loading more in this block will cause your tests to run faster. However,
38
+ # if you change any configuration or code from libraries loaded here, you'll
39
+ # need to restart spork for it take effect.
40
+ setup_environment
41
+ end
42
+
43
+ Spork.each_run do
44
+ # This code will be run each time you run your specs.
45
+ each_run
46
+ end
47
+ else
48
+ setup_environment
49
+ each_run
50
+ end
@@ -0,0 +1,7 @@
1
+
2
+ FactoryGirl.define do
3
+ factory :question, :class => Refinery::Polls::Question do
4
+ sequence(:title) { |n| "refinery#{n}" }
5
+ end
6
+ end
7
+
data/tasks/rspec.rake ADDED
@@ -0,0 +1,6 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ desc "Run specs"
4
+ RSpec::Core::RakeTask.new do |t|
5
+ t.pattern = "./spec"
6
+ end
@@ -0,0 +1,8 @@
1
+ namespace :refinery do
2
+ namespace :testing do
3
+ # Put any code in here that you want run when you test this extension against a dummy app.
4
+ # For example, the call to require your gem and start your generator.
5
+ task :setup_extension do
6
+ end
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,163 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refinerycms-polls
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.dev
5
+ prerelease: 6
6
+ platform: ruby
7
+ authors:
8
+ - Agustin Viñao
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-07-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: refinerycms-core
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.0.2
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.0.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: refinerycms-settings
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 2.0.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 2.0.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: refinerycms-testing
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 2.0.2
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.0.2
62
+ description: Ruby on Rails Polls extension for Refinery CMS
63
+ email: agustinvinao@gmail.com
64
+ executables: []
65
+ extensions: []
66
+ extra_rdoc_files: []
67
+ files:
68
+ - .gitignore
69
+ - Gemfile
70
+ - Guardfile
71
+ - README.md
72
+ - Rakefile
73
+ - app/assets/images/refinery/polls/pollbg.gif
74
+ - app/assets/javascripts/refinery/polls/poll_form.js
75
+ - app/assets/stylesheets/refinery/polls/poll_form.css.scss
76
+ - app/controllers/refinery/polls/admin/answers_controller.rb
77
+ - app/controllers/refinery/polls/admin/questions_controller.rb
78
+ - app/controllers/refinery/polls/questions_controller.rb
79
+ - app/models/refinery/polls/answer.rb
80
+ - app/models/refinery/polls/question.rb
81
+ - app/models/refinery/polls/setting.rb
82
+ - app/models/refinery/polls/vote.rb
83
+ - app/views/refinery/polls/admin/answers/_actions.html.erb
84
+ - app/views/refinery/polls/admin/answers/_answer.html.erb
85
+ - app/views/refinery/polls/admin/answers/_answers.html.erb
86
+ - app/views/refinery/polls/admin/answers/_form.html.erb
87
+ - app/views/refinery/polls/admin/answers/_records.html.erb
88
+ - app/views/refinery/polls/admin/answers/_sorteable_list.html.erb
89
+ - app/views/refinery/polls/admin/answers/edit.html.erb
90
+ - app/views/refinery/polls/admin/answers/index.html.erb
91
+ - app/views/refinery/polls/admin/answers/new.html.erb
92
+ - app/views/refinery/polls/admin/questions/_actions.html.erb
93
+ - app/views/refinery/polls/admin/questions/_form.html.erb
94
+ - app/views/refinery/polls/admin/questions/_question.html.erb
95
+ - app/views/refinery/polls/admin/questions/_questions.html.erb
96
+ - app/views/refinery/polls/admin/questions/_records.html.erb
97
+ - app/views/refinery/polls/admin/questions/_sortable_list.html.erb
98
+ - app/views/refinery/polls/admin/questions/edit.html.erb
99
+ - app/views/refinery/polls/admin/questions/index.html.erb
100
+ - app/views/refinery/polls/admin/questions/new.html.erb
101
+ - app/views/refinery/polls/questions/_answers_form.html.erb
102
+ - app/views/refinery/polls/questions/_poll.html.erb
103
+ - app/views/refinery/polls/questions/_results.html.erb
104
+ - app/views/refinery/polls/questions/index.html.erb
105
+ - app/views/refinery/polls/questions/results.html.erb
106
+ - app/views/refinery/polls/questions/show.html.erb
107
+ - app/views/refinery/polls/questions/submit.js.erb
108
+ - config/locales/en.yml
109
+ - config/locales/es.yml
110
+ - config/locales/fr.yml
111
+ - config/locales/nb.yml
112
+ - config/locales/nl.yml
113
+ - config/routes.rb
114
+ - db/migrate/1_create_polls_questions.rb
115
+ - db/migrate/2_create_polls_answers.rb
116
+ - db/migrate/3_create_polls_votes.rb
117
+ - db/migrate/4_add_slug_to_questions_and_answers.rb
118
+ - db/migrate/5_create_polls_translations.rb
119
+ - db/seeds.rb
120
+ - lib/generators/refinery/polls_generator.rb
121
+ - lib/generators/refinery/templates/config/initializers/refinery/poll.rb.erb
122
+ - lib/refinery/polls.rb
123
+ - lib/refinery/polls/configuration.rb
124
+ - lib/refinery/polls/engine.rb
125
+ - lib/refinery/polls/version.rb
126
+ - lib/refinerycms-polls.rb
127
+ - lib/tasks/refinery/polls.rake
128
+ - refinerycms-polls.gemspec
129
+ - spec/models/refinery/polls/question_spec.rb
130
+ - spec/requests/refinery/polls/admin/questions_spec.rb
131
+ - spec/spec_helper.rb
132
+ - spec/support/factories/refinery/polls.rb
133
+ - tasks/rspec.rake
134
+ - tasks/testing.rake
135
+ homepage: https://github.com/agustinvinao/refinerycms-polls
136
+ licenses: []
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ none: false
143
+ requirements:
144
+ - - ! '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ required_rubygems_version: !ruby/object:Gem::Requirement
148
+ none: false
149
+ requirements:
150
+ - - ! '>'
151
+ - !ruby/object:Gem::Version
152
+ version: 1.3.1
153
+ requirements: []
154
+ rubyforge_project:
155
+ rubygems_version: 1.8.24
156
+ signing_key:
157
+ specification_version: 3
158
+ summary: Polls extension for Refinery CMS
159
+ test_files:
160
+ - spec/models/refinery/polls/question_spec.rb
161
+ - spec/requests/refinery/polls/admin/questions_spec.rb
162
+ - spec/spec_helper.rb
163
+ - spec/support/factories/refinery/polls.rb