From 0334921ee90284195193a0b14a401e5e14c27eca Mon Sep 17 00:00:00 2001
From: yasushiito Welcome <%= @resource.email %>! You can confirm your account through the link below: <%= link_to 'Confirm my account', confirmation_url(@resource, :confirmation_token => @resource.confirmation_token) %> Hello <%= @resource.email %>! Someone has requested a link to change your password, and you can do this through the link below. <%= link_to 'Change my password', edit_password_url(@resource, :reset_password_token => @resource.reset_password_token) %> If you didn't request this, please ignore this email. Your password won't change until you access the link above and create a new one. Hello <%= @resource.email %>! Your account has been locked due to an excessive amount of unsuccessful sign in attempts. Click the link below to unlock your account: <%= link_to 'Unlock my account', unlock_url(@resource, :unlock_token => @resource.unlock_token) %> Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are you sure?", :method => :delete %>.
+requested_at
+<%= (demander_status.requested_at) if demander_status.requested_at %>
+
+rejected_at
+<%= (demander_status.rejected_at) if demander_status.rejected_at %>
+
+approved_at
+<%= (demander_status.approved_at) if demander_status.approved_at %>
+
+token
+<%= (demander_status.demander.demand_user.authentication_token) if demander_status.demander.demand_user.authentication_token %>
+
+caption
+<%= h(demander.caption) %>
+
+name
+<%= h(demander.name) %>
+
+description
+<%= h(demander.description) %>
+
+status
+<%= h(MagicNumber['demander_status_items'][demander.demander_status.status].first) %>
+
+ <%= f.label :receive_hour1 %>
+ <%= f.label :receive_hour2 %> <%= notice %> <%= notice %>
+receive_hour1
+<%= h(@demander_status.receive_hour1) if @demander_status.receive_hour1 %>
+
+receive_hour2
+<%= h(@demander_status.receive_hour2) if @demander_status.receive_hour2 %>
+
+ <%= link_to 'ãµã¤ããéã', @demander_status.demander.url %>
+
+ <% case @demander_status.status %>
+ <% when 0 %>
+ <% when 1 %>
+ <%= link_to 'ãã®åæã®å¦æ±ºãè¦ãã¦è²¸ä¸ãã', edit_demander_status_path(@demander_status) %>
+ <% when 2 %>
+
+ ååç³è«ã«å¯¾ãã¦è¿çãã¦ãã ãã
+ Resend confirmation instructions
+
+<%= form_for(resource, :as => resource_name, :url => confirmation_path(resource_name), :html => { :method => :post }) do |f| %>
+ <%= devise_error_messages! %>
+
+
+ <%= f.email_field :email %>Change your password
+
+<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :put }) do |f| %>
+ <%= devise_error_messages! %>
+ <%= f.hidden_field :reset_password_token %>
+
+
+ <%= f.password_field :password %>
+ <%= f.password_field :password_confirmation %>Forgot your password?
+
+<%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %>
+ <%= devise_error_messages! %>
+
+
+ <%= f.email_field :email %>Edit <%= resource_name.to_s.humanize %>
+
+<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
+ <%= devise_error_messages! %>
+
+
+ <%= f.email_field :email %>
+ <%= f.password_field :password %>
+ <%= f.password_field :password_confirmation %>
+ <%= f.password_field :current_password %>Cancel my account
+
+Sign up
+
+<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
+ <%= devise_error_messages! %>
+
+
+ <%= f.email_field :email %>
+ <%= f.password_field :password %>
+ <%= f.password_field :password_confirmation %>Sign in
+
+<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
+
+ <%= f.email_field :email %>
+ <%= f.password_field :password %>
+<% end -%>
+
+<%- if devise_mapping.registerable? && controller_name != 'registrations' %>
+ <%= link_to "Sign up", new_registration_path(resource_name) %>
+<% end -%>
+
+<%- if devise_mapping.recoverable? && controller_name != 'passwords' %>
+ <%= link_to "Forgot your password?", new_password_path(resource_name) %>
+<% end -%>
+
+<%- if devise_mapping.confirmable? && controller_name != 'confirmations' %>
+ <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %>
+<% end -%>
+
+<%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %>
+ <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %>
+<% end -%>
+
+<%- if devise_mapping.omniauthable? %>
+ <%- resource_class.omniauth_providers.each do |provider| %>
+ <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %>
+ <% end -%>
+<% end -%>
\ No newline at end of file
diff --git a/app/views/demand_users/unlocks/new.html.erb b/app/views/demand_users/unlocks/new.html.erb
new file mode 100644
index 00000000..c6cdcfe5
--- /dev/null
+++ b/app/views/demand_users/unlocks/new.html.erb
@@ -0,0 +1,12 @@
+Resend unlock instructions
+
+<%= form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f| %>
+ <%= devise_error_messages! %>
+
+
+ <%= f.email_field :email %><%= pluralize(@demander_status.errors.count, "error") %> prohibited this comic from being saved:
+
+
+ <% @demander_status.errors.full_messages.each do |msg| %>
+
+
+ <%= f.number_field :receive_hour1 %>
+
+ <%= f.number_field :receive_hour2 %>
+ 貸ä¸ç¶æ³
+貸ä¸ç¶æ³ä¸è¦§
+
+
+
+
+
+ <% @demander_statuses.each do |demander_status| %>
+ caption
+ name
+ status
+ requested_at
+ rejected_at
+ approved_at
+ receive_hour1
+ receive_hour2
+ éã
+
+
+ <% end %>
+
+ <%= link_to h(truncate(demander_status.demander.caption, :length => 20)), demander_status_path(demander_status.demander) %>
+
+
+ <%= h(truncate(demander_status.demander.name, :length => 12)) %>
+
+
+ <%= h(MagicNumber['demander_status_items'][demander_status.status].first) %>
+
+
+ <%= (demander_status.requested_at) if demander_status.requested_at %>
+
+
+ <%= (demander_status.rejected_at) if demander_status.rejected_at %>
+
+
+ <%= (demander_status.approved_at) if demander_status.approved_at %>
+
+
+ <%= (demander_status.receive_hour1) if demander_status.receive_hour1 %>
+
+
+ <%= (demander_status.receive_hour2) if demander_status.receive_hour2 %>
+
+
+ <%= link_to 'éã', demander_status.demander.url %>
+
+ 貸ä¸ç¶æ³
+
+caption +<%= h(@demander.caption) %> +
++name +<%= h(@demander.name) %> +
++status +<%= h(MagicNumber['demander_status_items'][@demander.demander_status.status].first) %> +
+<% if @demander.status == 3 %> ++ receive_hour1 + <%= (@demander.demander_status.receive_hour1) %> +
++ receive_hour2 + <%= (@demander.demander_status.receive_hour2) %> +
+<% end %> + +<%= notice %>
+ ++caption +<%= h(@demander.caption) %> +
++name +<%= h(@demander.name) %> +
++url +<%= @demander.url %> +
++description +<%= h(@demander.description) %> +
++demander_url +<%= @demander.demander_url %> +
+ ++status +<%= h(MagicNumber['demander_status_items'][@demander.demander_status.status].first) %> +
+ +<%= link_to 'Edit', edit_demander_path(@demander) %> +<%= link_to 'Back', demanders_path %> + diff --git a/db/migrate/20121123051900_devise_create_demand_users.rb b/db/migrate/20121123051900_devise_create_demand_users.rb new file mode 100644 index 00000000..13410a52 --- /dev/null +++ b/db/migrate/20121123051900_devise_create_demand_users.rb @@ -0,0 +1,25 @@ +class DeviseCreateDemandUsers < ActiveRecord::Migration + def change + create_table(:demand_users) do |t| + t.database_authenticatable :null => false + t.recoverable + t.rememberable + t.trackable + + # t.encryptable + t.confirmable + # t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both + t.token_authenticatable + + + t.timestamps + end + + add_index :demand_users, :email, :unique => true + add_index :demand_users, :reset_password_token, :unique => true + add_index :demand_users, :confirmation_token, :unique => true + # add_index :demand_users, :unlock_token, :unique => true + add_index :demand_users, :authentication_token, :unique => true + end + +end diff --git a/db/migrate/20121123054410_create_demanders.rb b/db/migrate/20121123054410_create_demanders.rb new file mode 100644 index 00000000..addddbea --- /dev/null +++ b/db/migrate/20121123054410_create_demanders.rb @@ -0,0 +1,15 @@ +class CreateDemanders < ActiveRecord::Migration + def change + create_table :demanders do |t| + t.integer :demand_user_id, :null => false, :default => 0 + t.string :name, :null => false, :limit => 50 + t.string :caption, :null => false, :limit => 30 + t.string :url, :null => false + t.string :description, :null => false + t.string :demander_url, :null => false + t.integer :demander_status_id, :null => false, :default => 0 + + t.timestamps + end + end +end diff --git a/db/migrate/20121123054445_create_demander_statuses.rb b/db/migrate/20121123054445_create_demander_statuses.rb new file mode 100644 index 00000000..79f01d17 --- /dev/null +++ b/db/migrate/20121123054445_create_demander_statuses.rb @@ -0,0 +1,14 @@ +class CreateDemanderStatuses < ActiveRecord::Migration + def change + create_table :demander_statuses do |t| + t.datetime :requested_at + t.datetime :rejected_at + t.datetime :approved_at + t.string :token + t.integer :receive_hour1 + t.integer :receive_hour2 + + t.timestamps + end + end +end diff --git a/spec/controllers/demander_statuses_controller_spec.rb b/spec/controllers/demander_statuses_controller_spec.rb new file mode 100644 index 00000000..70e99e18 --- /dev/null +++ b/spec/controllers/demander_statuses_controller_spec.rb @@ -0,0 +1,462 @@ +# -*- encoding: utf-8 -*- +#貸ä¸ç¶æ³ +require 'spec_helper' + +describe DemanderStatusesController do + before do + @admin = FactoryGirl.create :admin + @sp = FactoryGirl.create :system_picture + @lg = FactoryGirl.create :license_group + @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id + @user = FactoryGirl.create :user_yas + @author = @user.author #ã¦ã¼ã¶ä½ææã«é£åãã¦ä½æããã + @demand_user = FactoryGirl.create :demand_user + end + + describe 'ä¸è¦§è¡¨ç¤ºã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + DemanderStatus.stub(:list).and_return([@ds, @ds, @ds]) + DemanderStatus.stub(:requested_list).and_return([@ds, @ds]) + sign_in @admin + end + context 'äºåãã§ãã¯ãã' do + it 'ä¸ããããpageãã»ããããã¦ãã' do + get :index, :page => 5 + assigns(:page).should eq 5 + end + it 'çç¥ãããã¨@pageã«1å¤ãå ¥ã' do + get :index + assigns(:page).should eq 1 + end + it 'ä¸ããããpage_sizeãã»ããããã¦ãã' do + get :index, :page_size => 15 + assigns(:page_size).should eq 15 + end + it 'çç¥ãããã¨@page_sizeã«ããã©ã«ãå¤ãå ¥ã' do + get :index + assigns(:page_size).should eq DemanderStatus.default_page_size + end + it 'æ大ãè¶ ããã¨@page_sizeã«ããã©ã«ãæ大å¤ãå ¥ã' do + get :index, :page_size => 1500 + assigns(:page_size).should eq DemanderStatus.max_page_size + end + it 'ä¸æ£ãªå¤ãå ¥ãã¨@page_sizeã«ããã©ã«ãæ大å¤ãå ¥ã' do + get :index, :page_size => 0 + assigns(:page_size).should eq DemanderStatus.default_page_size + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :index + response.should be_success + end + it '@hideã空ã«ãªã£ã¦ãã' do + get :index + assigns(:hide).should be_blank + end + it '貸ä¸ç¶æ³ã¢ãã«ã«å ¨ä¸è¦§åå¾ãåãåããã¦ãã' do + DemanderStatus.should_receive(:list).exactly(1) + get :index + end + it '@demander_statusesã«ãªã¹ããåå¾ãã¦ãã' do + get :index + assigns(:demander_statuses).should have_at_least(3).items + end + context 'htmlå½¢å¼' do + it 'indexãã³ãã¬ã¼ããæç»ãã' do + get :index + response.should render_template("index") + end + end + context 'jsonå½¢å¼' do + it 'jsonãã¼ã¿ãè¿ã' do + get :index, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + it '貸ä¸ç¶æ³ã¢ãã«ã«jsonä¸è¦§åºåãªãã·ã§ã³ãåãåããã¦ãã' do + DemanderStatus.should_receive(:list_json_opt).exactly(1) + get :index, :format => :json + end + it 'ãã¼ã¿ããªã¹ãæ§é ã«ãªã£ã¦ãã' do + get :index, :format => :json + json = JSON.parse response.body + json.should have_at_least(3).items + end + it 'ãªã¹ãã®å é ãããã¯è²¸ä¸ç¶æ³ã£ã½ããã®ã§ãã£ã¦æ¬²ãã' do + get :index, :format => :json + json = JSON.parse response.body + json.first.has_key?("token").should be_true + json.first.has_key?("receive_hour1").should be_true + json.first.has_key?("receive_hour2").should be_true + json.first.has_key?("requested_at").should be_true + end + end + end + context 'é¤å¤ãã©ã°ãé¤å¤ã®ã¨ã' do + it '@hideãè¨å®ããã¦ãã' do + get :index, :hide => 1 + assigns(:hide).should_not be_blank + end + it '貸ä¸ç¶æ³ã¢ãã«ã«ç³è«ä¸ä¸è¦§åå¾ãåãåããã¦ãã' do + DemanderStatus.should_receive(:requested_list).exactly(1) + get :index, :hide => 1 + end + it '@demander_statusesã«ãªã¹ããåå¾ãã¦ãã' do + get :index, :hide => 1 + assigns(:demander_statuses).should have_at_least(2).items + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @admin + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :index + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :index + response.should redirect_to '/admins/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã401 Unauthorizedãè¿ã' do + get :index, :format => :json + response.status.should eq 401 + end + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + get :index, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + end + + describe 'åä½è¡¨ç¤ºã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + DemanderStatus.stub(:show).and_return(@ds) + sign_in @admin + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :show, :id => @ds.id + response.should be_success + end + it '貸ä¸ç¶æ³ã¢ãã«ã«åä½åå¾ãåãåããã¦ãã' do + DemanderStatus.should_receive(:show).exactly(1) + get :show + end + it '@demander_statusã«ã¢ã¬ãåå¾ãã¦ãã' do + get :show, :id => @ds.id + assigns(:demander_status).should eq(@ds) + end + context 'htmlå½¢å¼' do + it 'showãã³ãã¬ã¼ããæç»ãã' do + get :show, :id => @ds.id + response.should render_template("show") + end + end + context 'jsonå½¢å¼' do + it 'jsonãã¼ã¿ãè¿ã' do + get :show, :id => @ds.id, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + it '貸ä¸ç¶æ³ã¢ãã«ã«jsonåä½åºåãªãã·ã§ã³ãåãåããã¦ãã' do + DemanderStatus.should_receive(:show_json_opt).exactly(1) + get :show, :id => @ds.id, :format => :json + end + it 'ãã¼ã¿ãã¢ã¬ã«ãªã£ã¦ãã' do + get :show, :id => @ds.id, :format => :json + json = JSON.parse response.body + json.has_key?("token").should be_true + json.has_key?("receive_hour1").should be_true + json.has_key?("receive_hour2").should be_true + json.has_key?("requested_at").should be_true + end + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @admin + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :show, :id => @ds.id + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :show, :id => @ds.id + response.body.should redirect_to '/admins/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã401 Unauthorizedãè¿ã' do + get :show, :id => @ds.id, :format => :json + response.status.should eq 401 + end + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + get :show, :id => @ds.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + end + + describe 'ç·¨éãã©ã¼ã 表示ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + sign_in @admin + DemanderStatus.stub(:edit).with(@ds.id.to_s, @admin).and_return(@ds) + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :edit, :id => @ds.id + response.should be_success + end + it '貸ä¸ç¶æ³ã¢ãã«ã«ç·¨éåå¾ãåãåããã¦ãã' do + DemanderStatus.should_receive(:edit).exactly(1) + get :edit, :id => @ds.id + end + it '@demander_statusã«ãã¼ã¿ãç¨æãã¦ãã' do + get :edit, :id => @ds.id + assigns(:demander_status).should eq @ds + end + context 'htmlå½¢å¼' do + it 'editãã³ãã¬ã¼ããæç»ãã' do + get :edit, :id => @ds.id + response.should render_template("edit") + end + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @admin + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :edit, :id => @ds.id + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :edit, :id => @ds.id + response.body.should redirect_to '/admins/sign_in' + end + end + end + end + + describe 'æ´æ°ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + @attr = {:receive_hour1 => 12, :receive_hour2 => 22} + sign_in @admin + end + context 'äºåãã§ãã¯ãã¦ãã' do + it '貸ä¸ç¶æ³ã¢ãã«ã«ç·¨éåå¾ãåãåããã¦ãã' do + DemanderStatus.stub(:edit).with(any_args()).and_return @ds + DemanderStatus.should_receive(:edit).exactly(1) + put :update, :id => @ds.id, :demander_status => @attr + end + it '貸ä¸ç¶æ³ã¢ãã«ã«è²¸ä¸æ¿èªãä¾é ¼ãã¦ãã' do + DemanderStatus.any_instance.stub(:approve).with(any_args).and_return true + DemanderStatus.any_instance.should_receive(:approve).with('12', '22').exactly(1) + put :update, :id => @ds.id, :demander_status => @attr + end + it '@demander_statusã«ã¢ã¬ãåå¾ãã¦ãã' do + put :update, :id => @ds.id, :demander_status => @attr + assigns(:demander_status).id.should eq(@ds.id) + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'æ´æ°ããã' do + put :update, :id => @ds.id, :demander_status => @attr + DemanderStatus.find(@ds.id).receive_hour1.should eq 12 + DemanderStatus.find(@ds.id).receive_hour2.should eq 22 + end + context 'htmlå½¢å¼' do + before do + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + put :update, :id => @ds.id, :demander_status => @attr + response.status.should eq 302 + end + it 'æ´æ°ããã貸ä¸ç¶æ³ã®è¡¨ç¤ºãã¼ã¸ã¸é·ç§»ãã' do + put :update, :id => @ds.id, :demander_status => @attr + response.should redirect_to(@ds) + end + end + context 'jsonå½¢å¼' do + before do + DemanderStatus.any_instance.stub(:approve).with(any_args()).and_return(true) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + put :update, :id => @ds.id, :demander_status => @attr, :format => :json + response.should be_success + end + it 'ãã¼ã¸æ¬ä½ã¯ç¹ã«è¿ããªã' do + put :update, :id => @ds.id, :demander_status => @attr, :format => :json + response.body.should match /./ + end + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @admin + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + put :update, :id => @ds.id, :demander_status => @attr + response.status.should eq 302 + end + context 'htmlå½¢å¼' do + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + put :update, :id => @ds.id, :demander_status => @attr + response.body.should redirect_to '/admins/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + put :update, :id => @ds.id, :demander_status => @attr, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'æ¤è¨¼ãä¿åã«å¤±æããã¨ã' do + before do + DemanderStatus.any_instance.stub(:approve).with(any_args()).and_return(false) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 Okãè¿ã' do + put :update, :id => @ds.id, :demander_status => @attr + response.status.should eq 200 + end + it 'ç·¨éãã¼ã¸ãæç»ãã' do + put :update, :id => @ds.id, :demander_status => @attr + response.should render_template("edit") + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã422 unprocessable_entity ãè¿ã' do + DemanderStatus.any_instance.stub(:save).and_return(false) + put :update, :id => @ds.id, :demander_status => @attr, :format => :json + response.status.should eq 422 + end + it 'å¿çã¡ãã»ã¼ã¸Unprocessable Entityãè¿ã' do + put :update, :id => @ds.id, :demander_status => @attr, :format => :json + response.message.should match(/Unprocessable/) + end + end + end + end + + describe '貸ä¸åæ¢ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + sign_in @admin + end + context 'äºåãã§ãã¯ãã¦ãã' do + it '貸ä¸ç¶æ³ã¢ãã«ã«ç·¨éåå¾ãåãåããã¦ãã' do + DemanderStatus.stub(:edit).with(any_args()).and_return @ds + DemanderStatus.should_receive(:edit).exactly(1) + delete :destroy, :id => @ds.id + end + it 'ã¢ãã«ã«è²¸ä¸åæ¢ãä¾é ¼ãã' do + DemanderStatus.any_instance.stub(:reject).with(any_args).and_return true + DemanderStatus.any_instance.should_receive(:reject).exactly(1) + delete :destroy, :id => @ds.id + end + it '@demander_statusã«ã¢ã¬ãåå¾ãã¦ãã' do + delete :destroy, :id => @ds.id + assigns(:demander_status).should eq(@ds) + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + DemanderStatus.any_instance.stub(:reject).with(any_args()).and_return(true) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + delete :destroy, :id => @ds.id + response.status.should eq 302 + end + it '貸ä¸ç¶æ³é²è¦§(show)ãã¼ã¸ã«é·ç§»ãããã' do + delete :destroy, :id => @ds.id + response.should redirect_to(@ds) + end + it 'ä¸æçã¡ãã»ã¼ã¸ã«å¦çæåãè¨å®ãã' do + delete :destroy, :id => @ds.id + flash[:notice].should match /success/ + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + delete :destroy, :id => @ds.id, :format => :json + response.should be_success + end + it 'ãã¼ã¸æ¬ä½ã¯ç¹ã«è¿ããªã' do + delete :destroy, :id => @ds.id, :format => :json + response.body.should match /./ + end + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @admin + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + delete :destroy, :id => @ds.id + response.status.should eq 302 + end + context 'htmlå½¢å¼' do + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + delete :destroy, :id => @ds.id + response.body.should redirect_to '/admins/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + delete :destroy, :id => @ds.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + + context 'å¦æ±ºã«å¤±æãã(å¦æ±ºã§ããç¶æ ã§ãªãã£ã)ã¨ã' do + before do + DemanderStatus.any_instance.stub(:reject).with(any_args).and_return(false) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + delete :destroy, :id => @ds.id + response.status.should eq 302 + end + it '貸ä¸ç¶æ³é²è¦§(show)ãã¼ã¸ã«é·ç§»ãããã' do + delete :destroy, :id => @ds.id + response.should redirect_to(@ds) + end + it 'ä¸æçã¡ãã»ã¼ã¸ã«å¦ç失æãè¨å®ãã' do + delete :destroy, :id => @ds.id + flash[:notice].should match /not/ + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã422 unprocessable_entity ãè¿ã' do + delete :destroy, :id => @ds.id, :format => :json + response.status.should eq 422 + end + it 'å¿çã¡ãã»ã¼ã¸Unprocessable Entityãè¿ã' do + delete :destroy, :id => @ds.id, :format => :json + response.message.should match(/Unprocessable/) + end + end + end + end + +end diff --git a/spec/controllers/demanders_controller_spec.rb b/spec/controllers/demanders_controller_spec.rb new file mode 100644 index 00000000..c5f513f7 --- /dev/null +++ b/spec/controllers/demanders_controller_spec.rb @@ -0,0 +1,605 @@ +# -*- encoding: utf-8 -*- +require 'spec_helper' +#åæ + +describe DemandersController do + before do + @admin = FactoryGirl.create :admin + @sp = FactoryGirl.create :system_picture + @lg = FactoryGirl.create :license_group + @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id + @user = FactoryGirl.create :user_yas + @author = @user.author #ã¦ã¼ã¶ä½ææã«é£åãã¦ä½æããã + @demand_user = FactoryGirl.create :demand_user + end + + describe 'åæã¡ãã¥ã¼ã«æ¼ãã¦' do + before do + sign_in @demand_user + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :index + response.should be_success + end + it 'åæã¢ã«ã¦ã³ããã@demanderã«åæãåå¾ãã¦ãã' do + get :index + assigns(:demander).should eq(@demander) + end + context 'htmlå½¢å¼' do + it 'indexãã³ãã¬ã¼ããæç»ãã' do + get :index + response.should render_template("index") + end + end + context 'jsonå½¢å¼' do + end + end + context 'åæãåå¨ããªãã£ãã¨ã' do + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :index + response.status.should eq 302 + end + it 'ãããã£ã¼ã«ç»é²ãã¼ã¸ã¸é·ç§»ãã' do + get :index + response.body.should redirect_to new_demander_path + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :index + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :index + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + end + end + end + + describe 'æ°è¦ä½æãã©ã¼ã 表示ã«æ¼ãã¦' do + before do + sign_in @demand_user + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :new + response.should be_success + end + it '@demanderã«æ°è¦ãã¼ã¿ãç¨æãã¦ãã' do + get :new + assigns(:demander).should be_a_new(Demander) + end + it 'åæã¢ãã«ã«ããã©ã«ãå¤è£å ãä¾é ¼ãã¦ãã' do + Demander.any_instance.should_receive(:supply_default).exactly(1) + get :new + end + context 'htmlå½¢å¼' do + it 'newãã³ãã¬ã¼ããæç»ãã' do + get :new + response.should render_template("new") + end + end + context 'jsonå½¢å¼' do + it 'jsonãã¼ã¿ãè¿ã' do + get :new, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + it 'åæã¢ãã«ã«jsonåä½åºåãªãã·ã§ã³ãåãåããã¦ãã' do + Demander.should_receive(:show_json_opt).exactly(1) + get :new, :format => :json + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :new + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :new + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã401 Unauthorizedãè¿ã' do + get :new, :format => :json + response.status.should eq 401 + end + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + get :new, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + end + + describe 'æ°è¦ä½æã«æ¼ãã¦' do + before do + sign_in @demand_user + @attr = FactoryGirl.attributes_for(:demander, :demand_user_id => @demand_user.id, :caption => 'normal') + end + context 'äºåãã§ãã¯ãã¦ãã' do + it 'åæã¢ãã«ã«ããã©ã«ãå¤è£å ãä¾é ¼ãã¦ãã' do + Demander.any_instance.should_receive(:supply_default).exactly(1) + post :create, :demander => @attr + end + it 'åæã¢ãã«ã«ã«ã©ã å¤å¾©å ãä¾é ¼ãã¦ãã' do + Demander.any_instance.should_receive(:attributes=).exactly(1) + post :create, :demander => @attr + end + it 'åæã¢ãã«ã«ä¸æ¸ãè£å ãä¾é ¼ãã¦ãã' do + Demander.any_instance.should_receive(:overwrite).exactly(1) + post :create, :demander => @attr + end + it 'ã¢ãã«ã«ä¿åä¾é ¼ãã' do + Demander.any_instance.should_receive(:store).exactly(1) + post :create, :demander => @attr + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it "@demanderã«ä½æãããåæãä¿æãã¦ãã¦ããããDBã«ãã" do + post :create, :demander => @attr + assigns(:demander).should be_a(Demander) + assigns(:demander).should be_persisted + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + Demander.any_instance.stub(:store).and_return(true) + post :create, :demander => @attr + response.status.should eq 302 + end + it 'ä½æãããåæã®è¡¨ç¤ºãã¼ã¸ã¸é·ç§»ãã' do +# Demander.any_instance.stub(:save).and_return(true) + post :create, :demander => @attr + response.should redirect_to(Demander.last) + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do +# Demander.any_instance.stub(:save).and_return(true) + post :create, :demander => @attr, :format => :json + response.should be_success + end + it 'ä½æãããåæãjsonãã¼ã¿ã§è¿ã' do + post :create, :demander => @attr, :format => :json + lambda{JSON.parse(response.body)}.should_not raise_error(JSON::ParserError) + end + it 'ãã¼ã¿ãã¢ã¬ã«ãªã£ã¦ãã' do + post :create, :demander => @attr, :format => :json + json = JSON.parse response.body + json["caption"].should match(/normal/) + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + post :create, :demander => @attr + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + post :create, :demander => @attr + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã401 Unauthorizedãè¿ã' do + post :create, :demander => @attr, :format => :json + response.status.should eq 401 + end + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + post :create, :demander => @attr, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'æ¤è¨¼ãä¿åã«å¤±æãã' do + before do + Demander.any_instance.stub(:store).and_return(false) + end + it "æªä¿åã®åæãä¿æãã¦ãã" do + post :create, :demander => @attr + assigns(:demander).should be_a_new(Demander) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + post :create, :demander => @attr + response.status.should eq 200 + end + it 'æ°è¦ãã¼ã¸ãæç»ãã' do + post :create, :demander => @attr + response.should render_template("new") + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã422 unprocessable_entity ãè¿ã' do + post :create, :demander => @attr, :format => :json + response.status.should eq 422 + end + it 'å¿çã¡ãã»ã¼ã¸Unprocessable Entityãè¿ã' do + post :create, :demander => @attr, :format => :json + response.message.should match(/Unprocessable/) + end + end + end + end + + describe 'ç·¨éãã©ã¼ã 表示ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + sign_in @demand_user + Demander.stub(:edit).and_return(@demander) + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + get :edit, :id => @demander.id + response.should be_success + end + it 'åæã¢ãã«ã«ç·¨éåå¾ãåãåããã¦ãã' do + Demander.should_receive(:edit).exactly(1) + get :edit, :id => @demander.id + end + it '@demanderã«ãã¼ã¿ãç¨æãã¦ãã' do + get :edit, :id => @demander.id + assigns(:demander).should eq @demander + end + context 'htmlå½¢å¼' do + it 'editãã³ãã¬ã¼ããæç»ãã' do + get :edit, :id => @demander.id + response.should render_template("edit") + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + get :edit, :id => @demander.id + response.status.should eq 302 + end + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + get :edit, :id => @demander.id + response.body.should redirect_to '/demand_users/sign_in' + end + end + end + end + + describe 'æ´æ°ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + @attr = FactoryGirl.attributes_for(:demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :caption => 'updated caption') + sign_in @demand_user + end + context 'äºåãã§ãã¯ãã¦ãã' do + it 'åæã¢ãã«ã«ç·¨éåå¾ãåãåããã¦ãã' do + Demander.stub(:edit).with(any_args()).and_return @demander + Demander.should_receive(:edit).exactly(1) + put :update, :id => @demander.id, :demander => @attr + end + it 'åæã¢ãã«ã«ã«ã©ã å¤å¾©å ãä¾é ¼ãã¦ãã' do + Demander.any_instance.should_receive(:attributes=).exactly(1) + put :update, :id => @demander.id, :demander => @attr + end + it 'åæã¢ãã«ã«ä¸æ¸ãè£å ãä¾é ¼ãã¦ãã' do + Demander.any_instance.should_receive(:overwrite).exactly(1) + put :update, :id => @demander.id, :demander => @attr + end + it 'ã¢ãã«ã«æ´æ°ãä¾é ¼ãã' do + Demander.any_instance.stub(:store).with(any_args).and_return true + Demander.any_instance.should_receive(:store).exactly(1) + put :update, :id => @demander.id, :demander => @attr + end + it '@demanderã«ã¢ã¬ãåå¾ãã¦ãã' do + put :update, :id => @demander.id, :demander => @attr + assigns(:demander).id.should eq(@demander.id) + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'æ´æ°ããã' do + put :update, :id => @demander.id, :demander => @attr + Demander.find(@demander.id).caption.should match /updated/ + end + context 'htmlå½¢å¼' do + before do + Demander.any_instance.stub(:store).with(any_args()).and_return(true) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + put :update, :id => @demander.id, :demander => @attr + response.status.should eq 302 + end + it 'æ´æ°ãããåæã®è¡¨ç¤ºãã¼ã¸ã¸é·ç§»ãã' do + put :update, :id => @demander.id, :demander => @attr + response.should redirect_to(@demander) + end + end + context 'jsonå½¢å¼' do + before do + Demander.any_instance.stub(:store).with(any_args()).and_return(true) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + put :update, :id => @demander.id, :demander => @attr, :format => :json + response.should be_success + end + it 'ãã¼ã¸æ¬ä½ã¯ç¹ã«è¿ããªã' do + put :update, :id => @demander.id, :demander => @attr, :format => :json + response.body.should match /./ + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + put :update, :id => @demander.id, :demander => @attr + response.status.should eq 302 + end + context 'htmlå½¢å¼' do + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + put :update, :id => @demander.id, :demander => @attr + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + put :update, :id => @demander.id, :demander => @attr, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'æ¤è¨¼ãä¿åã«å¤±æããã¨ã' do + before do + Demander.any_instance.stub(:store).and_return(false) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 Okãè¿ã' do + put :update, :id => @demander.id, :demander => @attr + response.status.should eq 200 + end + it 'ç·¨éãã¼ã¸ãæç»ãã' do + put :update, :id => @demander.id, :demander => @attr + response.should render_template("edit") + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã422 unprocessable_entity ãè¿ã' do + Demander.any_instance.stub(:save).and_return(false) + put :update, :id => @demander.id, :demander => @attr, :format => :json + response.status.should eq 422 + end + it 'å¿çã¡ãã»ã¼ã¸Unprocessable Entityãè¿ã' do + put :update, :id => @demander.id, :demander => @attr, :format => :json + response.message.should match(/Unprocessable/) + end + end + end + end + + describe 'ååç³è«ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + @attr = FactoryGirl.attributes_for(:demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :caption => 'updated caption') + sign_in @demand_user + end + context 'äºåãã§ãã¯ãã¦ãã' do + it 'åæã¢ãã«ã®è²¸ä¸ç¶æ³ã«ååç³è«ãä¾é ¼ãã¦ãã' do + DemanderStatus.stub(:request).with(any_args()).and_return true + DemanderStatus.any_instance.should_receive(:request).exactly(1) + post :req + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + context 'htmlå½¢å¼' do + before do + DemanderStatus.any_instance.stub(:request).with(any_args()).and_return(true) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + post :req + response.status.should eq 302 + end + it 'åæãã¼ã (index)ãã¼ã¸ã¸é·ç§»ãã' do + post :req + response.should redirect_to(demanders_path) + end + it 'ä¸æçã¡ãã»ã¼ã¸ã«å¦çæåãè¨å®ãã' do + post :req + flash[:notice].should match /success/ + end + end + context 'jsonå½¢å¼' do + before do + DemanderStatus.any_instance.stub(:request).with(any_args()).and_return(true) + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + post :req, :format => :json + response.should be_success + end + it 'ãã¼ã¸æ¬ä½ã¯ç¹ã«è¿ããªã' do + post :req, :format => :json + response.body.should match /./ + end + end + end + context 'åæ権éããªãã¨ã' do + before do + sign_out @demand_user + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + post :req + response.status.should eq 302 + end + context 'htmlå½¢å¼' do + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + post :req + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + post :req, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'æ¤è¨¼ãä¿åã«å¤±æããã¨ã' do + before do + DemanderStatus.any_instance.stub(:request).with(any_args()).and_return(false) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + post :req + response.status.should eq 302 + end + it 'åæãã¼ã (index)ãã¼ã¸ã¸é·ç§»ãã' do + post :req + response.should redirect_to(demanders_path) + end + it 'ä¸æçã¡ãã»ã¼ã¸ã«å¦ç失æãè¨å®ãã' do + post :req + flash[:notice].should match /not/ + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã422 unprocessable_entity ãè¿ã' do + post :req, :format => :json + response.status.should eq 422 + end + it 'å¿çã¡ãã»ã¼ã¸Unprocessable Entityãè¿ã' do + post :req, :format => :json + response.message.should match(/Unprocessable/) + end + end + end + end + + describe 'åååæ¢ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + sign_in @demand_user + end + context 'äºåãã§ãã¯ãã¦ãã' do + it 'åæã¢ãã«ã«ç·¨éåå¾ãåãåããã¦ãã' do + Demander.stub(:edit).with(any_args()).and_return @demander + Demander.should_receive(:edit).exactly(1) + delete :destroy, :id => @demander.id + end + it 'åæã¢ãã«ã«åååæ¢ãä¾é ¼ãã' do + Demander.any_instance.stub(:stop).with(any_args).and_return true + Demander.any_instance.should_receive(:stop).exactly(1) + delete :destroy, :id => @demander.id + end + it '@demanderã«ã¢ã¬ãåå¾ãã¦ãã' do + delete :destroy, :id => @demander.id + assigns(:demander).should eq(@demander) + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + Demander.any_instance.stub(:stop).with(any_args()).and_return(true) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + delete :destroy, :id => @demander.id + response.status.should eq 302 + end + it 'åæãã¼ã (index)ãã¼ã¸ã«é·ç§»ãã' do + delete :destroy, :id => @demander.id + response.should redirect_to(demanders_path) + end + it 'ä¸æçã¡ãã»ã¼ã¸ã«å¦çæåãè¨å®ãã' do + delete :destroy, :id => @demander.id + flash[:notice].should match /success/ + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã200 OKãè¿ã' do + delete :destroy, :id => @demander.id, :format => :json + response.should be_success + end + it 'ãã¼ã¸æ¬ä½ã¯ç¹ã«è¿ããªã' do + delete :destroy, :id => @demander.id, :format => :json + response.body.should match /./ + end + end + end + context '管çè 権éããªãã¨ã' do + before do + sign_out @demand_user + end + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + delete :destroy, :id => @demander.id + response.status.should eq 302 + end + context 'htmlå½¢å¼' do + it 'ãµã¤ã³ã¤ã³ãã¼ã¸ã¸é·ç§»ãã' do + delete :destroy, :id => @demander.id + response.body.should redirect_to '/demand_users/sign_in' + end + end + context 'jsonå½¢å¼' do + it 'å¿çã¡ãã»ã¼ã¸ã«Unauthorizedãè¿ã' do + delete :destroy, :id => @demander.id, :format => :json + response.message.should match(/Unauthorized/) + end + end + end + context 'åååæ¢ã«å¤±æããã¨ã' do + before do + Demander.any_instance.stub(:stop).with(any_args).and_return(false) + end + context 'htmlå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã302 Foundãè¿ã' do + delete :destroy, :id => @demander.id + response.status.should eq 302 + end + it 'åæãã¼ã (index)ãã¼ã¸ã«é·ç§»ãã' do + delete :destroy, :id => @demander.id + response.should redirect_to(demanders_path) + end + it 'ä¸æçã¡ãã»ã¼ã¸ã«å¦ç失æãè¨å®ãã' do + delete :destroy, :id => @demander.id + flash[:notice].should match /not/ + end + end + context 'jsonå½¢å¼' do + it 'ã¹ãã¼ã¿ã¹ã³ã¼ã422 unprocessable_entity ãè¿ã' do + delete :destroy, :id => @demander.id, :format => :json + response.status.should eq 422 + end + it 'å¿çã¡ãã»ã¼ã¸Unprocessable Entityãè¿ã' do + delete :destroy, :id => @demander.id, :format => :json + response.message.should match(/Unprocessable/) + end + end + end + end + +end diff --git a/spec/helpers/demander_statuses_helper_spec.rb b/spec/helpers/demander_statuses_helper_spec.rb new file mode 100644 index 00000000..b9bf9699 --- /dev/null +++ b/spec/helpers/demander_statuses_helper_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +# Specs in this file have access to a helper object that includes +# the DemanderStatusesHelper. For example: +# +# describe DemanderStatusesHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# helper.concat_strings("this","that").should == "this that" +# end +# end +# end +describe DemanderStatusesHelper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/helpers/demanders_helper_spec.rb b/spec/helpers/demanders_helper_spec.rb new file mode 100644 index 00000000..6ef0e197 --- /dev/null +++ b/spec/helpers/demanders_helper_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +# Specs in this file have access to a helper object that includes +# the DemandersHelper. For example: +# +# describe DemandersHelper do +# describe "string concat" do +# it "concats two strings with spaces" do +# helper.concat_strings("this","that").should == "this that" +# end +# end +# end +describe DemandersHelper do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/demand_user_spec.rb b/spec/models/demand_user_spec.rb new file mode 100644 index 00000000..d764de64 --- /dev/null +++ b/spec/models/demand_user_spec.rb @@ -0,0 +1,5 @@ +require 'spec_helper' + +describe DemandUser do + pending "add some examples to (or delete) #{__FILE__}" +end diff --git a/spec/models/demander_spec.rb b/spec/models/demander_spec.rb new file mode 100644 index 00000000..da6c9cea --- /dev/null +++ b/spec/models/demander_spec.rb @@ -0,0 +1,500 @@ +# -*- encoding: utf-8 -*- +#åæ +require 'spec_helper' + +describe Demander do + before do + @admin = FactoryGirl.create :admin + @sp = FactoryGirl.create :system_picture + @lg = FactoryGirl.create :license_group + @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id + @user = FactoryGirl.create :user_yas + @author = @user.author #ã¦ã¼ã¶ä½ææã«é£åãã¦ä½æããã + @demand_user = FactoryGirl.create :demand_user + end + describe 'æ¤è¨¼ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + + context 'ãªã¼ã½ããã¯ã¹ãªãã¼ã¿ã®ã¨ã' do + it 'ä¸éãã¼ã¿ãéã' do + @demander.name = 'a' + @demander.caption = 'a' + @demander.url = 'http://test.jp/' + @demander.description = 'a' + @demander.demander_url = 'http://test.jp/' + @demander.should be_valid + end + it 'ä¸éãã¼ã¿ãéã' do + @demander.name = 'a'*50 + @demander.caption = 'a'*30 + @demander.url = 'http://test.jp/aaaaa' + 'a' * 180 + @demander.description = 'a' * 99999 + @demander.demander_url = 'http://test.jp/aaaaa' + 'a' * 180 + @demander.should be_valid + end + end + + context 'demand_user_idãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.demand_user_id = nil + @demander.should_not be_valid + end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @demander.demand_user_id = 'a' + @demander.should_not be_valid + end + it 'åå¨ããåæã¦ã¼ã¶ã§ãªããã°å¤±æãã' do + @demander.demand_user_id = 0 + @demander.should_not be_valid + end + end + context 'nameãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.name = '' + @demander.should_not be_valid + end + it '51æå以ä¸ãªã失æãã' do + @demander.name = 'a'*51 + @demander.should_not be_valid + end + it 'éè¤ãã¦ããã失æãã' do + l = FactoryGirl.create :demander + @demander.should_not be_valid + end + end + context 'captionãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.caption = '' + @demander.should_not be_valid + end + it '31æå以ä¸ãªã失æãã' do + @demander.caption = 'a'*31 + @demander.should_not be_valid + end + end + context 'urlãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.url = '' + @demander.should_not be_valid + end + it '201æå以ä¸ãªã失æãã' do + @demander.url = 'http://test.jp/aaaaa' + 'a' * 181 + @demander.should_not be_valid + end + it 'urlå½¢å¼ã§ãªããªã失æãã' do + @demander.url = 'aaaaaaa' + @demander.should_not be_valid + end + end + context 'descriptionãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.description= '' + @demander.should_not be_valid + end + end + context 'demander_urlãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.demander_url = '' + @demander.should_not be_valid + end + it '201æå以ä¸ãªã失æãã' do + @demander.demander_url = 'http://test.jp/aaaaa' + 'a' * 181 + @demander.should_not be_valid + end + it 'urlå½¢å¼ã§ãªããªã失æãã' do + @demander.demander_url = 'aaaaaaa' + @demander.should_not be_valid + end + end + context 'demander_status_idãæ¤è¨¼ããã¨ã' do + it 'nullãªã失æãã' do + @demander.demander_status_id = nil + @demander.should_not be_valid + end + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @demander.demander_status_id = 'a' + @demander.should_not be_valid + end + it 'åå¨ããååç¶æ³ã§ãªããã°å¤±æãã' do + @demander.demander_status_id = 0 + @demander.should_not be_valid + end + end + end + + describe 'ããã©ã«ãå¤è£å ã«æ¼ãã¦' do + it 'defined' do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + @demander.supply_default + end + end + + describe 'ä¸æ¸ãè£å ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => nil + end + it 'demand_user_idã«åæã¢ã«ã¦ã³ãidãè£å ãã¦ãã' do + @demander.overwrite @demand_user + @demander.demand_user_id.should_not be_nil + end + end + + describe 'ææå¤å®ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it 'ãã©ã¡ã¼ã¿ãåæã¢ã«ã¦ã³ãã§ãªããªãno' do + @demander.own?(nil).should == false + end + it 'åæã¢ã«ã¦ã³ãã®idã¨ä¸è´ãããªãyes' do + @demander.own?(@demand_user).should == true + end + it 'åæã¢ã«ã¦ã³ãã®idã¨ä¸è´ããªããªãno' do + @other_demand_user = FactoryGirl.create :demand_user + @demander.own?(@other_demand_user).should == false + end + end + + describe 'é²è¦§è¨±å¯ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.build :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it 'ãã©ã¡ã¼ã¿ãåæã¢ã«ã¦ã³ãã§ãªããªãno' do + @demander.visible?(nil).should == false + end + it 'åæã¢ã«ã¦ã³ãã®idã¨ä¸è´ãããªãyes' do + @demander.visible?(@demand_user).should == true + end + it 'åæã¢ã«ã¦ã³ãã®idã¨ä¸è´ããªããªãno' do + @other_demand_user = FactoryGirl.create :demand_user + @demander.visible?(@other_demand_user).should == false + end + end + + describe 'ç¶æ ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it '貸ä¸ç¶æ³ã®ç¶æ ã«åãåãããã¦ãã' do + DemanderStatus.any_instance.stub(:status).with(any_args).and_return(1) + DemanderStatus.any_instance.should_receive(:status).with(any_args).exactly(1) + r = @demander.status + end + end + + describe 'ä¸è¦§åå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :name => "6" + end + context 'pageè£æ£ã«ã¤ãã¦' do + it 'æååããæ°å¤ã«å¤æããã' do + Demander.page('8').should eq 8 + end + it 'nilã®å ´åã¯1ã«ãªã' do + Demander.page().should eq 1 + end + it '0以ä¸ã®å ´åã¯1ã«ãªã' do + Demander.page('0').should eq 1 + end + end + context 'page_sizeè£æ£ã«ã¤ãã¦' do + it 'æååããæ°å¤ã«å¤æããã' do + Demander.page_size('7').should eq 7 + end + it 'nilã®å ´åã¯Demander.default_page_sizeã«ãªã' do + Demander.page_size().should eq Demander.default_page_size + end + it '0以ä¸ã®å ´åã¯Demander.default_page_sizeã«ãªã' do + Demander.page_size('0').should eq Demander.default_page_size + end + it 'Demander.max_page_sizeãè¶ ããå ´åã¯Demander.max_page_sizeã«ãªã' do + Demander.page_size('1000').should eq Demander.max_page_size + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ä¸è¦§åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + Demander.stub(:list_opt).with(any_args).and_return({}) + Demander.should_receive(:list_opt).with(any_args).exactly(1) + r = Demander.list + end + end + it 'ãªã¹ããè¿ã' do + r = Demander.list + r.should eq [@demander] + end + it '管çåã§ä¸¦ãã§ãã' do + v = FactoryGirl.create :demander, :name => "0" + r = Demander.list + r.should eq [v, @demander] + end + context 'DBã«5件ãã£ã¦1ãã¼ã¸ã®ä»¶æ°ã2件ã«å¤ããã¨ãã¦' do + before do + @ds2 = FactoryGirl.create :demander_status + @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5" + @ds3 = FactoryGirl.create :demander_status + @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4" + @ds4 = FactoryGirl.create :demander_status + @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3" + @ds5 = FactoryGirl.create :demander_status + @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2" + Demander.stub(:default_page_size).and_return(2) + end + it 'é常ã¯2件ãè¿ã' do + r = Demander.list + r.should have(2).items + end + it 'page=1ãªãæ«å°¾2件ãè¿ã' do + #管çåã§ä¸¦ãã§ãã + r = Demander.list(1) + r.should eq [@demander5, @demander4] + end + it 'page=2ãªãä¸é2件ãè¿ã' do + r = Demander.list(2) + r.should eq [@demander3, @demander2] + end + it 'page=3ãªãå é 1件ãè¿ã' do + r = Demander.list(3) + r.should eq [@demander] + end + end + context 'DBã«5件ãã£ã¦1ãã¼ã¸ã®ä»¶æ°ã2件ã«å¤ããã¨ãã¦' do + before do + @ds2 = FactoryGirl.create :demander_status + @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5" + @ds3 = FactoryGirl.create :demander_status + @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4" + @ds4 = FactoryGirl.create :demander_status + @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3" + @ds5 = FactoryGirl.create :demander_status + @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2" + Demander.stub(:default_page_size).and_return(2) + end + it '件æ°0ã¯å ¨ä»¶(5件)ãè¿ã' do + r = Demander.list 5, 0 + r.should have(5).items + end + end + end + describe 'å¾ æ©ä¸ä¸è¦§åå¾ã«æ¼ãã¦' do + end + describe 'ä¸è¦§åå¾ãªãã·ã§ã³ã«æ¼ãã¦' do + it 'includeãã¼ãå«ãã§ãã' do + r = Demander.list_opt + r.has_key?(:include).should be_true + end + it '1ã¤ã®é ç®ãå«ãã§ãã' do + r = Demander.list_opt[:include] + r.should have(1).items + end + it '貸ä¸ç¶æ³ãå«ãã§ãã' do + r = Demander.list_opt[:include] + r.has_key?(:demander_status).should be_true + end + end + describe 'jsonä¸è¦§åºåãªãã·ã§ã³ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it '貸ä¸ç¶æ³ãå«ãã§ãã' do + r = Demander.list.to_json Demander.list_json_opt + j = JSON.parse r + i = j.first + i.has_key?('demander_status').should be_true + end + end + + describe 'åä½åå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'åä½åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + Demander.stub(:show_opt).with(any_args).and_return({}) + Demander.should_receive(:show_opt).with(any_args).exactly(1) + r = Demander.show @demander.id, @demand_user + end + it 'é²è¦§è¨±å¯ãåãåããã¦ãã' do + Demander.any_instance.stub(:visible?).with(any_args).and_return(true) + Demander.any_instance.should_receive(:visible?).with(any_args).exactly(1) + r = Demander.show @demander.id, @demand_user + end + end + it 'æå®ã®åæãè¿ã' do + r = Demander.show @demander.id, @demand_user + r.should eq @demander + end + context 'é²è¦§è¨±å¯ãåºãªãã£ãã¨ã' do + it '403Forbiddenä¾å¤ãè¿ã' do + Demander.any_instance.stub(:visible?).and_return(false) + lambda{ + Demander.show @demander.id, @demand_user + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'åå¨ããªãåæãéããã¨ããã¨ã' do + it '404RecordNotFoundä¾å¤ãè¿ã' do + lambda{ + Demander.show 110, @demand_user + }.should raise_error(ActiveRecord::RecordNotFound) + end + end + end + + describe 'ç·¨éåå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'åä½åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + Demander.stub(:show_opt).with(any_args).and_return({}) + Demander.should_receive(:show_opt).with(any_args).exactly(1) + r = Demander.edit @demander.id, @demand_user + end + it 'ææå¤å®ãåãåããã¦ãã' do + Demander.any_instance.stub(:own?).with(any_args).and_return(true) + Demander.any_instance.should_receive(:own?).with(any_args).exactly(1) + r = Demander.edit @demander.id, @demand_user + end + end + it 'æå®ã®åæãè¿ã' do + Demander.any_instance.stub(:own?).and_return(true) + r = Demander.edit @demander.id, @demand_user + r.should eq @demander + end + context '権éããªãã£ãã¨ã' do + it '403Forbiddenä¾å¤ãè¿ã' do + Demander.any_instance.stub(:own?).and_return(false) + lambda{ + Demander.edit @demander.id, @demand_user + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'åå¨ããªãåæãéããã¨ããã¨ã' do + it '404RecordNotFoundä¾å¤ãè¿ã' do + lambda{ + Demander.edit 110, @demand_user + }.should raise_error(ActiveRecord::RecordNotFound) + end + end + end + describe 'åä½åå¾ãªãã·ã§ã³ã«æ¼ãã¦' do + it 'includeãã¼ãå«ãã§ãã' do + r = Demander.show_opt + r.has_key?(:include).should be_true + end + it '1ã¤ã®é ç®ãå«ãã§ãã' do + r = Demander.show_opt[:include] + r.should have(1).items + end + it '貸ä¸ç¶æ³ãå«ãã§ãã' do + r = Demander.show_opt[:include] + r.has_key?(:demander_status).should be_true + end + end + describe 'jsonåä½åºåãªãã·ã§ã³ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it '貸ä¸ç¶æ³ãå«ãã§ãã' do + r = Demander.show(@demander.id, @demand_user).to_json Demander.show_json_opt + j = JSON.parse r + i = j + i.has_key?('demander_status').should be_true + end + end + + describe 'æ´æ°ä½æã«æ¼ãã¦' do + before do + DemanderStatus.any_instance.stub(:supply_default).with(any_args) + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + @demander = FactoryGirl.build :demander, :demander_status_id => nil, :demand_user_id => @demand_user.id + end + it 'åæã追å ããã' do + lambda { + r = @demander.store + }.should change Demander, :count + end + it '貸ä¸ç¶æ³ãä½æããã' do + lambda { + r = @demander.store + }.should change DemanderStatus, :count + end + it 'trueãè¿ã' do + r = @demander.store + r.should be_true + end + end + context '貸ä¸ç¶æ³ãããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + it 'åæã¯å¤åããªã' do + lambda { + r = @demander.store + }.should_not change Demander, :count + end + it '貸ä¸ç¶æ³ã¯å¤åããªã' do + lambda { + r = @demander.store + }.should_not change DemanderStatus, :count + end + end + context '貸ä¸ç¶æ³ã®ä½æã«å¤±æããã¨ã' do + before do + DemanderStatus.any_instance.stub(:save).with(any_args).and_return(false) + @demander = FactoryGirl.build :demander, :demander_status_id => nil, :demand_user_id => @demand_user.id + end + it 'åæã¯å¤åããªã' do + lambda { + r = @demander.store + }.should_not change Demander, :count + end + it '貸ä¸ç¶æ³ã¯å¤åããªã' do + lambda { + r = @demander.store + }.should_not change DemanderStatus, :count + end + it 'åæã®æ¤è¨¼ã¯å¤±æãã¦ãã' do + r = @demander.store + r.should be_false + end + end + end + + describe 'åååæ¢ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0 + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + context 'äºåãã§ãã¯ãã' do + it '貸ä¸ç¶æ³ã«åååæ¢ãä¾é ¼ãã¦ãã' do + DemanderStatus.any_instance.stub(:stop).with(any_args).and_return(true) + DemanderStatus.any_instance.should_receive(:stop).with(any_args).exactly(1) + r = @demander.stop + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'Trueãè¿ã' do + DemanderStatus.any_instance.stub(:stop).with(any_args).and_return(true) + r = @demander.stop + r.should be_true + end + end + end +end diff --git a/spec/models/demander_status_spec.rb b/spec/models/demander_status_spec.rb new file mode 100644 index 00000000..011a7b03 --- /dev/null +++ b/spec/models/demander_status_spec.rb @@ -0,0 +1,754 @@ +# -*- encoding: utf-8 -*- +#貸ä¸ç¶æ³ +require 'spec_helper' + +describe DemanderStatus do + before do + @admin = FactoryGirl.create :admin + @sp = FactoryGirl.create :system_picture + @lg = FactoryGirl.create :license_group + @license = FactoryGirl.create :license, :license_group_id => @lg.id, :system_picture_id => @sp.id + @user = FactoryGirl.create :user_yas + @author = @user.author #ã¦ã¼ã¶ä½ææã«é£åãã¦ä½æããã + @demand_user = FactoryGirl.create :demand_user + end + describe 'æ¤è¨¼ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.build :demander_status + end + + context 'ãªã¼ã½ããã¯ã¹ãªãã¼ã¿ã®ã¨ã' do + it 'ä¸éãã¼ã¿ãéã' do + @ds.receive_hour1 = -99999 + @ds.receive_hour2 = -99999 + @ds.should be_valid + end + it 'ä¸éãã¼ã¿ãéã' do + @ds.receive_hour1 = 99999 + @ds.receive_hour2 = 99999 + @ds.should be_valid + end + end + context 'requested_atãæ¤è¨¼ããã¨ã' do + end + context 'rejected_atãæ¤è¨¼ããã¨ã' do + end + context 'approved_atãæ¤è¨¼ããã¨ã' do + end + context 'tokenãæ¤è¨¼ããã¨ã' do + end + context 'receive_hour1ãæ¤è¨¼ããã¨ã' do + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @ds.receive_hour1 = 'a' + @ds.should_not be_valid + end + end + context 'receive_hour2ãæ¤è¨¼ããã¨ã' do + it 'æ°å¤ã§ãªããã°å¤±æãã' do + @ds.receive_hour2 = 'a' + @ds.should_not be_valid + end + end + end + + describe 'ããã©ã«ãå¤è£å ã«æ¼ãã¦' do + it 'defined' do + @ds = FactoryGirl.build :demander_status + @ds.supply_default + end + end + + describe 'ä¸æ¸ãè£å ã«æ¼ãã¦' do + it 'defined' do + @ds = FactoryGirl.build :demander_status + @ds.overwrite + end + end + + describe 'ææå¤å®ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + end + it '管çè ãªãyes' do + @ds.own?(@admin).should == true + end + it 'ä½å®¶ãªãno' do + @ds.own?(@author).should == false + end + it 'ãã©ã¡ã¼ã¿ã管çè ã§ãªããªãno' do + @ds.own?(nil).should == false + end + end + + describe 'é²è¦§è¨±å¯ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + end + it '管çè ãªã許å¯ãã' do + r = @ds.visible?(@admin) + r.should == true + end + it 'ä½å®¶ãªã許å¯ããªã' do + r = @ds.visible?(@author) + r.should == false + end + it 'ãã以å¤ã®ã¨ãä¸è¨±å¯ãè¿ãã' do + r = @ds.visible?(nil) + r.should be_false + end + end + + describe 'ç¶æ ã«æ¼ãã¦' do + before do + end + context 'ç³è«æ¥æãã»ããããã¦ããªãã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => nil, :approved_at => Time.now + end + it 'å¾ æ©ä¸0ãè¿ã' do + r = @ds.status + r.should eq 0 + end + end + context 'ç³è«æ¥æã¨å¦æ±ºæ¥æãã»ããããã¦ããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :rejected_at => Time.now + end + it 'å¦æ±º 1ãè¿ã' do + r = @ds.status + r.should eq 1 + end + end + context 'ç³è«æ¥æãã»ããããã¦ãã¦ãå¯æ±ºæ¥æã¨å¦æ±ºæ¥æãã»ããããã¦ããªãã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + end + it 'ç³è«ä¸ 2ãè¿ã' do + r = @ds.status + r.should eq 2 + end + end + context 'ç³è«æ¥æã¨å¯æ±ºæ¥æãã»ããããã¦ããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now + end + it '貸ä¸ä¸ 3ãè¿ã' do + r = @ds.status + r.should eq 3 + end + end + end + + describe 'ä¸è¦§åå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :name => "6" + end + context 'pageè£æ£ã«ã¤ãã¦' do + it 'æååããæ°å¤ã«å¤æããã' do + DemanderStatus.page('8').should eq 8 + end + it 'nilã®å ´åã¯1ã«ãªã' do + DemanderStatus.page().should eq 1 + end + it '0以ä¸ã®å ´åã¯1ã«ãªã' do + DemanderStatus.page('0').should eq 1 + end + end + context 'page_sizeè£æ£ã«ã¤ãã¦' do + it 'æååããæ°å¤ã«å¤æããã' do + DemanderStatus.page_size('7').should eq 7 + end + it 'nilã®å ´åã¯DemanderStatus.default_page_sizeã«ãªã' do + DemanderStatus.page_size().should eq DemanderStatus.default_page_size + end + it '0以ä¸ã®å ´åã¯DemanderStatus.default_page_sizeã«ãªã' do + DemanderStatus.page_size('0').should eq DemanderStatus.default_page_size + end + it 'DemanderStatus.max_page_sizeãè¶ ããå ´åã¯DemanderStatus.max_page_sizeã«ãªã' do + DemanderStatus.page_size('1000').should eq DemanderStatus.max_page_size + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ä¸è¦§åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + DemanderStatus.stub(:list_opt).with(any_args).and_return({:include => {:demander => {}} }) + DemanderStatus.should_receive(:list_opt).with(any_args).exactly(1) + r = DemanderStatus.list + end + end + it 'ãªã¹ããè¿ã' do + r = DemanderStatus.list + r.should eq [@ds] + end + it '管çåã§ä¸¦ãã§ãã' do + v = FactoryGirl.create :demander_status + vd = FactoryGirl.create :demander, :demander_status_id => v.id, :demand_user_id => @demand_user.id, :name => "0" + r = DemanderStatus.list + r.should eq [v, @ds] + end + context 'DBã«5件ãã£ã¦1ãã¼ã¸ã®ä»¶æ°ã2件ã«å¤ããã¨ãã¦' do + before do + @ds2 = FactoryGirl.create :demander_status + @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5" + @ds3 = FactoryGirl.create :demander_status + @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4" + @ds4 = FactoryGirl.create :demander_status + @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3" + @ds5 = FactoryGirl.create :demander_status + @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2" + DemanderStatus.stub(:default_page_size).and_return(2) + end + it 'é常ã¯2件ãè¿ã' do + r = DemanderStatus.list + r.should have(2).items + end + it 'page=1ãªãæ«å°¾2件ãè¿ã' do + #管çåã§ä¸¦ãã§ãã + r = DemanderStatus.list(1) + r.should eq [@ds5, @ds4] + end + it 'page=2ãªãä¸é2件ãè¿ã' do + r = DemanderStatus.list(2) + r.should eq [@ds3, @ds2] + end + it 'page=3ãªãå é 1件ãè¿ã' do + r = DemanderStatus.list(3) + r.should eq [@ds] + end + end + context 'DBã«5件ãã£ã¦1ãã¼ã¸ã®ä»¶æ°ã2件ã«å¤ããã¨ãã¦' do + before do + @ds2 = FactoryGirl.create :demander_status + @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5" + @ds3 = FactoryGirl.create :demander_status + @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4" + @ds4 = FactoryGirl.create :demander_status + @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3" + @ds5 = FactoryGirl.create :demander_status + @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2" + DemanderStatus.stub(:default_page_size).and_return(2) + end + it '件æ°0ã¯å ¨ä»¶(5件)ãè¿ã' do + r = DemanderStatus.list 5, 0 + r.should have(5).items + end + end + end + describe 'ç³è«ä¸ä¸è¦§åå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id, :name => "6" + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'ä¸è¦§åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + DemanderStatus.stub(:list_opt).with(any_args).and_return({:include => {:demander => {}} }) + DemanderStatus.should_receive(:list_opt).with(any_args).exactly(1) + r = DemanderStatus.requested_list + end + end + it 'ãªã¹ããè¿ã' do + r = DemanderStatus.requested_list + r.should eq [@ds] + end + it '管çåã§ä¸¦ãã§ãã' do + v = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + vd = FactoryGirl.create :demander, :demander_status_id => v.id, :demand_user_id => @demand_user.id, :name => "0" + r = DemanderStatus.requested_list + r.should eq [v, @ds] + end + context 'DBã«5件ãã£ã¦1ãã¼ã¸ã®ä»¶æ°ã2件ã«å¤ããã¨ãã¦' do + before do + @ds2 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5" + @ds3 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4" + @ds4 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3" + @ds5 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2" + DemanderStatus.stub(:default_page_size).and_return(2) + end + it 'é常ã¯2件ãè¿ã' do + r = DemanderStatus.requested_list + r.should have(2).items + end + it 'page=1ãªãæ«å°¾2件ãè¿ã' do + #管çåã§ä¸¦ãã§ãã + r = DemanderStatus.requested_list(1) + r.should eq [@ds5, @ds4] + end + it 'page=2ãªãä¸é2件ãè¿ã' do + r = DemanderStatus.requested_list(2) + r.should eq [@ds3, @ds2] + end + it 'page=3ãªãå é 1件ãè¿ã' do + r = DemanderStatus.requested_list(3) + r.should eq [@ds] + end + end + context 'DBã«5件ãã£ã¦1ãã¼ã¸ã®ä»¶æ°ã2件ã«å¤ããã¨ãã¦' do + before do + @ds2 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander2 = FactoryGirl.create :demander, :demander_status_id => @ds2.id, :demand_user_id => @demand_user.id, :name => "5" + @ds3 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander3 = FactoryGirl.create :demander, :demander_status_id => @ds3.id, :demand_user_id => @demand_user.id, :name => "4" + @ds4 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander4 = FactoryGirl.create :demander, :demander_status_id => @ds4.id, :demand_user_id => @demand_user.id, :name => "3" + @ds5 = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => nil, :rejected_at => nil + @demander5 = FactoryGirl.create :demander, :demander_status_id => @ds5.id, :demand_user_id => @demand_user.id, :name => "2" + DemanderStatus.stub(:default_page_size).and_return(2) + end + it '件æ°0ã¯å ¨ä»¶(5件)ãè¿ã' do + r = DemanderStatus.requested_list 5, 0 + r.should have(5).items + end + end + end + describe 'ä¸è¦§åå¾ãªãã·ã§ã³ã«æ¼ãã¦' do + it 'includeãã¼ãå«ãã§ãã' do + r = DemanderStatus.list_opt + r.has_key?(:include).should be_true + end + it '1ã¤ã®é ç®ãå«ãã§ãã' do + r = DemanderStatus.list_opt[:include] + r.should have(1).items + end + it 'åæãå«ãã§ãã' do + r = DemanderStatus.list_opt[:include] + r.has_key?(:demander).should be_true + end + end + describe 'jsonä¸è¦§åºåãªãã·ã§ã³ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'åæãå«ãã§ãã' do + r = DemanderStatus.list.to_json DemanderStatus.list_json_opt + j = JSON.parse r + i = j.first + i.has_key?('demander').should be_true + end + end + + describe 'åä½åå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'åä½åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + DemanderStatus.stub(:show_opt).with(any_args).and_return({}) + DemanderStatus.should_receive(:show_opt).with(any_args).exactly(1) + r = DemanderStatus.show @ds.id, @admin + end + it 'é²è¦§è¨±å¯ãåãåããã¦ãã' do + DemanderStatus.any_instance.stub(:visible?).with(any_args).and_return(true) + DemanderStatus.any_instance.should_receive(:visible?).with(any_args).exactly(1) + r = DemanderStatus.show @ds.id, @admin + end + end + it 'æå®ã®è²¸ä¸ç¶æ³ãè¿ã' do + r = DemanderStatus.show @ds.id, @admin + r.should eq @ds + end + context 'é²è¦§è¨±å¯ãåºãªãã£ãã¨ã' do + it '403Forbiddenä¾å¤ãè¿ã' do + DemanderStatus.any_instance.stub(:visible?).and_return(false) + lambda{ + DemanderStatus.show @ds.id, @admin + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'åå¨ããªã貸ä¸ç¶æ³ãéããã¨ããã¨ã' do + it '404RecordNotFoundä¾å¤ãè¿ã' do + lambda{ + DemanderStatus.show 110, @admin + }.should raise_error(ActiveRecord::RecordNotFound) + end + end + end + + describe 'ç·¨éåå¾ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id, :demand_user_id => @demand_user.id + end + context 'ã¤ã¤ããªãçµããã¨ã' do + it 'åä½åå¾ãªãã·ã§ã³ãå©ç¨ãã¦ãã' do + DemanderStatus.stub(:show_opt).with(any_args).and_return({}) + DemanderStatus.should_receive(:show_opt).with(any_args).exactly(1) + r = DemanderStatus.edit @ds.id, @admin + end + it 'ææå¤å®ãåãåããã¦ãã' do + DemanderStatus.any_instance.stub(:own?).with(any_args).and_return(true) + DemanderStatus.any_instance.should_receive(:own?).with(any_args).exactly(1) + r = DemanderStatus.edit @ds.id, @admin + end + end + it 'æå®ã®è²¸ä¸ç¶æ³ãè¿ã' do + DemanderStatus.any_instance.stub(:own?).and_return(true) + r = DemanderStatus.edit @ds.id, @admin + r.should eq @ds + end + context '権éããªãã£ãã¨ã' do + it '403Forbiddenä¾å¤ãè¿ã' do + DemanderStatus.any_instance.stub(:own?).and_return(false) + lambda{ + DemanderStatus.edit @ds.id, @admin + }.should raise_error(ActiveRecord::Forbidden) + end + end + context 'åå¨ããªã貸ä¸ç¶æ³ãéããã¨ããã¨ã' do + it '404RecordNotFoundä¾å¤ãè¿ã' do + lambda{ + DemanderStatus.edit 110, @admin + }.should raise_error(ActiveRecord::RecordNotFound) + end + end + end + describe 'åä½åå¾ãªãã·ã§ã³ã«æ¼ãã¦' do + it 'includeãã¼ãå«ãã§ãã' do + r = DemanderStatus.show_opt + r.has_key?(:include).should be_true + end + it '1ã¤ã®é ç®ãå«ãã§ãã' do + r = DemanderStatus.show_opt[:include] + r.should have(1).items + end + it 'åæãå«ãã§ãã' do + r = DemanderStatus.show_opt[:include] + r.has_key?(:demander).should be_true + end + end + describe 'jsonåä½åºåãªãã·ã§ã³ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'åæãå«ãã§ãã' do + r = DemanderStatus.show(@ds.id, @admin).to_json DemanderStatus.show_json_opt + j = JSON.parse r + i = j + i.has_key?('demander').should be_true + end + end + + describe 'ååç³è«ã«æ¼ãã¦' do + before do + end + context 'å¾ æ©ä¸ç¶æ ãã¤ã¤ããªãçµããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'å¦æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.request + @ds.rejected_at.should be_nil + end + it 'å¯æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.request + @ds.approved_at.should be_nil + end + it 'ç³è«æ¥æã«ç¾å¨æå»ãã»ãããã' do + r = @ds.request + @ds.requested_at.should_not be_nil + end + it 'Trueãè¿ã' do + r = @ds.request + r.should be_true + end + end + context 'å¦æ±ºç¶æ ãã¤ã¤ããªãçµããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :rejected_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'å¦æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.request + @ds.rejected_at.should be_nil + end + it 'å¯æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.request + @ds.approved_at.should be_nil + end + it 'ç³è«æ¥æã«ç¾å¨æå»ãã»ãããã' do + r = @ds.request + @ds.requested_at.should_not be_nil + end + it 'Trueãè¿ã' do + r = @ds.request + r.should be_true + end + end + context 'ç¶æ ãç³è«ä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'Falseãè¿ã' do + r = @ds.request + r.should be_false + end + it 'ç³è«ä¸2ãè¿ã' do + r = @ds.request + @ds.status.should eq 2 + end + end + context 'ç¶æ ã貸ä¸ä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'Falseãè¿ã' do + r = @ds.request + r.should be_false + end + it '貸ä¸ä¸3ãè¿ã' do + r = @ds.request + @ds.status.should eq 3 + end + end + end + + describe '貸ä¸åæ¢ã«æ¼ãã¦' do + before do + end + context 'ç¶æ ãå¾ æ©ä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'Falseãè¿ã' do + r = @ds.reject + r.should be_false + end + it 'å¾ æ©ä¸0ãè¿ã' do + r = @ds.reject + @ds.status.should eq 0 + end + end + context 'ç¶æ ãå¦æ±ºä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :rejected_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'Falseãè¿ã' do + r = @ds.reject + r.should be_false + end + it 'å¦æ±ºä¸1ãè¿ã' do + r = @ds.reject + @ds.status.should eq 1 + end + end + context 'ç³è«ä¸ã®ç¶æ ãã¤ã¤ããªãçµããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'å¦æ±ºæ¥æãã»ãããã' do + r = @ds.reject + @ds.rejected_at.should_not be_nil + end + it 'å¯æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.reject + @ds.approved_at.should be_nil + end + it 'åæã®èªè¨¼ãã¼ã¯ã³ãã¯ãªã¢ãã' do + DemandUser.any_instance.stub(:delete_token).with(any_args).and_return(true) + DemandUser.any_instance.should_receive(:delete_token).with(any_args).exactly(1) + r = @ds.reject + end + it 'Trueãè¿ã' do + r = @ds.reject + r.should be_true + end + end + context 'ç¶æ ã貸ä¸ä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'å¦æ±ºæ¥æãã»ãããã' do + r = @ds.reject + @ds.rejected_at.should_not be_nil + end + it 'å¯æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.reject + @ds.approved_at.should be_nil + end + it 'åæã®èªè¨¼ãã¼ã¯ã³ãã¯ãªã¢ãã' do + DemandUser.any_instance.stub(:delete_token).with(any_args).and_return(true) + DemandUser.any_instance.should_receive(:delete_token).with(any_args).exactly(1) + r = @ds.reject + end + it 'Trueãè¿ã' do + r = @ds.reject + r.should be_true + end + end + end + + describe '貸ä¸æ¿èªã«æ¼ãã¦' do + before do + end + context 'ç¶æ ãå¾ æ©ä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'Falseãè¿ã' do + r = @ds.approve 1,13 + r.should be_false + end + it 'å¾ æ©ä¸0ãè¿ã' do + r = @ds.approve 1,13 + @ds.status.should eq 0 + end + end + context 'ç¶æ ãå¦æ±ºä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :rejected_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'å¯æ±ºæ¥æãã»ãããã' do + r = @ds.approve 1,13 + @ds.approved_at.should_not be_nil + end + it 'å·¡åæ1ã¨å·¡åæ2ãã»ãããã' do + r = @ds.approve 1,13 + @ds.receive_hour1.should_not be_nil + @ds.receive_hour2.should_not be_nil + end + it 'å¦æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.approve 1,13 + @ds.rejected_at.should be_nil + end + it 'åæã®èªè¨¼ãã¼ã¯ã³ãã»ãããã' do + DemandUser.any_instance.stub(:create_token).with(any_args).and_return(true) + DemandUser.any_instance.should_receive(:create_token).with(any_args).exactly(1) + r = @ds.approve 1,13 + end + it 'Trueãè¿ã' do + r = @ds.approve 1,13 + r.should be_true + end + end + context 'ç³è«ä¸ã®ç¶æ ãã¤ã¤ããªãçµããã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'å¯æ±ºæ¥æãã»ãããã' do + r = @ds.approve 1,13 + @ds.approved_at.should_not be_nil + end + it 'å·¡åæ1ã¨å·¡åæ2ãã»ãããã' do + r = @ds.approve 1,13 + @ds.receive_hour1.should_not be_nil + @ds.receive_hour2.should_not be_nil + end + it 'å¦æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.approve 1,13 + @ds.rejected_at.should be_nil + end + it 'åæã®èªè¨¼ãã¼ã¯ã³ãã»ãããã' do + DemandUser.any_instance.stub(:create_token).with(any_args).and_return(true) + DemandUser.any_instance.should_receive(:create_token).with(any_args).exactly(1) + r = @ds.approve 1,13 + end + it 'Trueãè¿ã' do + r = @ds.approve 1,13 + r.should be_true + end + end + context 'ç¶æ ã貸ä¸ä¸ã®ã¨ã' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + it 'Falseãè¿ã' do + r = @ds.approve 1,13 + r.should be_false + end + it '貸ä¸ä¸3ãè¿ã' do + r = @ds.approve 1,13 + @ds.status.should eq 3 + end + end + end + + describe 'åååæ¢ã«æ¼ãã¦' do + before do + @ds = FactoryGirl.create :demander_status, :requested_at => Time.now, :approved_at => Time.now, :rejected_at => Time.now, :receive_hour1 => 0, :receive_hour2 => 0 + @demander = FactoryGirl.create :demander, :demander_status_id => @ds.id + end + context 'äºåãã§ãã¯ãã' do + it 'åæã®èªè¨¼ãã¼ã¯ã³ã«ã¯ãªã¢ãä¾é ¼ãã¦ãã' do + DemandUser.any_instance.stub(:delete_token).with(any_args).and_return(true) + DemandUser.any_instance.should_receive(:delete_token).with(any_args).exactly(1) + r = @ds.stop + end + end + context 'ã¤ã¤ããªãçµããã¨ã' do + before do + DemandUser.any_instance.stub(:delete_token).with(any_args).and_return(true) + end + it 'ç³è«æ¥æãã¯ãªã¢ãã' do + r = @ds.stop + @ds.approved_at.should be_nil + end + it 'å¯æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.stop + @ds.approved_at.should be_nil + end + it 'å¦æ±ºæ¥æãã¯ãªã¢ãã' do + r = @ds.stop + @ds.rejected_at.should be_nil + end + it 'å·¡åæ1ã¨å·¡åæ2ãã¯ãªã¢ãã' do + r = @ds.stop + @ds.receive_hour1.should be_nil + @ds.receive_hour2.should be_nil + end + it 'Trueãè¿ã' do + r = @ds.stop + r.should be_true + end + end + context 'èªèº«ã®ä¿åã«å¤±æããã¨ã' do + before do + DemanderStatus.any_instance.stub(:save).with(any_args).and_return(false) + end + it 'ãã¼ã«ããã¯ãã' do + r = @ds.stop + @ds.reload + @ds.requested_at.should_not be_nil + @ds.approved_at.should_not be_nil + @ds.receive_hour2.should_not be_nil + end + it 'Falseãè¿ã' do + r = @ds.stop + r.should be_false + end + end + context 'åæã¢ã«ã¦ã³ãã®ä¿åã«å¤±æããã¨ã' do + before do + DemandUser.any_instance.stub(:delete_token).with(any_args).and_return(false) + end + it 'ãã¼ã«ããã¯ãã' do + r = @ds.stop + @ds.reload + @ds.requested_at.should_not be_nil + @ds.approved_at.should_not be_nil + @ds.receive_hour2.should_not be_nil + end + it 'Falseãè¿ã' do + r = @ds.stop + r.should be_false + end + end + end +end + -- 2.11.0