This was done to improve testibility but it also cleans up the codepull/58/head
parent
0ff995f800
commit
e225aa6032
@ -0,0 +1,50 @@ |
||||
require 'spec_helper' |
||||
|
||||
describe OpenProject::Acts::Watchable::Routes do |
||||
let(:request) { Struct.new(:type, :id) do |
||||
def path_parameters |
||||
{ :object_id => id, |
||||
:object_type => type } |
||||
end |
||||
end.new(type, id) } |
||||
|
||||
describe "matches?" do |
||||
shared_examples_for "watched model" do |
||||
|
||||
describe "for a valid id string" do |
||||
let(:id) { "1" } |
||||
|
||||
it "should be true" do |
||||
OpenProject::Acts::Watchable::Routes.matches?(request).should be_true |
||||
end |
||||
end |
||||
|
||||
describe "for an invalid id string" do |
||||
let(:id) { "schmu" } |
||||
|
||||
it "should not be false" do |
||||
OpenProject::Acts::Watchable::Routes.matches?(request).should be_false |
||||
end |
||||
end |
||||
end |
||||
|
||||
['issues', 'news', 'news', 'boards', 'messages', 'wikis', 'wiki_pages'].each do |type| |
||||
describe "routing #{type} watches" do |
||||
let(:type) { type } |
||||
|
||||
it_should_behave_like "watched model" |
||||
end |
||||
|
||||
end |
||||
|
||||
describe "for a non watched model" do |
||||
let(:type) { "schmu" } |
||||
let(:id) { "4" } |
||||
|
||||
it "should be false" do |
||||
OpenProject::Acts::Watchable::Routes.matches?(request).should be_false |
||||
end |
||||
end |
||||
end |
||||
end |
||||
|
@ -0,0 +1,53 @@ |
||||
require 'spec_helper' |
||||
|
||||
describe WatchersController do |
||||
shared_examples_for "watched model" do |
||||
before do |
||||
OpenProject::Acts::Watchable::Routes.should_receive(:matches?).and_return(true) |
||||
end |
||||
|
||||
|
||||
it "should connect GET /:object_type/:object_id/watch to watchers#watch" do |
||||
post("/#{type}/1/watch").should route_to( :controller => 'watchers', |
||||
:action => 'watch', |
||||
:object_type => type, |
||||
:object_id => '1' ) |
||||
end |
||||
|
||||
it "should connect DELETE /:object_type/:id/unwatch to watchers#unwatch" do |
||||
|
||||
delete("/#{type}/1/unwatch").should route_to( :controller => 'watchers', |
||||
:action => 'unwatch', |
||||
:object_type => type, |
||||
:object_id => '1' ) |
||||
end |
||||
|
||||
it "should connect GET /:object_type/:id/watchers/new to watchers#new" do |
||||
get("/#{type}/1/watchers/new").should route_to( :controller => 'watchers', |
||||
:action => 'new', |
||||
:object_type => type, |
||||
:object_id => '1' ) |
||||
end |
||||
|
||||
it "should connect POST /:object_type/:object_id/watchers to watchers#create" do |
||||
post("/#{type}/1/watch").should route_to( :controller => 'watchers', |
||||
:action => 'watch', |
||||
:object_type => type, |
||||
:object_id => '1' ) |
||||
end |
||||
end |
||||
|
||||
['issues', 'news', 'news', 'boards', 'messages', 'wikis', 'wiki_pages'].each do |type| |
||||
describe "routing #{type} watches" do |
||||
let(:type) { type } |
||||
|
||||
it_should_behave_like "watched model" |
||||
end |
||||
end |
||||
|
||||
it "should connect DELETE watchers/:id to watchers#destroy" do |
||||
delete("/watchers/1").should route_to( :controller => 'watchers', |
||||
:action => 'destroy', |
||||
:id => '1' ) |
||||
end |
||||
end |
Loading…
Reference in new issue