brazilian-documents-validations 0.0.3 → 0.1.0

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 (65) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +29 -0
  3. data/lib/brazilian-documents-validations.rb +6 -11
  4. data/lib/brazilian-documents-validations/cpf.rb +9 -5
  5. data/lib/brazilian-documents-validations/version.rb +3 -7
  6. metadata +61 -129
  7. data/.gitignore +0 -4
  8. data/Gemfile +0 -5
  9. data/Rakefile +0 -2
  10. data/brazilian-documents-validations.gemspec +0 -23
  11. data/test-app/.gitignore +0 -4
  12. data/test-app/Gemfile +0 -9
  13. data/test-app/README +0 -256
  14. data/test-app/Rakefile +0 -7
  15. data/test-app/app/controllers/application_controller.rb +0 -3
  16. data/test-app/app/helpers/application_helper.rb +0 -2
  17. data/test-app/app/models/company.rb +0 -3
  18. data/test-app/app/models/person.rb +0 -3
  19. data/test-app/app/views/layouts/application.html.erb +0 -14
  20. data/test-app/config.ru +0 -4
  21. data/test-app/config/application.rb +0 -42
  22. data/test-app/config/boot.rb +0 -6
  23. data/test-app/config/database.yml +0 -22
  24. data/test-app/config/environment.rb +0 -5
  25. data/test-app/config/environments/development.rb +0 -26
  26. data/test-app/config/environments/production.rb +0 -49
  27. data/test-app/config/environments/test.rb +0 -35
  28. data/test-app/config/initializers/backtrace_silencers.rb +0 -7
  29. data/test-app/config/initializers/inflections.rb +0 -10
  30. data/test-app/config/initializers/mime_types.rb +0 -5
  31. data/test-app/config/initializers/secret_token.rb +0 -7
  32. data/test-app/config/initializers/session_store.rb +0 -8
  33. data/test-app/config/locales/en.yml +0 -5
  34. data/test-app/config/routes.rb +0 -58
  35. data/test-app/db/migrate/20110622120743_create_people.rb +0 -13
  36. data/test-app/db/migrate/20110622120752_create_companies.rb +0 -13
  37. data/test-app/db/schema.rb +0 -27
  38. data/test-app/db/seeds.rb +0 -7
  39. data/test-app/doc/README_FOR_APP +0 -2
  40. data/test-app/lib/tasks/.gitkeep +0 -0
  41. data/test-app/public/404.html +0 -26
  42. data/test-app/public/422.html +0 -26
  43. data/test-app/public/500.html +0 -26
  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 +0 -239
  47. data/test-app/public/javascripts/application.js +0 -2
  48. data/test-app/public/javascripts/controls.js +0 -965
  49. data/test-app/public/javascripts/dragdrop.js +0 -974
  50. data/test-app/public/javascripts/effects.js +0 -1123
  51. data/test-app/public/javascripts/prototype.js +0 -6001
  52. data/test-app/public/javascripts/rails.js +0 -191
  53. data/test-app/public/robots.txt +0 -5
  54. data/test-app/public/stylesheets/.gitkeep +0 -0
  55. data/test-app/script/rails +0 -6
  56. data/test-app/test/fixtures/companies.yml +0 -7
  57. data/test-app/test/fixtures/people.yml +0 -7
  58. data/test-app/test/performance/browsing_test.rb +0 -9
  59. data/test-app/test/test_helper.rb +0 -13
  60. data/test-app/test/unit/company_test.rb +0 -16
  61. data/test-app/test/unit/person_test.rb +0 -16
  62. data/test-app/vendor/plugins/.gitkeep +0 -0
  63. data/test/cnpj_test.rb +0 -15
  64. data/test/cpf_test.rb +0 -37
  65. data/test/test_helper.rb +0 -13
@@ -1,191 +0,0 @@
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
- })();
@@ -1,5 +0,0 @@
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
@@ -1,6 +0,0 @@
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'
@@ -1,7 +0,0 @@
1
- # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
-
3
- one:
4
- cnpj: MyString
5
-
6
- two:
7
- cnpj: MyString
@@ -1,7 +0,0 @@
1
- # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
-
3
- one:
4
- cpf: MyString
5
-
6
- two:
7
- cpf: MyString
@@ -1,9 +0,0 @@
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
@@ -1,13 +0,0 @@
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
@@ -1,16 +0,0 @@
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
@@ -1,16 +0,0 @@
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
@@ -1,15 +0,0 @@
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
@@ -1,37 +0,0 @@
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
@@ -1,13 +0,0 @@
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')