brazilian-documents-validations 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 (66) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +5 -0
  3. data/Rakefile +2 -0
  4. data/brazilian-documents-validations.gemspec +23 -0
  5. data/lib/brazilian-documents-validations.rb +11 -0
  6. data/lib/brazilian-documents-validations/cnpj.rb +46 -0
  7. data/lib/brazilian-documents-validations/cnpj_validator.rb +5 -0
  8. data/lib/brazilian-documents-validations/cpf.rb +58 -0
  9. data/lib/brazilian-documents-validations/cpf_validator.rb +5 -0
  10. data/lib/brazilian-documents-validations/version.rb +7 -0
  11. data/test-app/.gitignore +4 -0
  12. data/test-app/Gemfile +9 -0
  13. data/test-app/README +256 -0
  14. data/test-app/Rakefile +7 -0
  15. data/test-app/app/controllers/application_controller.rb +3 -0
  16. data/test-app/app/helpers/application_helper.rb +2 -0
  17. data/test-app/app/models/company.rb +3 -0
  18. data/test-app/app/models/person.rb +3 -0
  19. data/test-app/app/views/layouts/application.html.erb +14 -0
  20. data/test-app/config.ru +4 -0
  21. data/test-app/config/application.rb +42 -0
  22. data/test-app/config/boot.rb +6 -0
  23. data/test-app/config/database.yml +22 -0
  24. data/test-app/config/environment.rb +5 -0
  25. data/test-app/config/environments/development.rb +26 -0
  26. data/test-app/config/environments/production.rb +49 -0
  27. data/test-app/config/environments/test.rb +35 -0
  28. data/test-app/config/initializers/backtrace_silencers.rb +7 -0
  29. data/test-app/config/initializers/inflections.rb +10 -0
  30. data/test-app/config/initializers/mime_types.rb +5 -0
  31. data/test-app/config/initializers/secret_token.rb +7 -0
  32. data/test-app/config/initializers/session_store.rb +8 -0
  33. data/test-app/config/locales/en.yml +5 -0
  34. data/test-app/config/routes.rb +58 -0
  35. data/test-app/db/migrate/20110622120743_create_people.rb +13 -0
  36. data/test-app/db/migrate/20110622120752_create_companies.rb +13 -0
  37. data/test-app/db/schema.rb +27 -0
  38. data/test-app/db/seeds.rb +7 -0
  39. data/test-app/doc/README_FOR_APP +2 -0
  40. data/test-app/lib/tasks/.gitkeep +0 -0
  41. data/test-app/public/404.html +26 -0
  42. data/test-app/public/422.html +26 -0
  43. data/test-app/public/500.html +26 -0
  44. data/test-app/public/favicon.ico +0 -0
  45. data/test-app/public/images/rails.png +0 -0
  46. data/test-app/public/index.html +239 -0
  47. data/test-app/public/javascripts/application.js +2 -0
  48. data/test-app/public/javascripts/controls.js +965 -0
  49. data/test-app/public/javascripts/dragdrop.js +974 -0
  50. data/test-app/public/javascripts/effects.js +1123 -0
  51. data/test-app/public/javascripts/prototype.js +6001 -0
  52. data/test-app/public/javascripts/rails.js +191 -0
  53. data/test-app/public/robots.txt +5 -0
  54. data/test-app/public/stylesheets/.gitkeep +0 -0
  55. data/test-app/script/rails +6 -0
  56. data/test-app/test/fixtures/companies.yml +7 -0
  57. data/test-app/test/fixtures/people.yml +7 -0
  58. data/test-app/test/performance/browsing_test.rb +9 -0
  59. data/test-app/test/test_helper.rb +13 -0
  60. data/test-app/test/unit/company_test.rb +16 -0
  61. data/test-app/test/unit/person_test.rb +16 -0
  62. data/test-app/vendor/plugins/.gitkeep +0 -0
  63. data/test/cnpj_test.rb +15 -0
  64. data/test/cpf_test.rb +37 -0
  65. data/test/test_helper.rb +13 -0
  66. metadata +149 -0
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
@@ -0,0 +1,5 @@
1
+ # See http://www.robotstxt.org/wc/norobots.html for documentation on how to use the robots.txt file
2
+ #
3
+ # To ban all spiders from the entire site uncomment the next two lines:
4
+ # User-Agent: *
5
+ # Disallow: /
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ one:
4
+ cnpj: MyString
5
+
6
+ two:
7
+ cnpj: MyString
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ one:
4
+ cpf: MyString
5
+
6
+ two:
7
+ cpf: MyString
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+ require 'rails/performance_test_help'
3
+
4
+ # Profiling results for each test method are written to tmp/performance.
5
+ class BrowsingTest < ActionDispatch::PerformanceTest
6
+ def test_homepage
7
+ get '/'
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ ENV["RAILS_ENV"] = "test"
2
+ require File.expand_path('../../config/environment', __FILE__)
3
+ require 'rails/test_help'
4
+
5
+ class ActiveSupport::TestCase
6
+ # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
7
+ #
8
+ # Note: You'll currently still have to declare fixtures explicitly in integration tests
9
+ # -- they do not yet inherit this setting
10
+ fixtures :all
11
+
12
+ # Add more helper methods to be used by all tests here...
13
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+
3
+ class CompanyTest < ActiveSupport::TestCase
4
+
5
+ test "should not validate with invalid cnpj" do
6
+ company = Company.new :cnpj => '1'*14
7
+ assert ! company.valid?
8
+ assert company.errors[:cnpj].present?
9
+ end
10
+
11
+ test "should validate with valid cnpj" do
12
+ company = Company.new :cnpj => '07340306000136'
13
+ assert company.valid?
14
+ end
15
+
16
+ end
@@ -0,0 +1,16 @@
1
+ require 'test_helper'
2
+
3
+ class PersonTest < ActiveSupport::TestCase
4
+
5
+ test "should not validate with invalid cpf" do
6
+ person = Person.new :cpf => '1'*11
7
+ assert ! person.valid?
8
+ assert person.errors[:cpf].present?
9
+ end
10
+
11
+ test "should validate with valid cpf" do
12
+ person = Person.new :cpf => '00251782026'
13
+ assert person.valid?
14
+ end
15
+
16
+ end
File without changes
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class CNPJTest < ActiveSupport::TestCase
4
+ test "should validate softas cnpj" do
5
+ assert CNPJ.valid? '07340306000136'
6
+ end
7
+
8
+ test "should not be valid" do
9
+ invalids = (0..9).map{|i| i.to_s * 14 }
10
+ for invalid in invalids
11
+ assert ! CNPJ.valid?(invalid), "Testando inválido #{invalid}"
12
+ end
13
+ end
14
+
15
+ end
@@ -0,0 +1,37 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class CPFTest < ActiveSupport::TestCase
4
+ test "should validate my cpf" do
5
+ assert CPF.valid? '00251782026'
6
+ end
7
+
8
+ test "should generate a mock" do
9
+ mock = CPF.mock
10
+ assert mock =~ /\d{11}/
11
+ end
12
+
13
+ test "mocks should be valid" do
14
+ mocks = []
15
+ while mocks.length < 1000
16
+ mock = CPF.mock
17
+ mocks << mock unless mocks.include?(mock)
18
+ end
19
+ mocks.each do |mock|
20
+ assert CPF.valid?(mock), "Testando #{mock}"
21
+ end
22
+ end
23
+
24
+ test "should not be valid" do
25
+ invalids = (0..9).map{|i| i.to_s * 11 } << %w{12343234543 12345678909}
26
+ for invalid in invalids
27
+ assert ! CPF.valid?(invalid), "Testando inválido #{invalid}"
28
+ end
29
+ end
30
+
31
+ test "should validate inside AR model" do
32
+ person = Person.new
33
+ assert ! person.save
34
+ assert person.errors[:cpf].present?
35
+ end
36
+
37
+ end
@@ -0,0 +1,13 @@
1
+ require 'test/unit'
2
+ # require 'ostruct'
3
+
4
+ require 'rubygems'
5
+ # require 'rails'
6
+ # require 'active_support'
7
+ # require 'action_controller'
8
+ # require 'action_controller/test_case'
9
+ # require 'action_view'
10
+ # require 'active_record'
11
+ require 'brazilian-documents-validations'
12
+
13
+ $LOAD_PATH << File.join(File.dirname(__FILE__), '..', 'lib')
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: brazilian-documents-validations
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
11
+ platform: ruby
12
+ authors:
13
+ - Juan Maiz @joaomilho
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-06-22 00:00:00 -03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rails
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - "="
28
+ - !ruby/object:Gem::Version
29
+ hash: 9
30
+ segments:
31
+ - 3
32
+ - 0
33
+ - 7
34
+ version: 3.0.7
35
+ type: :runtime
36
+ version_requirements: *id001
37
+ description: CPF & CNPJ...
38
+ email:
39
+ - juanmaiz@gmail.com
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - .gitignore
48
+ - Gemfile
49
+ - Rakefile
50
+ - brazilian-documents-validations.gemspec
51
+ - lib/brazilian-documents-validations.rb
52
+ - lib/brazilian-documents-validations/cnpj.rb
53
+ - lib/brazilian-documents-validations/cnpj_validator.rb
54
+ - lib/brazilian-documents-validations/cpf.rb
55
+ - lib/brazilian-documents-validations/cpf_validator.rb
56
+ - lib/brazilian-documents-validations/version.rb
57
+ - test-app/.gitignore
58
+ - test-app/Gemfile
59
+ - test-app/README
60
+ - test-app/Rakefile
61
+ - test-app/app/controllers/application_controller.rb
62
+ - test-app/app/helpers/application_helper.rb
63
+ - test-app/app/models/company.rb
64
+ - test-app/app/models/person.rb
65
+ - test-app/app/views/layouts/application.html.erb
66
+ - test-app/config.ru
67
+ - test-app/config/application.rb
68
+ - test-app/config/boot.rb
69
+ - test-app/config/database.yml
70
+ - test-app/config/environment.rb
71
+ - test-app/config/environments/development.rb
72
+ - test-app/config/environments/production.rb
73
+ - test-app/config/environments/test.rb
74
+ - test-app/config/initializers/backtrace_silencers.rb
75
+ - test-app/config/initializers/inflections.rb
76
+ - test-app/config/initializers/mime_types.rb
77
+ - test-app/config/initializers/secret_token.rb
78
+ - test-app/config/initializers/session_store.rb
79
+ - test-app/config/locales/en.yml
80
+ - test-app/config/routes.rb
81
+ - test-app/db/migrate/20110622120743_create_people.rb
82
+ - test-app/db/migrate/20110622120752_create_companies.rb
83
+ - test-app/db/schema.rb
84
+ - test-app/db/seeds.rb
85
+ - test-app/doc/README_FOR_APP
86
+ - test-app/lib/tasks/.gitkeep
87
+ - test-app/public/404.html
88
+ - test-app/public/422.html
89
+ - test-app/public/500.html
90
+ - test-app/public/favicon.ico
91
+ - test-app/public/images/rails.png
92
+ - test-app/public/index.html
93
+ - test-app/public/javascripts/application.js
94
+ - test-app/public/javascripts/controls.js
95
+ - test-app/public/javascripts/dragdrop.js
96
+ - test-app/public/javascripts/effects.js
97
+ - test-app/public/javascripts/prototype.js
98
+ - test-app/public/javascripts/rails.js
99
+ - test-app/public/robots.txt
100
+ - test-app/public/stylesheets/.gitkeep
101
+ - test-app/script/rails
102
+ - test-app/test/fixtures/companies.yml
103
+ - test-app/test/fixtures/people.yml
104
+ - test-app/test/performance/browsing_test.rb
105
+ - test-app/test/test_helper.rb
106
+ - test-app/test/unit/company_test.rb
107
+ - test-app/test/unit/person_test.rb
108
+ - test-app/vendor/plugins/.gitkeep
109
+ - test/cnpj_test.rb
110
+ - test/cpf_test.rb
111
+ - test/test_helper.rb
112
+ has_rdoc: true
113
+ homepage: ""
114
+ licenses: []
115
+
116
+ post_install_message:
117
+ rdoc_options: []
118
+
119
+ require_paths:
120
+ - lib
121
+ required_ruby_version: !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ hash: 3
127
+ segments:
128
+ - 0
129
+ version: "0"
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ none: false
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ hash: 3
136
+ segments:
137
+ - 0
138
+ version: "0"
139
+ requirements: []
140
+
141
+ rubyforge_project: brazilian-documents-validations
142
+ rubygems_version: 1.3.7
143
+ signing_key:
144
+ specification_version: 3
145
+ summary: Brazilian Documents Validations
146
+ test_files:
147
+ - test/cnpj_test.rb
148
+ - test/cpf_test.rb
149
+ - test/test_helper.rb