popolo 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +65 -7
- data/app/assets/javascripts/popolo.js +1 -0
- data/app/assets/stylesheets/popolo/bootstrap.min.scss +7 -0
- data/app/assets/stylesheets/popolo/main.css.scss +14 -0
- data/app/assets/stylesheets/popolo.css +3 -0
- data/app/controllers/popolo/memberships_controller.rb +7 -0
- data/app/controllers/popolo/organizations_controller.rb +0 -39
- data/app/controllers/popolo/people_controller.rb +1 -6
- data/app/controllers/popolo/posts_controller.rb +1 -1
- data/app/helpers/popolo_helper.rb +0 -8
- data/app/models/popolo/area.rb +20 -12
- data/app/models/popolo/contact_detail.rb +22 -0
- data/app/models/popolo/count.rb +24 -0
- data/app/models/popolo/date_string.rb +23 -0
- data/app/models/popolo/group_result.rb +15 -0
- data/app/models/popolo/identifier.rb +1 -1
- data/app/models/popolo/link.rb +7 -3
- data/app/models/popolo/membership.rb +34 -9
- data/app/models/popolo/motion.rb +37 -0
- data/app/models/popolo/organization.rb +37 -16
- data/app/models/popolo/other_name.rb +5 -5
- data/app/models/popolo/person.rb +57 -27
- data/app/models/popolo/post.rb +27 -13
- data/app/models/popolo/vote.rb +28 -0
- data/app/models/popolo/vote_event.rb +35 -0
- data/app/views/popolo/contact_details/_contact_detail.html.erb +17 -0
- data/app/views/popolo/identifiers/_identifier.html.erb +2 -0
- data/app/views/popolo/links/_link.html.erb +1 -0
- data/app/views/popolo/memberships/show.html.erb +81 -0
- data/app/views/popolo/organizations/index.html.erb +16 -1
- data/app/views/popolo/organizations/show.html.erb +146 -1
- data/app/views/popolo/other_names/other_name.html.erb +9 -0
- data/app/views/popolo/people/show.html.erb +120 -0
- data/app/views/popolo/posts/show.html.erb +90 -0
- data/config/routes.rb +4 -12
- data/lib/generators/popolo_generator.rb +4 -0
- data/lib/popolo/initializers/pupa_compat.rb +11 -0
- data/lib/popolo/version.rb +1 -1
- data/lib/popolo.rb +17 -5
- data/spec/controllers/popolo/memberships_controller_spec.rb +16 -0
- data/spec/controllers/popolo/organizations_controller_spec.rb +1 -47
- data/spec/controllers/popolo/people_controller_spec.rb +0 -14
- data/spec/controllers/popolo/posts_controller_spec.rb +0 -8
- data/spec/dummy/app/assets/stylesheets/application.css +1 -0
- data/spec/dummy/app/models/cat.rb +0 -3
- data/spec/dummy/app/models/dog.rb +0 -7
- data/spec/dummy/app/views/layouts/application.html.erb +2 -0
- data/spec/dummy/config/locales/en.yml +30 -0
- data/spec/dummy/config/routes.rb +1 -1
- data/spec/dummy/log/test.log +8670 -48801
- data/spec/factories.rb +3 -8
- data/spec/models/popolo/{source_spec.rb → contact_detail_spec.rb} +2 -2
- data/spec/models/popolo/count_spec.rb +7 -0
- data/spec/models/popolo/date_string_spec.rb +121 -0
- data/spec/models/popolo/group_result_spec.rb +7 -0
- data/spec/models/popolo/membership_spec.rb +1 -17
- data/spec/models/popolo/motion_spec.rb +5 -0
- data/spec/models/popolo/organization_spec.rb +1 -19
- data/spec/models/popolo/other_name_spec.rb +1 -17
- data/spec/models/popolo/person_spec.rb +23 -19
- data/spec/models/popolo/post_spec.rb +1 -3
- data/spec/models/popolo/vote_event_spec.rb +4 -0
- data/spec/models/popolo/vote_spec.rb +4 -0
- data/spec/popolo_spec.rb +65 -0
- data/spec/routing/popolo/memberships_routing_spec.rb +11 -0
- data/spec/routing/popolo/organizations_routing_spec.rb +1 -19
- data/spec/routing/popolo/people_routing_spec.rb +1 -11
- data/spec/routing/popolo/posts_routing_spec.rb +1 -7
- data/spec/spec_helper.rb +6 -1
- data/spec/support/shared_examples.rb +19 -0
- metadata +99 -109
- data/app/assets/javascripts/popolo/application.js +0 -13
- data/app/assets/stylesheets/popolo/application.css +0 -13
- data/app/controllers/popolo/areas_controller.rb +0 -43
- data/app/models/popolo/address.rb +0 -27
- data/app/models/popolo/event.rb +0 -46
- data/app/models/popolo/source.rb +0 -29
- data/app/views/popolo/addresses/_address.html.erb +0 -16
- data/app/views/popolo/areas/index.html.erb +0 -1
- data/app/views/popolo/areas/show.html.erb +0 -1
- data/app/views/popolo/areas_or_organizations/_breadcrumb.html.erb +0 -13
- data/app/views/popolo/areas_or_organizations/_index.html.erb +0 -31
- data/app/views/popolo/areas_or_organizations/_show.html.erb +0 -18
- data/app/views/popolo/organizations/post.html.erb +0 -27
- data/app/views/popolo/organizations/posts.html.erb +0 -23
- data/app/views/popolo/people/index.html.erb +0 -0
- data/app/views/popolo/posts/index.html.erb +0 -0
- data/lib/popolo/mixins/eventable.rb +0 -15
- data/lib/popolo/mixins/sluggable.rb +0 -66
- data/spec/controllers/popolo/areas_controller_spec.rb +0 -53
- data/spec/dummy/log/development.log +0 -6
- data/spec/models/popolo/address_spec.rb +0 -4
- data/spec/models/popolo/event_spec.rb +0 -7
- data/spec/popolo/mixins/sluggable_spec.rb +0 -153
- data/spec/routing/popolo/areas_routing_spec.rb +0 -25
@@ -1,16 +0,0 @@
|
|
1
|
-
<section>
|
2
|
-
<% if address.type? %>
|
3
|
-
<header>
|
4
|
-
<%=t address.type, default: address.type %>
|
5
|
-
</header>
|
6
|
-
<% end %>
|
7
|
-
<% if address.voice? %>
|
8
|
-
<p>Phone: <%= address.voice %></p>
|
9
|
-
<% end %>
|
10
|
-
<% if address.fax? %>
|
11
|
-
<p>Fax: <%= address.fax %></p>
|
12
|
-
<% end %>
|
13
|
-
<% if address.address? %>
|
14
|
-
<%= simple_format address.address %>
|
15
|
-
<% end %>
|
16
|
-
</section>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render partial: 'popolo/areas_or_organizations/index', locals: {collection: @areas, object: @area} %>
|
@@ -1 +0,0 @@
|
|
1
|
-
<%= render partial: 'popolo/areas_or_organizations/show', locals: {object: @area} %>
|
@@ -1,13 +0,0 @@
|
|
1
|
-
<nav>
|
2
|
-
<ul class="breadcrumb">
|
3
|
-
<li><%= link_to resource_collection_name.capitalize, collection_path %> <span class="divider">/</span></li>
|
4
|
-
<% ancestors = object.ancestors %>
|
5
|
-
<% ancestors.each_with_index do |ancestor,index| %>
|
6
|
-
<li>
|
7
|
-
<%= link_to ancestor.name, nested_resource_path(ancestors[0..index]) %>
|
8
|
-
<span class="divider">/</span>
|
9
|
-
</li>
|
10
|
-
<% end %>
|
11
|
-
<li class="active"><%= object.name %></li>
|
12
|
-
</ul>
|
13
|
-
</nav>
|
@@ -1,31 +0,0 @@
|
|
1
|
-
<% if object %>
|
2
|
-
<nav>
|
3
|
-
<ul class="breadcrumb">
|
4
|
-
<li><%= link_to resource_collection_name.capitalize, collection_path %> <span class="divider">/</span></li>
|
5
|
-
<% ancestors = object.ancestors %>
|
6
|
-
<% ancestors.each_with_index do |ancestor,index| %>
|
7
|
-
<li>
|
8
|
-
<%= link_to ancestor.name, nested_resources_path(ancestors[0..index]) %>
|
9
|
-
<span class="divider">/</span>
|
10
|
-
</li>
|
11
|
-
<% end %>
|
12
|
-
<li class="active"><%= object.name %></li>
|
13
|
-
</ul>
|
14
|
-
</nav>
|
15
|
-
<% end %>
|
16
|
-
|
17
|
-
<% unless collection.empty? %>
|
18
|
-
<% groups = collection.asc(:sort_name).group_by(&:classification) %>
|
19
|
-
<% groups.each do |classification,documents| %>
|
20
|
-
<section>
|
21
|
-
<header>
|
22
|
-
<h1><%= t(classification, scope: [:popolo, resource_collection_name, :classifications]) %></h1>
|
23
|
-
</header>
|
24
|
-
<ol>
|
25
|
-
<% documents.each do |document| %>
|
26
|
-
<li><%= link_to document.name, nested_resources_path([object, document].compact) %></li>
|
27
|
-
<% end %>
|
28
|
-
</ol>
|
29
|
-
</section>
|
30
|
-
<% end %>
|
31
|
-
<% end %>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
<%= render partial: 'popolo/areas_or_organizations/breadcrumb', locals: {object: object} %>
|
2
|
-
|
3
|
-
<% collection = object.children %>
|
4
|
-
<% unless collection.empty? %>
|
5
|
-
<% groups = collection.asc(:sort_name).group_by(&:classification) %>
|
6
|
-
<% groups.each do |classification,documents| %>
|
7
|
-
<section>
|
8
|
-
<header>
|
9
|
-
<h1><%= t(classification, scope: [:popolo, resource_collection_name, :classifications]) %></h1>
|
10
|
-
</header>
|
11
|
-
<ol>
|
12
|
-
<% documents.each do |document| %>
|
13
|
-
<li><%= link_to document.name, nested_resource_path([object, document]) %></li>
|
14
|
-
<% end %>
|
15
|
-
</ol>
|
16
|
-
</section>
|
17
|
-
<% end %>
|
18
|
-
<% end %>
|
@@ -1,27 +0,0 @@
|
|
1
|
-
<%= render partial: 'popolo/areas_or_organizations/breadcrumb', locals: {object: @organization} %>
|
2
|
-
|
3
|
-
<section>
|
4
|
-
<div class="media">
|
5
|
-
<% if @post.person && @post.person.image? %>
|
6
|
-
<span class="pull-left">
|
7
|
-
<%= image_tag(@post.person.image, class: 'media-object') %>
|
8
|
-
</span>
|
9
|
-
<% end %>
|
10
|
-
<div class="media-body">
|
11
|
-
<h4 class="media-heading"><%= @post.name %></h4>
|
12
|
-
<% if @post.person %>
|
13
|
-
<%= @post.person.name %>
|
14
|
-
<% end %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
<% if @post.person && @post.person.summary? %>
|
18
|
-
<p><%= @post.person.summary %></p>
|
19
|
-
<% end %>
|
20
|
-
|
21
|
-
<aside>
|
22
|
-
<% if @post.person && @post.person.email? %>
|
23
|
-
<p>Email: <%= mail_to @post.person.email %></p>
|
24
|
-
<% end %>
|
25
|
-
<%= render @post.addresses %>
|
26
|
-
</aside>
|
27
|
-
</section>
|
@@ -1,23 +0,0 @@
|
|
1
|
-
<%= render partial: 'popolo/areas_or_organizations/breadcrumb', locals: {object: @organization} %>
|
2
|
-
|
3
|
-
<section>
|
4
|
-
<h1><%= @organization.name %></h1>
|
5
|
-
|
6
|
-
<ol class="media-list">
|
7
|
-
<% @posts.asc(:sort_name).each do |post| %>
|
8
|
-
<li class="media">
|
9
|
-
<% if post.person && post.person.image? %>
|
10
|
-
<span class="pull-left">
|
11
|
-
<%= image_tag(post.person.image, class: 'image-object') %>
|
12
|
-
</span>
|
13
|
-
<% end %>
|
14
|
-
<div class="media-body">
|
15
|
-
<h4 class="media-heading"><%= link_to post.name, nested_organization_post_path(@organization.ancestors_and_self, post) %></h4>
|
16
|
-
<% if post.person %>
|
17
|
-
<%= post.person.name %>
|
18
|
-
<% end %>
|
19
|
-
</div>
|
20
|
-
</li>
|
21
|
-
<% end %>
|
22
|
-
</ol>
|
23
|
-
</section>
|
File without changes
|
File without changes
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Popolo
|
2
|
-
module Eventable
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
embeds_many :sources, as: :sourceable, class_name: 'Popolo::Source'
|
7
|
-
end
|
8
|
-
|
9
|
-
# @note It's not possible to do a many-to-many polymorphic relation, so
|
10
|
-
# we must create the relation manually.
|
11
|
-
def events
|
12
|
-
Event.where("related.#{self.class.name.demodulize.underscore}" => id)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
module Popolo
|
2
|
-
module Sluggable
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
included do
|
6
|
-
# The field used as the basis of the slug, usually the resource's name.
|
7
|
-
field slug_source, type: String
|
8
|
-
# A lowercase identifier composed of letters, numbers and dashes.
|
9
|
-
field :slug, type: String
|
10
|
-
# The field used to sort the document.
|
11
|
-
field :sort_name, type: String
|
12
|
-
|
13
|
-
index sort_name: 1
|
14
|
-
|
15
|
-
validates_presence_of slug_source, :slug, :sort_name
|
16
|
-
|
17
|
-
before_validation :set_slug_and_sort_name
|
18
|
-
end
|
19
|
-
|
20
|
-
module ClassMethods
|
21
|
-
# Finds a resource by its slug or ID.
|
22
|
-
#
|
23
|
-
# @param [String] slug a slug or ID
|
24
|
-
# @return a matching resource
|
25
|
-
def find_by_slug_or_id(slug)
|
26
|
-
where(slug: slug.to_s.parameterize).first || find(slug)
|
27
|
-
end
|
28
|
-
|
29
|
-
# Finds a resource by its slug or raises an error.
|
30
|
-
#
|
31
|
-
# @param [String] slug a slug
|
32
|
-
# @param [Hash] opts conditions
|
33
|
-
# @return a matching resource
|
34
|
-
# @raises [Mongoid::Errors::DocumentNotFound] if not found
|
35
|
-
def find_by_slug(slug, opts = {})
|
36
|
-
find_by(opts.merge(slug: slug.parameterize))
|
37
|
-
end
|
38
|
-
|
39
|
-
# @private
|
40
|
-
def slug_source
|
41
|
-
if defined?(super)
|
42
|
-
super
|
43
|
-
else
|
44
|
-
:name
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def to_param
|
50
|
-
slug
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
# @return [String] the value of the field used as the basis of the slug
|
56
|
-
def slug_source
|
57
|
-
send(self.class.slug_source)
|
58
|
-
end
|
59
|
-
|
60
|
-
# @note Leave it to the content manager to choose a slug in case of conflicts.
|
61
|
-
def set_slug_and_sort_name
|
62
|
-
self.slug ||= slug_source.parameterize if slug_source
|
63
|
-
self.sort_name ||= slug_source
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe Popolo::AreasController do
|
5
|
-
before :each do
|
6
|
-
@routes = Popolo::Engine.routes
|
7
|
-
@area = FactoryGirl.create :area, name: 'Canada'
|
8
|
-
@ontario = @area.children.create name: 'Ontario'
|
9
|
-
@quebec = @area.children.create name: 'Québec'
|
10
|
-
@montreal = @quebec.children.create name: 'Montréal'
|
11
|
-
@villemarie = @montreal.children.create name: 'Ville-Marie'
|
12
|
-
end
|
13
|
-
|
14
|
-
describe 'GET index' do
|
15
|
-
it 'assigns all areas as @areas' do
|
16
|
-
get :index
|
17
|
-
assigns(:areas).to_a.should == [@area]
|
18
|
-
response.should be_success
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe 'GET show' do
|
23
|
-
it 'assigns the requested area as @area' do
|
24
|
-
get :show, id: @area.id.to_s
|
25
|
-
assigns(:area).should == @area
|
26
|
-
response.should be_success
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
describe 'GET nested_index' do
|
31
|
-
it 'succeeds if properly nested' do
|
32
|
-
get :nested_index, path: 'canada/quebec/montreal'
|
33
|
-
assigns(:areas).to_a.should == [@villemarie]
|
34
|
-
response.should be_success
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'fails if improperly nested' do
|
38
|
-
expect {get :nested_index, path: 'canada/ontario/montreal'}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe 'GET nested_show' do
|
43
|
-
it 'succeeds if properly nested' do
|
44
|
-
get :nested_show, path: 'canada/quebec/montreal'
|
45
|
-
assigns(:area).should == @montreal
|
46
|
-
response.should be_success
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'fails if improperly nested' do
|
50
|
-
expect {get :nested_show, path: 'canada/ontario/montreal'}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,6 +0,0 @@
|
|
1
|
-
MOPED: 127.0.0.1:27017 COMMAND database=admin command={:ismaster=>1} (1.4269ms)
|
2
|
-
MOPED: 127.0.0.1:27017 INSERT database=popolo_development collection=popolo_people documents=[{"_id"=>"50f305f223e2f6045a000001", "name"=>{"en"=>"John Doe"}, "slug"=>"john-doe", "updated_at"=>2013-01-13 19:07:30 UTC, "created_at"=>2013-01-13 19:07:30 UTC}] flags=[] (0.2322ms)
|
3
|
-
MOPED: 127.0.0.1:27017 COMMAND database=admin command={:ismaster=>1} (1.0641ms)
|
4
|
-
MOPED: 127.0.0.1:27017 QUERY database=popolo_development collection=popolo_people selector={"$query"=>{"deleted_at"=>nil}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil (0.7071ms)
|
5
|
-
MOPED: 127.0.0.1:27017 COMMAND database=admin command={:ismaster=>1} (0.6180ms)
|
6
|
-
MOPED: 127.0.0.1:27017 QUERY database=popolo_development collection=popolo_people selector={"$query"=>{"deleted_at"=>nil}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 fields=nil (0.7722ms)
|
@@ -1,153 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Popolo::Sluggable do
|
4
|
-
describe '.included' do
|
5
|
-
describe '#new' do
|
6
|
-
subject {Cat.new}
|
7
|
-
|
8
|
-
[:name, :slug, :sort_name].each do |attribute|
|
9
|
-
it {should validate_presence_of attribute}
|
10
|
-
end
|
11
|
-
|
12
|
-
context 'with a custom slug source' do
|
13
|
-
subject {Dog.new}
|
14
|
-
|
15
|
-
[:moniker, :slug, :sort_name].each do |attribute|
|
16
|
-
it {should validate_presence_of attribute}
|
17
|
-
end
|
18
|
-
|
19
|
-
it {should_not validate_presence_of :name}
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
describe '#slug_source' do
|
24
|
-
it 'should default to :name' do
|
25
|
-
Cat.slug_source.should == :name
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'with a custom slug source' do
|
29
|
-
it 'should use the custom slug source' do
|
30
|
-
Dog.slug_source.should == :moniker
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe '#create' do
|
36
|
-
it 'should set the slug' do
|
37
|
-
Cat.create(name: 'Foo').slug.should == 'foo'
|
38
|
-
end
|
39
|
-
|
40
|
-
it 'should not set the slug if it is already set' do
|
41
|
-
Cat.create(name: 'Foo', slug: 'bar').slug.should == 'bar'
|
42
|
-
end
|
43
|
-
|
44
|
-
it 'should not attempt to set the slug if the slug source is empty' do
|
45
|
-
expect {Cat.create!}.to raise_error(Mongoid::Errors::Validations)
|
46
|
-
end
|
47
|
-
|
48
|
-
it 'should prevent duplicate slugs' do
|
49
|
-
Cat.create name: 'Foo', slug: 'foo'
|
50
|
-
expect {Cat.with(safe: true).create(name: 'Bar', slug: 'foo')}.to raise_error(Moped::Errors::OperationFailure)
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should set the sort name' do
|
54
|
-
Cat.create(name: 'Foo').sort_name.should == 'Foo'
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'should not set the sort name if it is already set' do
|
58
|
-
Cat.create(name: 'Foo', sort_name: 'Bar').sort_name.should == 'Bar'
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'with a custom slug source' do
|
62
|
-
it 'should set the slug' do
|
63
|
-
Dog.create(moniker: 'Foo').slug.should == 'foo'
|
64
|
-
end
|
65
|
-
|
66
|
-
it 'should not set the slug if it is already set' do
|
67
|
-
Dog.create(moniker: 'Foo', slug: 'bar').slug.should == 'bar'
|
68
|
-
end
|
69
|
-
|
70
|
-
it 'should not attempt to set the slug if the slug source is empty' do
|
71
|
-
expect {Dog.create!}.to raise_error(Mongoid::Errors::Validations)
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'should prevent duplicate slugs' do
|
75
|
-
Dog.create moniker: 'Foo', slug: 'foo'
|
76
|
-
expect {Dog.with(safe: true).create(moniker: 'Bar', slug: 'foo')}.to raise_error(Moped::Errors::OperationFailure)
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'should set the sort name' do
|
80
|
-
Dog.create(moniker: 'Foo').sort_name.should == 'Foo'
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'should not set the sort name if it is already set' do
|
84
|
-
Dog.create(moniker: 'Foo', sort_name: 'Bar').sort_name.should == 'Bar'
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe '#find_by_slug' do
|
90
|
-
let :resource do
|
91
|
-
Cat.create(name: 'Foo')
|
92
|
-
end
|
93
|
-
|
94
|
-
it 'should find a resource by its slug' do
|
95
|
-
Cat.find_by_slug(resource.slug).should == resource
|
96
|
-
end
|
97
|
-
|
98
|
-
it 'should find a resource by its slug source' do
|
99
|
-
Cat.find_by_slug(resource.name).should == resource
|
100
|
-
end
|
101
|
-
|
102
|
-
context 'with a custom slug source' do
|
103
|
-
let :resource do
|
104
|
-
Dog.create(moniker: 'Foo')
|
105
|
-
end
|
106
|
-
|
107
|
-
it 'should find a resource by its slug' do
|
108
|
-
Dog.find_by_slug(resource.slug).should == resource
|
109
|
-
end
|
110
|
-
|
111
|
-
it 'should find a resource by its slug source' do
|
112
|
-
Dog.find_by_slug(resource.moniker).should == resource
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
describe '#find_by_slug_or_id' do
|
118
|
-
let :resource do
|
119
|
-
Cat.create(name: 'Foo')
|
120
|
-
end
|
121
|
-
|
122
|
-
it 'should find a resource by its slug' do
|
123
|
-
Cat.find_by_slug_or_id(resource.slug).should == resource
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'should find a resource by its slug source' do
|
127
|
-
Cat.find_by_slug(resource.name).should == resource
|
128
|
-
end
|
129
|
-
|
130
|
-
it 'should find a resource by its ID' do
|
131
|
-
Cat.find_by_slug_or_id(resource.id).should == resource
|
132
|
-
end
|
133
|
-
|
134
|
-
context 'with a custom slug source' do
|
135
|
-
let :resource do
|
136
|
-
Dog.create(moniker: 'Foo')
|
137
|
-
end
|
138
|
-
|
139
|
-
it 'should find a resource by its slug' do
|
140
|
-
Dog.find_by_slug_or_id(resource.slug).should == resource
|
141
|
-
end
|
142
|
-
|
143
|
-
it 'should find a resource by its slug' do
|
144
|
-
Dog.find_by_slug_or_id(resource.moniker).should == resource
|
145
|
-
end
|
146
|
-
|
147
|
-
it 'should find a resource by its ID' do
|
148
|
-
Dog.find_by_slug_or_id(resource.id).should == resource
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
end
|
153
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Popolo::AreasController do
|
4
|
-
describe 'routing' do
|
5
|
-
before :each do
|
6
|
-
@routes = Popolo::Engine.routes
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'routes to #index' do
|
10
|
-
get('/areas').should route_to('popolo/areas#index')
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'routes to #show' do
|
14
|
-
get('/areas/1').should route_to('popolo/areas#show', id: '1')
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'routes to #nested_index' do
|
18
|
-
get('/areas/foo/areas').should route_to('popolo/areas#nested_index', path: 'foo')
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'routes to #nested_show' do
|
22
|
-
get('/areas/foo/bar').should route_to('popolo/areas#nested_show', path: 'foo/bar')
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|