popolo 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +65 -7
  3. data/app/assets/javascripts/popolo.js +1 -0
  4. data/app/assets/stylesheets/popolo/bootstrap.min.scss +7 -0
  5. data/app/assets/stylesheets/popolo/main.css.scss +14 -0
  6. data/app/assets/stylesheets/popolo.css +3 -0
  7. data/app/controllers/popolo/memberships_controller.rb +7 -0
  8. data/app/controllers/popolo/organizations_controller.rb +0 -39
  9. data/app/controllers/popolo/people_controller.rb +1 -6
  10. data/app/controllers/popolo/posts_controller.rb +1 -1
  11. data/app/helpers/popolo_helper.rb +0 -8
  12. data/app/models/popolo/area.rb +20 -12
  13. data/app/models/popolo/contact_detail.rb +22 -0
  14. data/app/models/popolo/count.rb +24 -0
  15. data/app/models/popolo/date_string.rb +23 -0
  16. data/app/models/popolo/group_result.rb +15 -0
  17. data/app/models/popolo/identifier.rb +1 -1
  18. data/app/models/popolo/link.rb +7 -3
  19. data/app/models/popolo/membership.rb +34 -9
  20. data/app/models/popolo/motion.rb +37 -0
  21. data/app/models/popolo/organization.rb +37 -16
  22. data/app/models/popolo/other_name.rb +5 -5
  23. data/app/models/popolo/person.rb +57 -27
  24. data/app/models/popolo/post.rb +27 -13
  25. data/app/models/popolo/vote.rb +28 -0
  26. data/app/models/popolo/vote_event.rb +35 -0
  27. data/app/views/popolo/contact_details/_contact_detail.html.erb +17 -0
  28. data/app/views/popolo/identifiers/_identifier.html.erb +2 -0
  29. data/app/views/popolo/links/_link.html.erb +1 -0
  30. data/app/views/popolo/memberships/show.html.erb +81 -0
  31. data/app/views/popolo/organizations/index.html.erb +16 -1
  32. data/app/views/popolo/organizations/show.html.erb +146 -1
  33. data/app/views/popolo/other_names/other_name.html.erb +9 -0
  34. data/app/views/popolo/people/show.html.erb +120 -0
  35. data/app/views/popolo/posts/show.html.erb +90 -0
  36. data/config/routes.rb +4 -12
  37. data/lib/generators/popolo_generator.rb +4 -0
  38. data/lib/popolo/initializers/pupa_compat.rb +11 -0
  39. data/lib/popolo/version.rb +1 -1
  40. data/lib/popolo.rb +17 -5
  41. data/spec/controllers/popolo/memberships_controller_spec.rb +16 -0
  42. data/spec/controllers/popolo/organizations_controller_spec.rb +1 -47
  43. data/spec/controllers/popolo/people_controller_spec.rb +0 -14
  44. data/spec/controllers/popolo/posts_controller_spec.rb +0 -8
  45. data/spec/dummy/app/assets/stylesheets/application.css +1 -0
  46. data/spec/dummy/app/models/cat.rb +0 -3
  47. data/spec/dummy/app/models/dog.rb +0 -7
  48. data/spec/dummy/app/views/layouts/application.html.erb +2 -0
  49. data/spec/dummy/config/locales/en.yml +30 -0
  50. data/spec/dummy/config/routes.rb +1 -1
  51. data/spec/dummy/log/test.log +8670 -48801
  52. data/spec/factories.rb +3 -8
  53. data/spec/models/popolo/{source_spec.rb → contact_detail_spec.rb} +2 -2
  54. data/spec/models/popolo/count_spec.rb +7 -0
  55. data/spec/models/popolo/date_string_spec.rb +121 -0
  56. data/spec/models/popolo/group_result_spec.rb +7 -0
  57. data/spec/models/popolo/membership_spec.rb +1 -17
  58. data/spec/models/popolo/motion_spec.rb +5 -0
  59. data/spec/models/popolo/organization_spec.rb +1 -19
  60. data/spec/models/popolo/other_name_spec.rb +1 -17
  61. data/spec/models/popolo/person_spec.rb +23 -19
  62. data/spec/models/popolo/post_spec.rb +1 -3
  63. data/spec/models/popolo/vote_event_spec.rb +4 -0
  64. data/spec/models/popolo/vote_spec.rb +4 -0
  65. data/spec/popolo_spec.rb +65 -0
  66. data/spec/routing/popolo/memberships_routing_spec.rb +11 -0
  67. data/spec/routing/popolo/organizations_routing_spec.rb +1 -19
  68. data/spec/routing/popolo/people_routing_spec.rb +1 -11
  69. data/spec/routing/popolo/posts_routing_spec.rb +1 -7
  70. data/spec/spec_helper.rb +6 -1
  71. data/spec/support/shared_examples.rb +19 -0
  72. metadata +99 -109
  73. data/app/assets/javascripts/popolo/application.js +0 -13
  74. data/app/assets/stylesheets/popolo/application.css +0 -13
  75. data/app/controllers/popolo/areas_controller.rb +0 -43
  76. data/app/models/popolo/address.rb +0 -27
  77. data/app/models/popolo/event.rb +0 -46
  78. data/app/models/popolo/source.rb +0 -29
  79. data/app/views/popolo/addresses/_address.html.erb +0 -16
  80. data/app/views/popolo/areas/index.html.erb +0 -1
  81. data/app/views/popolo/areas/show.html.erb +0 -1
  82. data/app/views/popolo/areas_or_organizations/_breadcrumb.html.erb +0 -13
  83. data/app/views/popolo/areas_or_organizations/_index.html.erb +0 -31
  84. data/app/views/popolo/areas_or_organizations/_show.html.erb +0 -18
  85. data/app/views/popolo/organizations/post.html.erb +0 -27
  86. data/app/views/popolo/organizations/posts.html.erb +0 -23
  87. data/app/views/popolo/people/index.html.erb +0 -0
  88. data/app/views/popolo/posts/index.html.erb +0 -0
  89. data/lib/popolo/mixins/eventable.rb +0 -15
  90. data/lib/popolo/mixins/sluggable.rb +0 -66
  91. data/spec/controllers/popolo/areas_controller_spec.rb +0 -53
  92. data/spec/dummy/log/development.log +0 -6
  93. data/spec/models/popolo/address_spec.rb +0 -4
  94. data/spec/models/popolo/event_spec.rb +0 -7
  95. data/spec/popolo/mixins/sluggable_spec.rb +0 -153
  96. data/spec/routing/popolo/areas_routing_spec.rb +0 -25
data/spec/factories.rb CHANGED
@@ -1,12 +1,9 @@
1
1
  # https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md
2
2
  FactoryGirl.define do
3
- factory :area, class: Popolo::Area do
4
- name 'Foo'
5
- end
6
-
7
3
  factory :membership, class: Popolo::Membership do
8
- person
9
4
  organization
5
+ person
6
+ post
10
7
  end
11
8
 
12
9
  factory :organization, class: Popolo::Organization do
@@ -18,9 +15,7 @@ FactoryGirl.define do
18
15
  end
19
16
 
20
17
  factory :post, class: Popolo::Post do
21
- name 'Marketing Director'
22
- role 'Director'
23
- person
18
+ label 'Marketing Director'
24
19
  organization
25
20
  end
26
21
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Popolo::Source do
4
- [:name, :last_modified].each do |attribute|
3
+ describe Popolo::ContactDetail do
4
+ [:type, :value].each do |attribute|
5
5
  it {should validate_presence_of attribute}
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::Count do
4
+ [:option, :value].each do |attribute|
5
+ it {should validate_presence_of attribute}
6
+ end
7
+ end
@@ -0,0 +1,121 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::DateString do
4
+ let :date do
5
+ Date.new(2011, 2, 3)
6
+ end
7
+
8
+ let :date_string_year_month_day do
9
+ Popolo::DateString.new('2011-02-03')
10
+ end
11
+
12
+ let :date_string_year_month do
13
+ Popolo::DateString.new('2011-02')
14
+ end
15
+
16
+ let :date_string_year do
17
+ Popolo::DateString.new('2011')
18
+ end
19
+
20
+ let :date_string_empty do
21
+ Popolo::DateString.new('')
22
+ end
23
+
24
+ let :year_month_day do
25
+ '2011-02-03'
26
+ end
27
+
28
+ let :year_month do
29
+ '2011-02'
30
+ end
31
+
32
+ let :year do
33
+ '2011'
34
+ end
35
+
36
+ let :empty do
37
+ ''
38
+ end
39
+
40
+ describe '#mongoize' do
41
+ it 'returns a string' do
42
+ date_string_year_month_day.mongoize.should == year_month_day
43
+ end
44
+
45
+ it 'returns a string if day truncated' do
46
+ date_string_year_month.mongoize.should == year_month
47
+ end
48
+
49
+ it 'returns a string if month and day truncated' do
50
+ date_string_year.mongoize.should == year
51
+ end
52
+
53
+ it 'returns nil if empty string' do
54
+ date_string_empty.mongoize.should == nil
55
+ end
56
+ end
57
+
58
+ describe '.demongoize' do
59
+ it 'returns a date' do
60
+ Popolo::DateString.demongoize(year_month_day).mongoize.should == date
61
+ end
62
+
63
+ it 'returns a string if day truncated' do
64
+ Popolo::DateString.demongoize(year_month).mongoize.should == year_month
65
+ end
66
+
67
+ it 'returns a string if month and day truncated' do
68
+ Popolo::DateString.demongoize(year).mongoize.should == year
69
+ end
70
+
71
+ it 'returns nil if empty string' do
72
+ Popolo::DateString.demongoize(empty).mongoize.should == nil
73
+ end
74
+ end
75
+
76
+ describe '.mongoize' do
77
+ it 'returns a string when given a date' do
78
+ Popolo::DateString.mongoize(date).should == year_month_day
79
+ end
80
+
81
+ it 'returns a string when given a date string' do
82
+ Popolo::DateString.mongoize(date_string_year_month_day).should == year_month_day
83
+ Popolo::DateString.mongoize(date_string_year_month).should == year_month
84
+ Popolo::DateString.mongoize(date_string_year).should == year
85
+ end
86
+
87
+ it 'returns a string when given a string' do
88
+ Popolo::DateString.mongoize(year_month_day).should == year_month_day
89
+ Popolo::DateString.mongoize(year_month).should == year_month
90
+ Popolo::DateString.mongoize(year).should == year
91
+ end
92
+
93
+ it 'returns nil when given an empty string' do
94
+ Popolo::DateString.mongoize(date_string_empty).should == nil
95
+ Popolo::DateString.mongoize(empty).should == nil
96
+ end
97
+ end
98
+
99
+ describe '.evolve' do
100
+ it 'returns a string when given a date' do
101
+ Popolo::DateString.evolve(date).should == year_month_day
102
+ end
103
+
104
+ it 'returns a string when given a date string' do
105
+ Popolo::DateString.evolve(date_string_year_month_day).should == year_month_day
106
+ Popolo::DateString.evolve(date_string_year_month).should == year_month
107
+ Popolo::DateString.evolve(date_string_year).should == year
108
+ end
109
+
110
+ it 'returns a string when given a string' do
111
+ Popolo::DateString.evolve(year_month_day).should == year_month_day
112
+ Popolo::DateString.evolve(year_month).should == year_month
113
+ Popolo::DateString.evolve(year).should == year
114
+ end
115
+
116
+ it 'returns nil when given an empty string' do
117
+ Popolo::DateString.evolve(date_string_empty).should == nil
118
+ Popolo::DateString.evolve(empty).should == nil
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::GroupResult do
4
+ [:group, :result].each do |attribute|
5
+ it {should validate_presence_of attribute}
6
+ end
7
+ end
@@ -6,22 +6,6 @@ describe Popolo::Membership do
6
6
  end
7
7
 
8
8
  [:start_date, :end_date].each do |attribute|
9
- it {
10
- should validate_format_of(attribute).
11
- # 4.1.2.2 Basic format
12
- not_to_allow('20041231').
13
- # 4.1.2.2 Extended format
14
- to_allow('2004-12-31').
15
- # 4.1.2.3 a) A specific month
16
- to_allow('2004-01').
17
- # 4.1.2.3 b) A specific year
18
- to_allow('2004').
19
- # 4.1.2.3 c) A specific century
20
- not_to_allow('20').
21
- # Avoid confusion with YYMMDD
22
- not_to_allow('200401').
23
- # Date and time of day.
24
- not_to_allow('2004-12-31T00:00:00Z')
25
- }
9
+ it_should_behave_like 'a model with a date attribute', attribute
26
10
  end
27
11
  end
@@ -0,0 +1,5 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::Motion do
4
+ it_should_behave_like 'a model with a date attribute', :date
5
+ end
@@ -1,25 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Popolo::Organization do
4
- it {should validate_presence_of :name}
5
-
6
4
  [:founding_date, :dissolution_date].each do |attribute|
7
- it {
8
- should validate_format_of(attribute).
9
- # 4.1.2.2 Basic format
10
- not_to_allow('20041231').
11
- # 4.1.2.2 Extended format
12
- to_allow('2004-12-31').
13
- # 4.1.2.3 a) A specific month
14
- to_allow('2004-01').
15
- # 4.1.2.3 b) A specific year
16
- to_allow('2004').
17
- # 4.1.2.3 c) A specific century
18
- not_to_allow('20').
19
- # Avoid confusion with YYMMDD
20
- not_to_allow('200401').
21
- # Date and time of day.
22
- not_to_allow('2004-12-31T00:00:00Z')
23
- }
5
+ it_should_behave_like 'a model with a date attribute', attribute
24
6
  end
25
7
  end
@@ -4,22 +4,6 @@ describe Popolo::OtherName do
4
4
  it {should validate_presence_of :name}
5
5
 
6
6
  [:start_date, :end_date].each do |attribute|
7
- it {
8
- should validate_format_of(attribute).
9
- # 4.1.2.2 Basic format
10
- not_to_allow('20041231').
11
- # 4.1.2.2 Extended format
12
- to_allow('2004-12-31').
13
- # 4.1.2.3 a) A specific month
14
- to_allow('2004-01').
15
- # 4.1.2.3 b) A specific year
16
- to_allow('2004').
17
- # 4.1.2.3 c) A specific century
18
- not_to_allow('20').
19
- # Avoid confusion with YYMMDD
20
- not_to_allow('200401').
21
- # Date and time of day.
22
- not_to_allow('2004-12-31T00:00:00Z')
23
- }
7
+ it_should_behave_like 'a model with a date attribute', attribute
24
8
  end
25
9
  end
@@ -1,25 +1,29 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Popolo::Person do
4
- it {should validate_presence_of :name}
5
-
6
4
  [:birth_date, :death_date].each do |attribute|
7
- it {
8
- should validate_format_of(attribute).
9
- # 4.1.2.2 Basic format
10
- not_to_allow('20041231').
11
- # 4.1.2.2 Extended format
12
- to_allow('2004-12-31').
13
- # 4.1.2.3 a) A specific month
14
- to_allow('2004-01').
15
- # 4.1.2.3 b) A specific year
16
- to_allow('2004').
17
- # 4.1.2.3 c) A specific century
18
- not_to_allow('20').
19
- # Avoid confusion with YYMMDD
20
- not_to_allow('200401').
21
- # Date and time of day.
22
- not_to_allow('2004-12-31T00:00:00Z')
23
- }
5
+ it_should_behave_like 'a model with a date attribute', attribute
6
+ end
7
+
8
+ describe '#to_s' do
9
+ it 'should return the name if the name, given name and family name are blank' do
10
+ FactoryGirl.build(:person, name: nil).to_s.should == nil
11
+ end
12
+
13
+ it 'should return the given name and family name if the name is blank' do
14
+ FactoryGirl.build(:person, name: nil, given_name: 'John', family_name: 'Public').to_s.should == 'John Public'
15
+ end
16
+
17
+ it 'should return the family name if the name and given name are blank' do
18
+ FactoryGirl.build(:person, name: nil, family_name: 'Public').to_s.should == 'Public'
19
+ end
20
+
21
+ it 'should return the given name if the name and family name are blank' do
22
+ FactoryGirl.build(:person, name: nil, given_name: 'John').to_s.should == 'John'
23
+ end
24
+
25
+ it 'should return the name if present' do
26
+ FactoryGirl.build(:person, given_name: 'John', family_name: 'Public').to_s.should == 'John Q. Public'
27
+ end
24
28
  end
25
29
  end
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Popolo::Post do
4
- [:role, :organization_id].each do |attribute|
5
- it {should validate_presence_of attribute}
6
- end
4
+ it {should validate_presence_of :organization_id}
7
5
  end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::VoteEvent do
4
+ end
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::Vote do
4
+ end
data/spec/popolo_spec.rb CHANGED
@@ -1,4 +1,69 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Popolo do
4
+ describe '.storage_options' do
5
+ context 'when using default storage options' do
6
+ it 'should use default storage options' do
7
+ Popolo.storage_options.should == {}
8
+ end
9
+ end
10
+
11
+ context 'when using custom storage options' do
12
+ before do
13
+ Popolo.storage_options = {database: :test}
14
+ end
15
+
16
+ it 'should use custom storage options' do
17
+ Popolo.storage_options.should == {database: :test}
18
+
19
+ # We would need to reload the app.
20
+ # Popolo::Membership.storage_options.should == {database: :test}
21
+ # Popolo::Organization.storage_options.should == {database: :test}
22
+ # Popolo::Person.storage_options.should == {database: :test}
23
+ # Popolo::Post.storage_options.should == {database: :test}
24
+ end
25
+
26
+ after do
27
+ Popolo.storage_options = {}
28
+ end
29
+ end
30
+ end
31
+
32
+ describe '.storage_options_per_class' do
33
+ context 'when using default storage options' do
34
+ it 'should use default storage options' do
35
+ Popolo.storage_options_per_class.should == {}
36
+ end
37
+ end
38
+
39
+ context 'when using custom storage options' do
40
+ before do
41
+ Popolo.storage_options_per_class = {
42
+ :Membership => {collection: 'a'},
43
+ :Organization => {collection: 'b'},
44
+ :Person => {collection: 'c'},
45
+ :Post => {collection: 'd'},
46
+ }
47
+ end
48
+
49
+ it 'should use custom storage options' do
50
+ Popolo.storage_options_per_class.should == {
51
+ :Membership => {collection: 'a'},
52
+ :Organization => {collection: 'b'},
53
+ :Person => {collection: 'c'},
54
+ :Post => {collection: 'd'},
55
+ }
56
+
57
+ # We would need to reload the app.
58
+ # Popolo::Membership.storage_options.should == {collection: 'a'}
59
+ # Popolo::Organization.storage_options.should == {collection: 'b'}
60
+ # Popolo::Person.storage_options.should == {collection: 'c'}
61
+ # Popolo::Post.storage_options.should == {collection: 'd'}
62
+ end
63
+
64
+ after do
65
+ Popolo.storage_options = {}
66
+ end
67
+ end
68
+ end
4
69
  end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Popolo::MembershipsController do
4
+ describe 'routing' do
5
+ routes { Popolo::Engine.routes }
6
+
7
+ it 'routes to #show' do
8
+ get('/memberships/1').should route_to('popolo/memberships#show', id: '1')
9
+ end
10
+ end
11
+ end
@@ -2,9 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Popolo::OrganizationsController do
4
4
  describe 'routing' do
5
- before :each do
6
- @routes = Popolo::Engine.routes
7
- end
5
+ routes { Popolo::Engine.routes }
8
6
 
9
7
  it 'routes to #index' do
10
8
  get('/organizations').should route_to('popolo/organizations#index')
@@ -13,21 +11,5 @@ describe Popolo::OrganizationsController do
13
11
  it 'routes to #show' do
14
12
  get('/organizations/1').should route_to('popolo/organizations#show', id: '1')
15
13
  end
16
-
17
- it 'routes to #nested_index' do
18
- get('/organizations/foo/organizations').should route_to('popolo/organizations#nested_index', path: 'foo')
19
- end
20
-
21
- it 'routes to #nested_show' do
22
- get('/organizations/foo/bar').should route_to('popolo/organizations#nested_show', path: 'foo/bar')
23
- end
24
-
25
- it 'routes to #posts' do
26
- get('/organizations/foo/posts').should route_to('popolo/organizations#posts', path: 'foo')
27
- end
28
-
29
- it 'routes to #post' do
30
- get('/organizations/foo/posts/bar').should route_to('popolo/organizations#post', path: 'foo', id: 'bar')
31
- end
32
14
  end
33
15
  end
@@ -2,20 +2,10 @@ require 'spec_helper'
2
2
 
3
3
  describe Popolo::PeopleController do
4
4
  describe 'routing' do
5
- before :each do
6
- @routes = Popolo::Engine.routes
7
- end
8
-
9
- it 'routes to #index' do
10
- get('/people').should route_to('popolo/people#index')
11
- end
5
+ routes { Popolo::Engine.routes }
12
6
 
13
7
  it 'routes to #show' do
14
8
  get('/people/1').should route_to('popolo/people#show', id: '1')
15
9
  end
16
-
17
- it 'routes to #show' do
18
- get('/people/foo').should route_to('popolo/people#show', id: 'foo')
19
- end
20
10
  end
21
11
  end
@@ -2,13 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Popolo::PostsController do
4
4
  describe 'routing' do
5
- before :each do
6
- @routes = Popolo::Engine.routes
7
- end
8
-
9
- it 'routes to #index' do
10
- get('/posts').should route_to('popolo/posts#index')
11
- end
5
+ routes { Popolo::Engine.routes }
12
6
 
13
7
  it 'routes to #show' do
14
8
  get('/posts/1').should route_to('popolo/posts#show', id: '1')
data/spec/spec_helper.rb CHANGED
@@ -3,6 +3,9 @@ require 'spork'
3
3
  Spork.prefork do
4
4
  ENV["RAILS_ENV"] ||= 'test'
5
5
 
6
+ require 'coveralls'
7
+ Coveralls.wear!
8
+
6
9
  require 'rails/application'
7
10
  # Prevent Spork from caching the routes.
8
11
  Spork.trap_method(Rails::Application::RoutesReloader, :reload!)
@@ -33,7 +36,6 @@ Spork.prefork do
33
36
  end
34
37
 
35
38
  require 'database_cleaner'
36
- require 'factory_girl_rails'
37
39
  require 'mongoid-rspec'
38
40
 
39
41
  RSpec.configure do |config|
@@ -49,6 +51,7 @@ Spork.prefork do
49
51
  config.treat_symbols_as_metadata_keys_with_true_values = true
50
52
  config.run_all_when_everything_filtered = true
51
53
  config.filter_run focus: true
54
+ config.infer_spec_type_from_file_location!
52
55
  end
53
56
  end
54
57
 
@@ -77,5 +80,7 @@ Spork.each_run do
77
80
  Rails::Mongoid.create_indexes(File.expand_path("../dummy/app/models/**/*.rb", __FILE__))
78
81
 
79
82
  # @todo I18n.backend.reload!
83
+
84
+ require 'factory_girl_rails'
80
85
  FactoryGirl.reload
81
86
  end
@@ -0,0 +1,19 @@
1
+ shared_examples_for 'a model with a date attribute' do |attribute|
2
+ it {
3
+ should validate_format_of(attribute).
4
+ # 4.1.2.2 Basic format
5
+ not_to_allow('20041231').
6
+ # 4.1.2.2 Extended format
7
+ to_allow('2004-12-31').
8
+ # 4.1.2.3 a) A specific month
9
+ to_allow('2004-01').
10
+ # 4.1.2.3 b) A specific year
11
+ to_allow('2004').
12
+ # 4.1.2.3 c) A specific century
13
+ not_to_allow('20').
14
+ # Avoid confusion with YYMMDD
15
+ not_to_allow('200401').
16
+ # Date and time of day.
17
+ not_to_allow('2004-12-31T00:00:00Z')
18
+ }
19
+ end