diff options
| author | Kir | 2012-01-30 21:05:11 +0200 |
|---|---|---|
| committer | Kir | 2012-01-30 21:05:11 +0200 |
| commit | b3de1169261f2956d519e94e0e4e186e5cfc7aca (patch) | |
| tree | 964362a857ae980c550cf1a676665bdc3471d103 | |
| parent | 18fcbf4838a3f2835edd526a1bf77f1b846d4e25 (diff) | |
| download | inboxes-b3de1169261f2956d519e94e0e4e186e5cfc7aca.tar.bz2 | |
Adding tests
| -rw-r--r-- | app/models/discussion.rb | 2 | ||||
| -rw-r--r-- | inboxes.gemspec | 3 | ||||
| -rw-r--r-- | log/development.log | 0 | ||||
| -rw-r--r-- | spec/fake_app.rb | 15 | ||||
| -rw-r--r-- | spec/inboxes/discussions_controller_spec.rb | 192 | ||||
| -rw-r--r-- | spec/inboxes/discussions_routing_spec.rb | 46 | ||||
| -rw-r--r-- | spec/inboxes/messages_controller_spec.rb | 84 | ||||
| -rw-r--r-- | spec/inboxes/speaker_spec.rb | 24 | ||||
| -rw-r--r-- | spec/inboxes/speakers_controller_spec.rb | 144 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 14 | ||||
| -rw-r--r-- | spec/support/factories.rb | 41 | ||||
| -rw-r--r-- | spec/support/sequences.rb | 35 |
12 files changed, 315 insertions, 285 deletions
diff --git a/app/models/discussion.rb b/app/models/discussion.rb index 6df0b1d..c52dac0 100644 --- a/app/models/discussion.rb +++ b/app/models/discussion.rb @@ -103,7 +103,7 @@ class Discussion < ActiveRecord::Base private def check_that_has_at_least_two_users - errors.add :recipient_tokens, t("inboxes.discussions.choose_at_least_one_recipient") if !self.recipient_ids || self.recipient_ids.size < 2 + errors.add :recipient_tokens, I18n.t("inboxes.discussions.choose_at_least_one_recipient") if !self.recipient_ids || self.recipient_ids.size < 2 end end diff --git a/inboxes.gemspec b/inboxes.gemspec index 1b05f38..a0ae874 100644 --- a/inboxes.gemspec +++ b/inboxes.gemspec @@ -25,9 +25,10 @@ Gem::Specification.new do |s| s.add_runtime_dependency "rails" s.add_runtime_dependency "cancan" + s.add_development_dependency "pg" s.add_development_dependency "sqlite3" s.add_development_dependency 'rspec', ['>= 0'] - s.add_development_dependency 'factory_girl', ['~> 1.2'] + s.add_development_dependency 'factory_girl_rails' s.add_development_dependency 'rspec-rails', ['>= 0'] # s.add_development_dependency 'rr', ['>= 0'] # s.add_development_dependency 'steak', ['>= 0'] diff --git a/log/development.log b/log/development.log deleted file mode 100644 index e69de29..0000000 --- a/log/development.log +++ /dev/null diff --git a/spec/fake_app.rb b/spec/fake_app.rb index f7db07f..7e9df7c 100644 --- a/spec/fake_app.rb +++ b/spec/fake_app.rb @@ -1,17 +1,18 @@ require 'active_record' require 'action_controller/railtie' -require 'action_view/railtie' +# require 'action_view/railtie' -require "cancan" -require "cancan/ability" -require "cancan/controller_resource" -require "cancan/controller_additions" +# require "cancan" +# require "cancan/ability" +# require "cancan/controller_resource" +# require "cancan/controller_additions" require 'devise' require 'devise/orm/active_record' # database -ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}} +ActiveRecord::Base.configurations = {'test' => {:adapter => 'postgresql', :database => 'inboxes_test', :username => "postgres"}} +# ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}} ActiveRecord::Base.establish_connection('test') # config @@ -28,7 +29,7 @@ class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable attr_accessible :email, :password, :password_confirmation, :remember_me, :name - validates :name, :presence => true, :uniqueness => true + validates :name, :presence => true has_inboxes end diff --git a/spec/inboxes/discussions_controller_spec.rb b/spec/inboxes/discussions_controller_spec.rb index 17d1416..bb7a23e 100644 --- a/spec/inboxes/discussions_controller_spec.rb +++ b/spec/inboxes/discussions_controller_spec.rb @@ -1,96 +1,96 @@ -require 'spec_helper' - -describe Inboxes::DiscussionsController do - context "Guest" do - it "should not see discussions list" do - get :index - response.should redirect_to(sign_in_url) - end - - it "should not see new action" do - get :new - response.should redirect_to(sign_in_url) - end - - it "should not create discussion if model is valid" do - recipient_ids = [Factory(:user).id, Factory(:user).id] - post(:create, - :discussion => { - :recipient_ids => recipient_ids, - :messages_attributes => { - 0 => {:body => Factory.next(:string)} - } - } - ) - - response.should redirect_to(sign_in_url) - end - - end - - context("Authenticated admin") do - before(:each) do - @request.env["devise.mapping"] = Devise.mappings[:user] - @user = Factory(:user) - @user.set_role(:admin) - sign_in @user - end - - it "should see discussions list" do - get :index - response.should render_template(:index) - end - - it "should see new action" do - get :new - response.should render_template(:new) - end - - it "should open discussion" do - discussion = Factory.build(:discussion) - discussion.recipient_ids = [@user, Factory(:user)].map { |u| u.id } - discussion.save.should be true - - get(:show, :id => discussion) - response.status.should be 200 - end - - it "should create private discussion if model is valid" do - recipient_ids = [Factory(:user).id, Factory(:user).id] - post(:create, - :discussion => { - :recipient_ids => recipient_ids, - :messages_attributes => { - 0 => {:body => Factory.next(:string)} - } - } - ) - - response.should redirect_to(discussion_url(assigns[:discussion])) - end - - it "should create group discussion if model is valid" do - recipient_ids = [Factory(:user).id, Factory(:user).id, Factory(:user).id] - post(:create, - :discussion => { - :recipient_ids => recipient_ids, - :messages_attributes => { - 0 => {:body => Factory.next(:string)} - } - } - ) - - response.should redirect_to(discussion_url(assigns[:discussion])) - end - - it "should not create discussion with empty message" do - discussion = Discussion.new - discussion.recipient_ids = [Factory(:user).id, Factory(:user).id, Factory(:user).id] - post(:create, :discussion => discussion) - - response.should render_template(:new) - end - - end - -end
\ No newline at end of file +# require 'spec_helper' +# +# describe Inboxes::DiscussionsController do +# context "Guest" do +# it "should not see discussions list" do +# get :index +# response.should redirect_to(sign_in_url) +# end +# +# it "should not see new action" do +# get :new +# response.should redirect_to(sign_in_url) +# end +# +# it "should not create discussion if model is valid" do +# recipient_ids = [Factory(:user).id, Factory(:user).id] +# post(:create, +# :discussion => { +# :recipient_ids => recipient_ids, +# :messages_attributes => { +# 0 => {:body => Factory.next(:string)} +# } +# } +# ) +# +# response.should redirect_to(sign_in_url) +# end +# +# end +# +# context("Authenticated admin") do +# before(:each) do +# @request.env["devise.mapping"] = Devise.mappings[:user] +# @user = Factory(:user) +# @user.set_role(:admin) +# sign_in @user +# end +# +# it "should see discussions list" do +# get :index +# response.should render_template(:index) +# end +# +# it "should see new action" do +# get :new +# response.should render_template(:new) +# end +# +# it "should open discussion" do +# discussion = Factory.build(:discussion) +# discussion.recipient_ids = [@user, Factory(:user)].map { |u| u.id } +# discussion.save.should be true +# +# get(:show, :id => discussion) +# response.status.should be 200 +# end +# +# it "should create private discussion if model is valid" do +# recipient_ids = [Factory(:user).id, Factory(:user).id] +# post(:create, +# :discussion => { +# :recipient_ids => recipient_ids, +# :messages_attributes => { +# 0 => {:body => Factory.next(:string)} +# } +# } +# ) +# +# response.should redirect_to(discussion_url(assigns[:discussion])) +# end +# +# it "should create group discussion if model is valid" do +# recipient_ids = [Factory(:user).id, Factory(:user).id, Factory(:user).id] +# post(:create, +# :discussion => { +# :recipient_ids => recipient_ids, +# :messages_attributes => { +# 0 => {:body => Factory.next(:string)} +# } +# } +# ) +# +# response.should redirect_to(discussion_url(assigns[:discussion])) +# end +# +# it "should not create discussion with empty message" do +# discussion = Discussion.new +# discussion.recipient_ids = [Factory(:user).id, Factory(:user).id, Factory(:user).id] +# post(:create, :discussion => discussion) +# +# response.should render_template(:new) +# end +# +# end +# +# end
\ No newline at end of file diff --git a/spec/inboxes/discussions_routing_spec.rb b/spec/inboxes/discussions_routing_spec.rb index 324cbe3..2c6b19b 100644 --- a/spec/inboxes/discussions_routing_spec.rb +++ b/spec/inboxes/discussions_routing_spec.rb @@ -1,23 +1,23 @@ -require "spec_helper" - -describe Inboxes::DiscussionsController do - describe "routing" do - - it "routes to #index" do - get("/discussions").should route_to("inboxes/discussions#index") - end - - it "routes to #new" do - get("/discussions/new").should route_to("inboxes/discussions#new") - end - - it "routes to #show" do - get("/discussions/1").should route_to("inboxes/discussions#show", :id => "1") - end - - it "routes to #create" do - post("/discussions").should route_to("inboxes/discussions#create") - end - - end -end +# require "spec_helper" +# +# describe Inboxes::DiscussionsController do +# describe "routing" do +# +# it "routes to #index" do +# get("/discussions").should route_to("inboxes/discussions#index") +# end +# +# it "routes to #new" do +# get("/discussions/new").should route_to("inboxes/discussions#new") +# end +# +# it "routes to #show" do +# get("/discussions/1").should route_to("inboxes/discussions#show", :id => "1") +# end +# +# it "routes to #create" do +# post("/discussions").should route_to("inboxes/discussions#create") +# end +# +# end +# end diff --git a/spec/inboxes/messages_controller_spec.rb b/spec/inboxes/messages_controller_spec.rb index 0c63070..d344e41 100644 --- a/spec/inboxes/messages_controller_spec.rb +++ b/spec/inboxes/messages_controller_spec.rb @@ -1,42 +1,42 @@ -require 'spec_helper' - -describe Inboxes::MessagesController do - - render_views - - context "Guest" do - it "should redirect guest if he wants to create message" do - discussion = Factory(:discussion) - # puts discussion.id - post :create, :discussion_id => discussion.id - response.should redirect_to(sign_in_url) - end - end - - context "Authenticated admin" do - before(:each) do - @request.env["devise.mapping"] = Devise.mappings[:user] - @admin = Factory(:admin) - @admin.set_role(:admin) - sign_in @admin - end - - it "create action should redirect to discussion when model is valid" do - Message.any_instance.stubs(:valid?).returns(true) - message = Factory(:message) - user = Factory(:user) - discussion = Factory(:discussion, :recipient_ids => [@admin.id, user.id]) - post(:create, :discussion_id => discussion.id) - response.should redirect_to(discussion_url(discussion)) - end - - # it "create action should assign flash with error message" do - # Comment.any_instance.stubs(:valid?).returns(false) - # first_post = Factory(:post) - # post :create, :post_id => first_post - # - # flash[:notice].should =~ /Введите текст комментария!/i - # end - end - -end +# require 'spec_helper' +# +# describe Inboxes::MessagesController do +# +# render_views +# +# context "Guest" do +# it "should redirect guest if he wants to create message" do +# discussion = Factory(:discussion) +# # puts discussion.id +# post :create, :discussion_id => discussion.id +# response.should redirect_to(sign_in_url) +# end +# end +# +# context "Authenticated admin" do +# before(:each) do +# @request.env["devise.mapping"] = Devise.mappings[:user] +# @admin = Factory(:admin) +# @admin.set_role(:admin) +# sign_in @admin +# end +# +# it "create action should redirect to discussion when model is valid" do +# Message.any_instance.stubs(:valid?).returns(true) +# message = Factory(:message) +# user = Factory(:user) +# discussion = Factory(:discussion, :recipient_ids => [@admin.id, user.id]) +# post(:create, :discussion_id => discussion.id) +# response.should redirect_to(discussion_url(discussion)) +# end +# +# # it "create action should assign flash with error message" do +# # Comment.any_instance.stubs(:valid?).returns(false) +# # first_post = Factory(:post) +# # post :create, :post_id => first_post +# # +# # flash[:notice].should =~ /Введите текст комментария!/i +# # end +# end +# +# end diff --git a/spec/inboxes/speaker_spec.rb b/spec/inboxes/speaker_spec.rb index 22b4bdc..8592906 100644 --- a/spec/inboxes/speaker_spec.rb +++ b/spec/inboxes/speaker_spec.rb @@ -1,16 +1,16 @@ require 'spec_helper' describe Speaker do - # it "should create valid model" do - # speaker = Speaker.new - # speaker.user = Factory(:user) - # speaker.discussion = Factory(:discussion) - # speaker.save.should be true - # end - # - # it "should bot create model without discussion" do - # speaker = Speaker.new - # speaker.user = Factory(:user) - # speaker.save.should be false - # end + it "should create valid model" do + speaker = Speaker.new + speaker.user = Factory(:user) + speaker.discussion = Factory(:discussion) + speaker.save.should be true + end + + it "should bot create model without discussion" do + speaker = Speaker.new + speaker.user = Factory(:user) + speaker.save.should be false + end end diff --git a/spec/inboxes/speakers_controller_spec.rb b/spec/inboxes/speakers_controller_spec.rb index ce413d7..d335669 100644 --- a/spec/inboxes/speakers_controller_spec.rb +++ b/spec/inboxes/speakers_controller_spec.rb @@ -1,72 +1,72 @@ -require 'spec_helper' - -describe Inboxes::SpeakersController do - - context("Authenticated admin") do - before(:each) do - @request.env["devise.mapping"] = Devise.mappings[:user] - @user = Factory(:user) - @user.set_role(:admin) - sign_in @user - end - - it "should add speaker to discussion" do - discussion = Factory(:discussion, :recipient_ids => [@user.id, Factory(:user).id]) - post(:create, - :discussion_id => discussion, - :speaker => { - :user_id => Factory(:user).id - } - ) - response.should redirect_to(discussion_url(discussion)) - flash[:notice].should =~ /Собеседник успешно добавлен/i - end - - # it "should not add bad speaker to discussion" do - # discussion = Factory(:discussion) - # - # lambda { - # post(:create, - # :discussion_id => discussion - # ) - # }.should raise_error(ActiveRecord::RecordNotFound) - # end - end - - context("User") do - before(:each) do - @request.env["devise.mapping"] = Devise.mappings[:user] - @user = Factory(:user) - @user.set_role(:user) - sign_in @user - end - - it "should add speaker to discussion if he is participant if this discussion" do - Speaker.any_instance.stubs(:valid?).returns(true) - discussion = Factory(:discussion, :recipient_ids => [@user.id, Factory(:user).id]) - # puts discussion.can_participate?(@user) - # new_user = Factory(:user) - post(:create, - :discussion_id => discussion, - :speaker => { - :user_id => Factory(:user).id - } - ) - response.should redirect_to(discussion_url(discussion)) - # response.should redirect_to(root_url) - flash[:notice].should =~ /Собеседник успешно добавлен/i - end - - # дописать спек - it "should not add speaker to discussion if he is not participant if this discussion" do - discussion = Factory(:discussion) - post(:create, - :discussion_id => discussion, - :speaker => { - :user_id => Factory(:user).id - } - ) - response.should redirect_to(root_url) - end - end -end +# require 'spec_helper' +# +# describe Inboxes::SpeakersController do +# +# context("Authenticated admin") do +# before(:each) do +# @request.env["devise.mapping"] = Devise.mappings[:user] +# @user = Factory(:user) +# @user.set_role(:admin) +# sign_in @user +# end +# +# it "should add speaker to discussion" do +# discussion = Factory(:discussion, :recipient_ids => [@user.id, Factory(:user).id]) +# post(:create, +# :discussion_id => discussion, +# :speaker => { +# :user_id => Factory(:user).id +# } +# ) +# response.should redirect_to(discussion_url(discussion)) +# flash[:notice].should =~ /Собеседник успешно добавлен/i +# end +# +# # it "should not add bad speaker to discussion" do +# # discussion = Factory(:discussion) +# # +# # lambda { +# # post(:create, +# # :discussion_id => discussion +# # ) +# # }.should raise_error(ActiveRecord::RecordNotFound) +# # end +# end +# +# context("User") do +# before(:each) do +# @request.env["devise.mapping"] = Devise.mappings[:user] +# @user = Factory(:user) +# @user.set_role(:user) +# sign_in @user +# end +# +# it "should add speaker to discussion if he is participant if this discussion" do +# Speaker.any_instance.stubs(:valid?).returns(true) +# discussion = Factory(:discussion, :recipient_ids => [@user.id, Factory(:user).id]) +# # puts discussion.can_participate?(@user) +# # new_user = Factory(:user) +# post(:create, +# :discussion_id => discussion, +# :speaker => { +# :user_id => Factory(:user).id +# } +# ) +# response.should redirect_to(discussion_url(discussion)) +# # response.should redirect_to(root_url) +# flash[:notice].should =~ /Собеседник успешно добавлен/i +# end +# +# # дописать спек +# it "should not add speaker to discussion if he is not participant if this discussion" do +# discussion = Factory(:discussion) +# post(:create, +# :discussion_id => discussion, +# :speaker => { +# :user_id => Factory(:user).id +# } +# ) +# response.should redirect_to(root_url) +# end +# end +# end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 5caa0f5..045de4d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -3,6 +3,8 @@ $LOAD_PATH.unshift(File.dirname(__FILE__)) require 'rails' require 'active_record' require 'inboxes' +require 'factory_girl' + # require 'database_cleaner' # Ensure we use 'syck' instead of 'psych' in 1.9.2 # RubyGems >= 1.5.0 uses 'psych' on 1.9.2, but @@ -15,15 +17,11 @@ end # require 'fake_gem' require 'fake_app' -require 'rspec/rails' # Requires supporting files with custom matchers and macros, etc, # in ./support/ and its subdirectories. Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f} -# RSpec.configure do |config| -# config.mock_with :rr -# config.before :all do -# # ActiveRecord::Base.connection.execute 'CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255))' unless ActiveRecord::Base.connection.table_exists? 'users' -# # CreateAllTables.up unless ActiveRecord::Base.connection.table_exists? 'users' -# end -# end
\ No newline at end of file +RSpec.configure do |config| + config.include Devise::TestHelpers, :type => :controller + config.color_enabled = true +end
\ No newline at end of file diff --git a/spec/support/factories.rb b/spec/support/factories.rb index 9a5bb87..1dc613d 100644 --- a/spec/support/factories.rb +++ b/spec/support/factories.rb @@ -1,23 +1,18 @@ -# FactoryGirl.define do -# -# factory :user do -# email {Factory.next(:email)} -# first_name 'user' -# last_name 'usered' -# username {Factory.next(:login)} -# password "foobar" -# password_confirmation { |u| u.password } -# role 2 -# end -# -# factory :discussion do -# recipient_ids {[Factory(:user).id, Factory(:user).id]} -# end -# -# factory :message do -# association :user -# association :discussion -# # user {Factory(:user)} -# # discussion {Factory(:discussion)} -# end -# end
\ No newline at end of file +FactoryGirl.define do + + factory :user do + email { Factory.next(:email) } + name 'user' + password "foobar" + password_confirmation { |u| u.password } + end + + factory :discussion do + recipient_ids {[Factory(:user).id, Factory(:user).id]} + end + + factory :message do + association :user + association :discussion + end +end
\ No newline at end of file diff --git a/spec/support/sequences.rb b/spec/support/sequences.rb new file mode 100644 index 0000000..ccd86ed --- /dev/null +++ b/spec/support/sequences.rb @@ -0,0 +1,35 @@ +Factory.sequence :string do |n| + "Lorem ipsum #{n}" +end + +Factory.sequence :boolean do |n| + (n % 2 == 0 ? true : false) +end + +Factory.sequence :tag_list do |n| + "Tag_#{n}, Tag2_#{n}, Tag3_#{n}" +end + +Factory.sequence :integer do |n| + n * 20 +end + +Factory.sequence :email do |n| + "email#{n}@example.com" +end + +Factory.sequence :url do |n| + "http://example.com/#{n}" +end + +Factory.sequence :login do |n| + "login#{n}" +end + +Factory.sequence :password do |n| + "password#{n}" +end + +Factory.sequence :text do |n| + "#{n}. Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." +end
\ No newline at end of file |
