forgery 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,4 @@
1
- Forgery
2
- =======
1
+ # Forgery
3
2
 
4
3
  The Problem:
5
4
  Making meaningful development data for your application.
@@ -12,14 +11,23 @@ Forgery generates fake data from dictionaries, formats, and recipes. The
12
11
  plugin includes a generator providing directories to make your own forgeries.
13
12
 
14
13
 
15
- Install
16
- =======
14
+ ## Install
17
15
 
18
- config.gem 'forgery', :source => 'http://gemcutter.org'
16
+ ### Run
19
17
 
18
+ gem install forgery
20
19
 
21
- Generator
22
- =========
20
+ ### Rails 2
21
+
22
+ # Add this to your config/environment.rb
23
+ config.gem 'forgery'
24
+
25
+ ### Rails 3
26
+
27
+ # Add this to your Gemfile
28
+ gem 'forgery'
29
+
30
+ ## Rails 2 Generator
23
31
 
24
32
  ruby script/generate forgery
25
33
 
@@ -42,8 +50,7 @@ See the forgeries in the plugin for examples of how to write your own.
42
50
  See which dictionaries each forgery uses to override them with your own.
43
51
 
44
52
 
45
- Examples
46
- ========
53
+ ## Examples
47
54
 
48
55
  Here I'll supply a few examples of how it works, in general. See each forgery
49
56
  for individual examples.
@@ -66,20 +73,17 @@ for individual examples.
66
73
  Forgery(:monetary).formatted_money # => "$3.48"
67
74
  Forgery(:monetary).money :min => 100, :max => 1000 # => "923.36"
68
75
 
69
- DOCUMENTATION
70
- =============
76
+ ## DOCUMENTATION
71
77
 
72
- Documentation can be found at [http://docs.github.com/sevenwire/forgery](http://docs.github.com/sevenwire/forgery)
78
+ Documentation can be found at [http://sevenwire.github.com/forgery/](http://sevenwire.github.com/forgery/)
73
79
 
74
- TODO
75
- ====
80
+ ## TODO
76
81
 
77
82
  * Add instanced forgeries for more relative information generation.
78
83
  * Add markov chains.
79
84
  * Add a way to use probability in forgeries.
80
85
 
81
- Thanks
82
- ======
86
+ ## Thanks
83
87
 
84
88
  Thanks to the authors and contributors:
85
89
 
@@ -87,9 +91,9 @@ Thanks to the authors and contributors:
87
91
  * Brandon Arbini (brandonarbini)
88
92
  * Josh Nichols (technicalpickles)
89
93
  * Jeremy Stephens (viking aka crookshanks)
94
+ * Darcy Laycock (Sutto)
90
95
 
91
- Notes
92
- =====
96
+ ## Notes
93
97
 
94
98
  This is a work in progress. If you find bugs or have forgeries to contribute,
95
99
  we'll gladly take them and give credit.
data/Rakefile CHANGED
@@ -33,18 +33,3 @@ Rake::RDocTask.new do |t|
33
33
  t.options << '--all'
34
34
  t.options << '--line-numbers'
35
35
  end
36
-
37
- begin
38
- require 'jeweler'
39
- Jeweler::Tasks.new do |s|
40
- s.name = "forgery"
41
- s.summary = "Easy and customizable generation of forged data."
42
- s.email = "nate@sevenwire.com"
43
- s.homepage = "http://github.com/sevenwire/forgery"
44
- s.description = "Easy and customizable generation of forged data. Can be used as a gem or a rails plugin. Includes rails generators for creating your own forgeries."
45
- s.authors = ["Nathan Sutton"]
46
- end
47
- Jeweler::GemcutterTasks.new
48
- rescue LoadError
49
- puts "Jeweler not available. Install it with: gem install jeweler"
50
- end
@@ -1,26 +1,29 @@
1
1
  # Require forgeries at the bottom of the file so Forgery works as a gem both
2
2
  # within rails and outside of it.
3
3
 
4
- current_path = File.expand_path(File.dirname(__FILE__))
4
+ current_path = File.expand_path(File.dirname(__FILE__)) + '/'
5
5
 
6
6
  # Loading forgery helpers.
7
- require current_path + '/forgery/file_reader'
8
- require current_path + '/forgery/dictionaries'
9
- require current_path + '/forgery/formats'
7
+ require 'forgery/file_reader'
8
+ require 'forgery/dictionaries'
9
+ require 'forgery/formats'
10
10
 
11
11
  # Loading class extensions
12
- Dir[current_path + '/forgery/extensions/**/*.rb'].uniq.each do |file|
12
+ Dir[current_path + 'forgery/extensions/**/*.rb'].uniq.each do |file|
13
13
  require file
14
14
  end
15
15
 
16
16
  # Load the forgery base class
17
- require current_path + '/forgery/forgery'
17
+ require 'forgery/forgery'
18
+
19
+ # Load the forgery version
20
+ require 'forgery/version'
18
21
 
19
22
  # Load the forgery api method
20
- require current_path + '/forgery/forgery_api'
23
+ require 'forgery/forgery_api'
21
24
 
22
25
  # Loading the other forgeries AFTER the initial forgery class is defined.
23
- Dir[current_path + '/forgery/forgery/**/*.rb'].uniq.each do |file|
26
+ Dir[current_path + 'forgery/forgery/**/*.rb'].uniq.each do |file|
24
27
  require file
25
28
  end
26
29
 
@@ -4,6 +4,6 @@ class Range
4
4
  raise ArgumentError if first > last
5
5
  Kernel.rand(last - first + 1) + first
6
6
  rescue ArgumentError
7
- self.to_a.random
7
+ to_a.random
8
8
  end
9
9
  end
@@ -1,6 +1,6 @@
1
1
  class String
2
2
  def to_numbers(replace='#')
3
- self.gsub(/#{replace}/){ Kernel.rand(10) }
3
+ gsub(/#{replace}/){ Kernel.rand(10) }
4
4
  end
5
5
 
6
6
  # Ripped right out of rails
@@ -9,10 +9,10 @@ class Forgery
9
9
  end
10
10
 
11
11
  def self.rails_root
12
- if defined?(RAILS_ROOT)
13
- RAILS_ROOT
14
- elsif defined?(Rails)
12
+ if defined?(Rails)
15
13
  Rails.root.to_s
14
+ elsif defined?(RAILS_ROOT)
15
+ RAILS_ROOT
16
16
  end
17
17
  end
18
18
 
@@ -37,7 +37,7 @@ class Forgery::Basic < Forgery
37
37
  :allow_upper => true,
38
38
  :allow_numeric => true,
39
39
  :allow_special => false}.merge!(options)
40
- self.text(options)
40
+ text(options)
41
41
  end
42
42
 
43
43
  # SHA1 hexdigests a password salted with the current time
@@ -13,7 +13,7 @@ class Forgery::Internet < Forgery
13
13
  end
14
14
 
15
15
  def self.email_address
16
- self.user_name + '@' + self.domain_name
16
+ user_name + '@' + domain_name
17
17
  end
18
18
 
19
19
  end
@@ -3,26 +3,26 @@ class Forgery::LoremIpsum < Forgery
3
3
  def self.text(what=:sentence, quantity=2, options={})
4
4
  case what
5
5
  when :character
6
- self.character(options)
6
+ character(options)
7
7
  when :characters
8
- self.characters(quantity, options)
8
+ characters(quantity, options)
9
9
  when :word
10
- self.word(options)
10
+ word(options)
11
11
  when :words
12
- self.words(quantity, options)
12
+ words(quantity, options)
13
13
  when :sentence
14
- self.sentence(options)
14
+ sentence(options)
15
15
  when :sentences
16
- self.sentences(quantity, options)
16
+ sentences(quantity, options)
17
17
  when :paragraph
18
- self.paragraph(options)
18
+ paragraph(options)
19
19
  when :paragraphs
20
- self.paragraphs(quantity, options)
20
+ paragraphs(quantity, options)
21
21
  end
22
22
  end
23
23
 
24
24
  def self.character(options={})
25
- self.characters(1, options)
25
+ characters(1, options)
26
26
  end
27
27
 
28
28
  def self.characters(quantity=10, options={})
@@ -32,7 +32,7 @@ class Forgery::LoremIpsum < Forgery
32
32
  end
33
33
 
34
34
  def self.word(options={})
35
- self.words(1, options)
35
+ words(1, options)
36
36
  end
37
37
 
38
38
  def self.words(quantity=10, options={})
@@ -42,7 +42,7 @@ class Forgery::LoremIpsum < Forgery
42
42
  end
43
43
 
44
44
  def self.sentence(options={})
45
- self.sentences(1, options)
45
+ sentences(1, options)
46
46
  end
47
47
 
48
48
  def self.sentences(quantity=2, options={})
@@ -52,7 +52,7 @@ class Forgery::LoremIpsum < Forgery
52
52
  end
53
53
 
54
54
  def self.paragraph(options={})
55
- self.paragraphs(1, options)
55
+ paragraphs(1, options)
56
56
  end
57
57
 
58
58
  def self.paragraphs(quantity=2, options={})
@@ -0,0 +1,3 @@
1
+ class Forgery
2
+ VERSION = "0.3.1"
3
+ end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forgery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 3
8
+ - 1
9
+ version: 0.3.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Nathan Sutton
@@ -9,31 +14,32 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2009-11-13 00:00:00 -06:00
17
+ date: 2010-04-09 00:00:00 -05:00
13
18
  default_executable:
14
- dependencies: []
15
-
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: rspec
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
16
32
  description: Easy and customizable generation of forged data. Can be used as a gem or a rails plugin. Includes rails generators for creating your own forgeries.
17
33
  email: nate@sevenwire.com
18
34
  executables: []
19
35
 
20
36
  extensions: []
21
37
 
22
- extra_rdoc_files:
23
- - LICENSE
24
- - README.markdown
38
+ extra_rdoc_files: []
39
+
25
40
  files:
26
- - .gitignore
27
- - LICENSE
28
- - README.markdown
29
- - Rakefile
30
- - VERSION.yml
31
- - forgery.gemspec
32
- - generators/forgery/USAGE
33
41
  - generators/forgery/forgery_generator.rb
34
- - init.rb
35
- - lib/forgery.rb
36
- - lib/forgery/dictionaries.rb
42
+ - generators/forgery/USAGE
37
43
  - lib/forgery/dictionaries/cities
38
44
  - lib/forgery/dictionaries/colors
39
45
  - lib/forgery/dictionaries/company_names
@@ -56,12 +62,12 @@ files:
56
62
  - lib/forgery/dictionaries/street_suffixes
57
63
  - lib/forgery/dictionaries/streets
58
64
  - lib/forgery/dictionaries/top_level_domains
65
+ - lib/forgery/dictionaries.rb
59
66
  - lib/forgery/extensions/array.rb
60
67
  - lib/forgery/extensions/hash.rb
61
68
  - lib/forgery/extensions/range.rb
62
69
  - lib/forgery/extensions/string.rb
63
70
  - lib/forgery/file_reader.rb
64
- - lib/forgery/forgery.rb
65
71
  - lib/forgery/forgery/address.rb
66
72
  - lib/forgery/forgery/basic.rb
67
73
  - lib/forgery/forgery/internet.rb
@@ -69,67 +75,46 @@ files:
69
75
  - lib/forgery/forgery/monetary.rb
70
76
  - lib/forgery/forgery/name.rb
71
77
  - lib/forgery/forgery/personal.rb
78
+ - lib/forgery/forgery.rb
72
79
  - lib/forgery/forgery_api.rb
73
- - lib/forgery/formats.rb
74
80
  - lib/forgery/formats/phone
75
81
  - lib/forgery/formats/street_number
76
82
  - lib/forgery/formats/zip
77
- - spec/dictionaries_spec.rb
78
- - spec/extensions/array_spec.rb
79
- - spec/extensions/range_spec.rb
80
- - spec/extensions/string_spec.rb
81
- - spec/file_reader_spec.rb
82
- - spec/forgery/address_spec.rb
83
- - spec/forgery/basic_spec.rb
84
- - spec/forgery/internet_spec.rb
85
- - spec/forgery/lorem_ipsum_spec.rb
86
- - spec/forgery/monetary_spec.rb
87
- - spec/forgery/name_spec.rb
88
- - spec/forgery/personal_spec.rb
89
- - spec/forgery_spec.rb
90
- - spec/formats_spec.rb
91
- - spec/spec_helper.rb
83
+ - lib/forgery/formats.rb
84
+ - lib/forgery/version.rb
85
+ - lib/forgery.rb
86
+ - LICENSE
87
+ - README.markdown
88
+ - Rakefile
92
89
  has_rdoc: true
93
90
  homepage: http://github.com/sevenwire/forgery
94
91
  licenses: []
95
92
 
96
93
  post_install_message:
97
- rdoc_options:
98
- - --charset=UTF-8
94
+ rdoc_options: []
95
+
99
96
  require_paths:
100
97
  - lib
101
98
  required_ruby_version: !ruby/object:Gem::Requirement
102
99
  requirements:
103
100
  - - ">="
104
101
  - !ruby/object:Gem::Version
102
+ segments:
103
+ - 0
105
104
  version: "0"
106
- version:
107
105
  required_rubygems_version: !ruby/object:Gem::Requirement
108
106
  requirements:
109
107
  - - ">="
110
108
  - !ruby/object:Gem::Version
109
+ segments:
110
+ - 0
111
111
  version: "0"
112
- version:
113
112
  requirements: []
114
113
 
115
- rubyforge_project:
116
- rubygems_version: 1.3.5
114
+ rubyforge_project: forgery
115
+ rubygems_version: 1.3.6
117
116
  signing_key:
118
117
  specification_version: 3
119
118
  summary: Easy and customizable generation of forged data.
120
- test_files:
121
- - spec/dictionaries_spec.rb
122
- - spec/extensions/array_spec.rb
123
- - spec/extensions/range_spec.rb
124
- - spec/extensions/string_spec.rb
125
- - spec/file_reader_spec.rb
126
- - spec/forgery/address_spec.rb
127
- - spec/forgery/basic_spec.rb
128
- - spec/forgery/internet_spec.rb
129
- - spec/forgery/lorem_ipsum_spec.rb
130
- - spec/forgery/monetary_spec.rb
131
- - spec/forgery/name_spec.rb
132
- - spec/forgery/personal_spec.rb
133
- - spec/forgery_spec.rb
134
- - spec/formats_spec.rb
135
- - spec/spec_helper.rb
119
+ test_files: []
120
+
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- /coverage
2
- /doc
3
- /pkg
@@ -1,5 +0,0 @@
1
- ---
2
- :minor: 3
3
- :patch: 0
4
- :build:
5
- :major: 0
@@ -1,120 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{forgery}
8
- s.version = "0.3.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Nathan Sutton"]
12
- s.date = %q{2009-11-13}
13
- s.description = %q{Easy and customizable generation of forged data. Can be used as a gem or a rails plugin. Includes rails generators for creating your own forgeries.}
14
- s.email = %q{nate@sevenwire.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.markdown"
18
- ]
19
- s.files = [
20
- ".gitignore",
21
- "LICENSE",
22
- "README.markdown",
23
- "Rakefile",
24
- "VERSION.yml",
25
- "forgery.gemspec",
26
- "generators/forgery/USAGE",
27
- "generators/forgery/forgery_generator.rb",
28
- "init.rb",
29
- "lib/forgery.rb",
30
- "lib/forgery/dictionaries.rb",
31
- "lib/forgery/dictionaries/cities",
32
- "lib/forgery/dictionaries/colors",
33
- "lib/forgery/dictionaries/company_names",
34
- "lib/forgery/dictionaries/countries",
35
- "lib/forgery/dictionaries/female_first_names",
36
- "lib/forgery/dictionaries/frequencies",
37
- "lib/forgery/dictionaries/genders",
38
- "lib/forgery/dictionaries/languages",
39
- "lib/forgery/dictionaries/last_names",
40
- "lib/forgery/dictionaries/lorem_ipsum",
41
- "lib/forgery/dictionaries/male_first_names",
42
- "lib/forgery/dictionaries/name_suffixes",
43
- "lib/forgery/dictionaries/name_titles",
44
- "lib/forgery/dictionaries/province_abbrevs",
45
- "lib/forgery/dictionaries/provinces",
46
- "lib/forgery/dictionaries/races",
47
- "lib/forgery/dictionaries/shirt_sizes",
48
- "lib/forgery/dictionaries/state_abbrevs",
49
- "lib/forgery/dictionaries/states",
50
- "lib/forgery/dictionaries/street_suffixes",
51
- "lib/forgery/dictionaries/streets",
52
- "lib/forgery/dictionaries/top_level_domains",
53
- "lib/forgery/extensions/array.rb",
54
- "lib/forgery/extensions/hash.rb",
55
- "lib/forgery/extensions/range.rb",
56
- "lib/forgery/extensions/string.rb",
57
- "lib/forgery/file_reader.rb",
58
- "lib/forgery/forgery.rb",
59
- "lib/forgery/forgery/address.rb",
60
- "lib/forgery/forgery/basic.rb",
61
- "lib/forgery/forgery/internet.rb",
62
- "lib/forgery/forgery/lorem_ipsum.rb",
63
- "lib/forgery/forgery/monetary.rb",
64
- "lib/forgery/forgery/name.rb",
65
- "lib/forgery/forgery/personal.rb",
66
- "lib/forgery/forgery_api.rb",
67
- "lib/forgery/formats.rb",
68
- "lib/forgery/formats/phone",
69
- "lib/forgery/formats/street_number",
70
- "lib/forgery/formats/zip",
71
- "spec/dictionaries_spec.rb",
72
- "spec/extensions/array_spec.rb",
73
- "spec/extensions/range_spec.rb",
74
- "spec/extensions/string_spec.rb",
75
- "spec/file_reader_spec.rb",
76
- "spec/forgery/address_spec.rb",
77
- "spec/forgery/basic_spec.rb",
78
- "spec/forgery/internet_spec.rb",
79
- "spec/forgery/lorem_ipsum_spec.rb",
80
- "spec/forgery/monetary_spec.rb",
81
- "spec/forgery/name_spec.rb",
82
- "spec/forgery/personal_spec.rb",
83
- "spec/forgery_spec.rb",
84
- "spec/formats_spec.rb",
85
- "spec/spec_helper.rb"
86
- ]
87
- s.homepage = %q{http://github.com/sevenwire/forgery}
88
- s.rdoc_options = ["--charset=UTF-8"]
89
- s.require_paths = ["lib"]
90
- s.rubygems_version = %q{1.3.5}
91
- s.summary = %q{Easy and customizable generation of forged data.}
92
- s.test_files = [
93
- "spec/dictionaries_spec.rb",
94
- "spec/extensions/array_spec.rb",
95
- "spec/extensions/range_spec.rb",
96
- "spec/extensions/string_spec.rb",
97
- "spec/file_reader_spec.rb",
98
- "spec/forgery/address_spec.rb",
99
- "spec/forgery/basic_spec.rb",
100
- "spec/forgery/internet_spec.rb",
101
- "spec/forgery/lorem_ipsum_spec.rb",
102
- "spec/forgery/monetary_spec.rb",
103
- "spec/forgery/name_spec.rb",
104
- "spec/forgery/personal_spec.rb",
105
- "spec/forgery_spec.rb",
106
- "spec/formats_spec.rb",
107
- "spec/spec_helper.rb"
108
- ]
109
-
110
- if s.respond_to? :specification_version then
111
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
112
- s.specification_version = 3
113
-
114
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
115
- else
116
- end
117
- else
118
- end
119
- end
120
-
data/init.rb DELETED
@@ -1 +0,0 @@
1
- require File.dirname(__FILE__) + '/lib/forgery'
@@ -1,35 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe Forgery::Dictionaries do
4
- it "should check if the dictionary is loaded" do
5
- dictionaries = Forgery::Dictionaries.new
6
-
7
- dictionaries[:colors]
8
-
9
- dictionaries.should be_loaded(:colors)
10
- end
11
-
12
- it "should load a dictionary when called by the key" do
13
- dictionaries = Forgery::Dictionaries.new
14
-
15
- dictionaries.reset!
16
-
17
- dictionaries.should_not be_loaded(:colors)
18
-
19
- dictionaries[:colors]
20
-
21
- dictionaries.should be_loaded(:colors)
22
- end
23
-
24
- it "should clear the loaded dictionaries when calling reset!" do
25
- dictionaries = Forgery::Dictionaries.new
26
-
27
- dictionaries[:colors]
28
-
29
- dictionaries.should be_loaded(:colors)
30
-
31
- dictionaries.reset!
32
-
33
- dictionaries.should_not be_loaded(:colors)
34
- end
35
- end
@@ -1,25 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Array do
4
- before do
5
- @array = [0,1,2,3,4,5,6,7,8,9]
6
- end
7
-
8
- it "should get a random item out of the array" do
9
- 10.times { @array.should include(@array.random) }
10
- end
11
-
12
- it "should return nil if the array is empty" do
13
- [].random.should be_nil
14
- end
15
-
16
- it "should return a random subset of the array" do
17
- @array.random_subset(5).each do |i|
18
- @array.should include(i)
19
- end
20
- end
21
-
22
- it "should return a random subset of the array that is 3 long" do
23
- @array.random_subset(3).size.should == 3
24
- end
25
- end
@@ -1,26 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
- require 'timeout'
3
-
4
- describe Range do
5
- it "should get a random number out of the range" do
6
- range = (0..9)
7
- 10.times { range.should include(range.random) }
8
- end
9
-
10
- it "should not take a long time when the range is huge" do
11
- Timeout.timeout(1){(1234567890..12345678901234567890).random}.should_not raise_error(Timeout::Error)
12
- end
13
-
14
- it "should return nil for a random number from a reverse range" do
15
- 10.times { (9..0).random.should be_nil }
16
- end
17
-
18
- it "should get a random string our of the range" do
19
- range = ("a".."z")
20
- 10.times { range.should include(range.random) }
21
- end
22
-
23
- it "should return nil if the maximum is less than the minimum" do
24
- ("z".."a").random.should be_nil
25
- end
26
- end
@@ -1,29 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe String do
4
- it "should change a single # to a number 0-9" do
5
- (0..9).should include(Integer("#".to_numbers))
6
- end
7
-
8
- it "should change two #'s to two numbers 0-9" do
9
- "##".to_numbers.split("").each do |s|
10
- (0..9).should include(Integer(s))
11
- end
12
- end
13
-
14
- it "should only replace #'s in the string with numbers 0-9" do
15
- s = '###-###-####'
16
- n = s.to_numbers
17
- 0.upto(s.size - 1) do |i|
18
- if s[i, 1] == "#"
19
- ('0'..'9').should include(n[i, 1])
20
- else
21
- ('0'..'9').should_not include(n[i, 1])
22
- end
23
- end
24
- end
25
-
26
- it "should allow the replacing of a different character" do
27
- (0..9).should include(Integer("-".to_numbers("-")))
28
- end
29
- end
@@ -1,11 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe Forgery::FileReader do
4
- it "should return an array when calling read_dictionary" do
5
- Forgery::FileReader.read_dictionary(:colors).should be_is_a(Array)
6
- end
7
-
8
- it "should return an array when calling read_format" do
9
- Forgery::FileReader.read_format(:phone).should be_is_a(Array)
10
- end
11
- end
@@ -1,79 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::Address do
4
- it "should return a random street" do
5
- Forgery.dictionaries[:streets].should include(Forgery::Address.street_name)
6
- end
7
-
8
- it "should return a random street number" do
9
- original_format = Forgery::Address.street_number.gsub(/\d/, '#')
10
- Forgery.formats[:street_number].should include(original_format)
11
- end
12
-
13
- it "should return a random street suffix" do
14
- Forgery.dictionaries[:street_suffixes].should include(Forgery::Address.street_suffix)
15
- end
16
-
17
- describe ".street_address" do
18
- before do
19
- @split_address = Forgery::Address.street_address.split
20
- end
21
-
22
- it "should return a random street suffix" do
23
- street_suffix = @split_address.pop
24
- Forgery.dictionaries[:street_suffixes].should include(street_suffix)
25
- end
26
-
27
- it "should return a random street number" do
28
- street_number_format = @split_address.shift.gsub(/\d/, '#')
29
- Forgery.formats[:street_number].should include(street_number_format)
30
- end
31
-
32
- it "should return a random street" do
33
- @split_address.pop
34
- @split_address.shift
35
- street = @split_address.join(" ")
36
- Forgery.dictionaries[:streets].should include(street)
37
- end
38
- end
39
-
40
- it "should return a random city" do
41
- city = Forgery::Address.city
42
- Forgery.dictionaries[:cities].should include(city)
43
- end
44
-
45
- it "should return a random state" do
46
- state = Forgery::Address.state
47
- Forgery.dictionaries[:states].should include(state)
48
- end
49
-
50
- it "should return a random state abbreviation" do
51
- state_abbrev = Forgery::Address.state_abbrev
52
- Forgery.dictionaries[:state_abbrevs].should include(state_abbrev)
53
- end
54
-
55
- it "should return a random Canadian province or territory" do
56
- province = Forgery::Address.province
57
- Forgery.dictionaries[:provinces].should include(province)
58
- end
59
-
60
- it "should return a random Canadian province or territory abbreviation" do
61
- province_abbrev = Forgery::Address.province_abbrev
62
- Forgery.dictionaries[:province_abbrevs].should include(province_abbrev)
63
- end
64
-
65
- it "should return a random country" do
66
- country = Forgery::Address.country
67
- Forgery.dictionaries[:countries].should include(country)
68
- end
69
-
70
- it "should return a random zip code" do
71
- zip_format = Forgery::Address.zip.gsub(/\d/, '#')
72
- Forgery.formats[:zip].should include(zip_format)
73
- end
74
-
75
- it "should return a random phone number" do
76
- phone_format = Forgery::Address.phone.gsub(/\d/, '#')
77
- Forgery.formats[:phone].should include(phone_format)
78
- end
79
- end
@@ -1,175 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::Basic do
4
- describe ".password" do
5
- it "should only uppercase characters" do
6
- Forgery::Basic.password(:allow_lower => false,
7
- :allow_upper => true,
8
- :allow_numeric => false,
9
- :allow_special => false).should only_contain(Forgery::Basic::UPPER_ALPHA)
10
- end
11
-
12
- it "should only contain lowercase characters" do
13
- Forgery::Basic.password(:allow_lower => true,
14
- :allow_upper => false,
15
- :allow_numeric => false,
16
- :allow_special => false).should only_contain(Forgery::Basic::LOWER_ALPHA)
17
- end
18
-
19
- it "should only contain numeric characters" do
20
- Forgery::Basic.password(:allow_lower => false,
21
- :allow_upper => false,
22
- :allow_numeric => true,
23
- :allow_special => false).should only_contain(Forgery::Basic::NUMERIC)
24
- end
25
-
26
- it "should only contain special characters" do
27
- Forgery::Basic.password(:allow_lower => false,
28
- :allow_upper => false,
29
- :allow_numeric => false,
30
- :allow_special => true).should only_contain(Forgery::Basic::SPECIAL_CHARACTERS)
31
- end
32
-
33
- it "should only contain lower and uppercase characters" do
34
- Forgery::Basic.password(:allow_lower => true,
35
- :allow_upper => true,
36
- :allow_numeric => false,
37
- :allow_special => false).should only_contain(Forgery::Basic::LOWER_ALPHA,
38
- Forgery::Basic::UPPER_ALPHA)
39
- end
40
-
41
- it "should only contain numeric and special characters" do
42
- Forgery::Basic.password(:allow_lower => false,
43
- :allow_upper => false,
44
- :allow_numeric => true,
45
- :allow_special => true).should only_contain(Forgery::Basic::NUMERIC,
46
- Forgery::Basic::SPECIAL_CHARACTERS)
47
- end
48
-
49
- it "should contain any of the defined characters" do
50
- Forgery::Basic.password(:allow_lower => true,
51
- :allow_upper => true,
52
- :allow_numeric => true,
53
- :allow_special => true).should only_contain(Forgery::Basic::NUMERIC,
54
- Forgery::Basic::SPECIAL_CHARACTERS,
55
- Forgery::Basic::LOWER_ALPHA,
56
- Forgery::Basic::UPPER_ALPHA)
57
- end
58
- end
59
-
60
- describe ".encrypt" do
61
- it "should encrypt to hex digits" do
62
- Forgery::Basic.encrypt("something").should only_contain(Forgery::Basic::HEX_DIGITS)
63
- end
64
-
65
- it "should encrypt different words to different output" do
66
- Forgery::Basic.encrypt("foo").should_not == Forgery::Basic.encrypt("bar")
67
- end
68
-
69
- it "should allow a salt that changes the output" do
70
- Forgery::Basic.encrypt("foo", "baz").should_not == Forgery::Basic.encrypt("foo", "bar")
71
- end
72
-
73
- it "should have the same output when encrypting twice" do
74
- Forgery::Basic.encrypt("foo", "bar").should == Forgery::Basic.encrypt("foo", "bar")
75
- end
76
- end
77
-
78
- describe ".boolean" do
79
- it "should return true or false" do
80
- [true, false].should include(Forgery::Basic.boolean)
81
- end
82
- end
83
-
84
- describe ".color" do
85
- it "should return a random color" do
86
- Forgery.dictionaries[:colors].should include(Forgery::Basic.color)
87
- end
88
- end
89
-
90
- describe ".hex_color" do
91
- it "should return a 6-character hex color" do
92
- Forgery::Basic.hex_color.should match(/#(#{Forgery::Basic::HEX_DIGITS.join('|')}){6}/)
93
- end
94
- end
95
-
96
- describe ".short_hex_color" do
97
- it "should return a 3-character hex color" do
98
- Forgery::Basic.short_hex_color.should match(/#(#{Forgery::Basic::HEX_DIGITS.join('|')}){3}/)
99
- end
100
- end
101
-
102
- describe ".number" do
103
- it "should return a number >= the at_least option" do
104
- Forgery::Basic.number(:at_least => 2).should >= 2
105
- end
106
-
107
- it "should return a number <= the at_most option" do
108
- Forgery::Basic.number(:at_most => 12).should <= 12
109
- end
110
- end
111
-
112
- describe ".text" do
113
- it "should return text whose length is >= the at_least option" do
114
- Forgery::Basic.text(:at_least => 5).size.should >= 5
115
- end
116
-
117
- it "should return text whose length is <= the at_most option" do
118
- Forgery::Basic.text(:at_least => 15).size.should <= 15
119
- end
120
-
121
- it "should only uppercase characters" do
122
- Forgery::Basic.text(:allow_lower => false,
123
- :allow_upper => true,
124
- :allow_numeric => false,
125
- :allow_special => false).should only_contain(Forgery::Basic::UPPER_ALPHA)
126
- end
127
-
128
- it "should only contain lowercase characters" do
129
- Forgery::Basic.text(:allow_lower => true,
130
- :allow_upper => false,
131
- :allow_numeric => false,
132
- :allow_special => false).should only_contain(Forgery::Basic::LOWER_ALPHA)
133
- end
134
-
135
- it "should only contain numeric characters" do
136
- Forgery::Basic.text(:allow_lower => false,
137
- :allow_upper => false,
138
- :allow_numeric => true,
139
- :allow_special => false).should only_contain(Forgery::Basic::NUMERIC)
140
- end
141
-
142
- it "should only contain special characters" do
143
- Forgery::Basic.text(:allow_lower => false,
144
- :allow_upper => false,
145
- :allow_numeric => false,
146
- :allow_special => true).should only_contain(Forgery::Basic::SPECIAL_CHARACTERS)
147
- end
148
-
149
- it "should only contain lower and uppercase characters" do
150
- Forgery::Basic.text(:allow_lower => true,
151
- :allow_upper => true,
152
- :allow_numeric => false,
153
- :allow_special => false).should only_contain(Forgery::Basic::LOWER_ALPHA,
154
- Forgery::Basic::UPPER_ALPHA)
155
- end
156
-
157
- it "should only contain numeric and special characters" do
158
- Forgery::Basic.text(:allow_lower => false,
159
- :allow_upper => false,
160
- :allow_numeric => true,
161
- :allow_special => true).should only_contain(Forgery::Basic::NUMERIC,
162
- Forgery::Basic::SPECIAL_CHARACTERS)
163
- end
164
-
165
- it "should contain any of the defined characters" do
166
- Forgery::Basic.text(:allow_lower => true,
167
- :allow_upper => true,
168
- :allow_numeric => true,
169
- :allow_special => true).should only_contain(Forgery::Basic::NUMERIC,
170
- Forgery::Basic::SPECIAL_CHARACTERS,
171
- Forgery::Basic::LOWER_ALPHA,
172
- Forgery::Basic::UPPER_ALPHA)
173
- end
174
- end
175
- end
@@ -1,30 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::Internet do
4
- describe ".user_name" do
5
- it "should return a username that is lowercase" do
6
- Forgery::Internet.user_name.should only_contain(Forgery::Basic::LOWER_ALPHA)
7
- end
8
- end
9
-
10
- it "should return a top level domain" do
11
- Forgery.dictionaries[:top_level_domains].should include(Forgery::Internet.top_level_domain)
12
- end
13
-
14
- describe ".domain_name" do
15
- it "should return a domain name that contains a lowercase company name" do
16
- downcase_company_name = Forgery::Internet.domain_name.split('.').first
17
- Forgery.dictionaries[:company_names].any?{ |cn| cn =~ /#{downcase_company_name}/i }
18
- end
19
-
20
- it "should return a domain name that contains a top level domain" do
21
- Forgery.dictionaries[:top_level_domains].should include(Forgery::Internet.domain_name.split('.').last)
22
- end
23
- end
24
-
25
- describe ".email_address" do
26
- it "should match the email format" do
27
- Forgery::Internet.email_address.should match(/.+@.+\.(#{Forgery.dictionaries[:top_level_domains].join("|")})/)
28
- end
29
- end
30
- end
@@ -1,128 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::LoremIpsum do
4
- describe ".paragraphs" do
5
- it "should return text" do
6
- Forgery::LoremIpsum.paragraphs.should be_a_kind_of(String)
7
- end
8
-
9
- it "should return text with 1 or more character" do
10
- Forgery::LoremIpsum.paragraphs.size.should >= 1
11
- end
12
-
13
- it "should default to returning 2 paragraphs separated by \\n\\n" do
14
- Forgery::LoremIpsum.paragraphs.split("\n\n").size.should == 2
15
- end
16
-
17
- it "should default to returning 3 sentences per paragraph" do
18
- paragraphs = Forgery::LoremIpsum.paragraphs.split("\n\n")
19
- paragraphs.each do |paragraph|
20
- paragraph.scan(".").size.should == 3
21
- end
22
- end
23
-
24
- it "should wrap paragraphs in html paragraph tags when the :html option is true" do
25
- paragraphs = Forgery::LoremIpsum.paragraphs(2, :html => true).split("\n\n")
26
- paragraphs.each do |paragraph|
27
- paragraph.should match(/<p>.+?<\/p>/)
28
- end
29
- end
30
-
31
- it "should wrap paragraphs in specified wrapping text" do
32
- paragraphs = Forgery::LoremIpsum.paragraphs(2, :wrap => {:start => "foo", :end => "bar"}).split("\n\n")
33
- paragraphs.each do |paragraph|
34
- paragraph.should match(/foo.+bar/)
35
- end
36
- end
37
-
38
- it "should separate paragraphs with the specified string" do
39
- Forgery::LoremIpsum.paragraphs(2, :separator => "foo").split("foo").size.should == 2
40
- end
41
- end
42
-
43
- describe ".paragraph" do
44
- it "should return text" do
45
- Forgery::LoremIpsum.paragraph.should be_a_kind_of(String)
46
- end
47
-
48
- it "should return text with 1 or more character" do
49
- Forgery::LoremIpsum.paragraph.size.should >= 1
50
- end
51
-
52
- it "should return a single paragraph" do
53
- Forgery::LoremIpsum.paragraph.scan("\n\n").size.should == 0
54
- end
55
- end
56
-
57
- describe ".sentences" do
58
- it "should return text" do
59
- Forgery::LoremIpsum.sentences.should be_a_kind_of(String)
60
- end
61
-
62
- it "should return text with 1 or more character" do
63
- Forgery::LoremIpsum.sentences.size.should >= 1
64
- end
65
-
66
- it "should return two sentences by default" do
67
- Forgery::LoremIpsum.sentences.scan(".").size.should == 2
68
- end
69
-
70
- it "should return as many sentences as you specify" do
71
- Forgery::LoremIpsum.sentences(4).scan(".").size.should == 4
72
- end
73
- end
74
-
75
- describe ".sentence" do
76
- it "should return text" do
77
- Forgery::LoremIpsum.sentence.should be_a_kind_of(String)
78
- end
79
-
80
- it "should return text with 1 or more character" do
81
- Forgery::LoremIpsum.sentence.size.should >= 1
82
- end
83
-
84
- it "should return a single sentence" do
85
- Forgery::LoremIpsum.sentence.scan(".").size.should == 1
86
- end
87
- end
88
-
89
- describe ".words" do
90
- it "should return text" do
91
- Forgery::LoremIpsum.words.should be_a_kind_of(String)
92
- end
93
-
94
- it "should return text with 1 or more character" do
95
- Forgery::LoremIpsum.words.size.should >= 1
96
- end
97
- end
98
-
99
- describe ".word" do
100
- it "should return text" do
101
- Forgery::LoremIpsum.word.should be_a_kind_of(String)
102
- end
103
-
104
- it "should return text with 1 or more character" do
105
- Forgery::LoremIpsum.word.size.should >= 1
106
- end
107
- end
108
-
109
- describe ".characters" do
110
- it "should return text" do
111
- Forgery::LoremIpsum.characters.should be_a_kind_of(String)
112
- end
113
-
114
- it "should return text with 1 or more character" do
115
- Forgery::LoremIpsum.characters.size.should >= 1
116
- end
117
- end
118
-
119
- describe ".character" do
120
- it "should return text" do
121
- Forgery::LoremIpsum.character.should be_a_kind_of(String)
122
- end
123
-
124
- it "should return text with 1 or more character" do
125
- Forgery::LoremIpsum.character.size.should >= 1
126
- end
127
- end
128
- end
@@ -1,4 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::Monetary do
4
- end
@@ -1,4 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::Name do
4
- end
@@ -1,15 +0,0 @@
1
- require File.dirname(__FILE__) + '/../spec_helper'
2
-
3
- describe Forgery::Personal do
4
- describe '.gender' do
5
- it 'should return male or female' do
6
- Forgery.dictionaries[:genders].should include(Forgery::Personal.gender)
7
- end
8
- end
9
-
10
- describe '.shirt_size' do
11
- it 'should return a sane size' do
12
- Forgery.dictionaries[:shirt_sizes].should include(Forgery::Personal.shirt_size)
13
- end
14
- end
15
- end
@@ -1,69 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
- require 'pathname'
3
-
4
- describe Forgery do
5
- it "should load a dictionary when it is requested" do
6
- Forgery.dictionaries.reset!
7
-
8
- Forgery.dictionaries.should_not be_loaded(:colors)
9
-
10
- Forgery.dictionaries[:colors]
11
-
12
- Forgery.dictionaries.should be_loaded(:colors)
13
- end
14
-
15
- it "should load formats when it is requested" do
16
- Forgery.formats.reset!
17
-
18
- Forgery.formats.should_not be_loaded(:phone)
19
-
20
- Forgery.formats[:phone]
21
-
22
- Forgery.formats.should be_loaded(:phone)
23
- end
24
-
25
- it "should accept a symbol and return the appropriate forgery class" do
26
- Forgery(:address).should == Forgery::Address
27
- Forgery(:basic).should == Forgery::Basic
28
- Forgery(:internet).should == Forgery::Internet
29
- end
30
-
31
- it "should accept two symbols, finding the right class and calling the appropriate method" do
32
- Forgery::Address.should_receive(:street_name)
33
- Forgery(:address, :street_name)
34
-
35
- Forgery::Name.should_receive(:full_name)
36
- Forgery(:name, :full_name)
37
- end
38
-
39
- it "should accept two symbols and arguments, passing them along to the appropriate method" do
40
- Forgery::LoremIpsum.should_receive(:text).with(:sentences, 2)
41
- Forgery(:lorem_ipsum, :text, :sentences, 2)
42
- end
43
-
44
- it "should return the rails root path if RAILS_ROOT is defined" do
45
- RAILS_ROOT = '/path/from/rails/root/const'
46
- Forgery.rails_root.should == '/path/from/rails/root/const'
47
- Object.instance_eval { remove_const(:RAILS_ROOT) }
48
- end
49
-
50
- it "should return the rails root path as a string if Rails.root is defined" do
51
- Rails = Object.new
52
- Rails.stub!(:root).and_return(Pathname.new('/path/from/rails/dot/root'))
53
- Forgery.rails_root.should == '/path/from/rails/dot/root'
54
- Object.instance_eval { remove_const(:Rails) }
55
- end
56
-
57
- it "should return nil when RAILS_ROOT and Rails.root are not defined" do
58
- Forgery.rails_root.should be_nil
59
- end
60
-
61
- it "should not be a rails environment when there is not a rails_root" do
62
- Forgery.rails?.should be_false
63
- end
64
-
65
- it "should be a rails environment when there is a rails_root" do
66
- Forgery.stub!(:rails?).and_return(true)
67
- Forgery.rails?.should be_true
68
- end
69
- end
@@ -1,35 +0,0 @@
1
- require File.dirname(__FILE__) + '/spec_helper'
2
-
3
- describe Forgery::Formats do
4
- it "should check if the dictionary is loaded" do
5
- formats = Forgery::Formats.new
6
-
7
- formats[:phone]
8
-
9
- formats.should be_loaded(:phone)
10
- end
11
-
12
- it "should load a dictionary when called by the key" do
13
- formats = Forgery::Formats.new
14
-
15
- formats.reset!
16
-
17
- formats.should_not be_loaded(:phone)
18
-
19
- formats[:phone]
20
-
21
- formats.should be_loaded(:phone)
22
- end
23
-
24
- it "should clear the loaded formats when calling reset!" do
25
- formats = Forgery::Formats.new
26
-
27
- formats[:phone]
28
-
29
- formats.should be_loaded(:phone)
30
-
31
- formats.reset!
32
-
33
- formats.should_not be_loaded(:phone)
34
- end
35
- end
@@ -1,32 +0,0 @@
1
- require 'spec'
2
- require File.dirname(__FILE__) + '/../init'
3
-
4
- Spec::Runner.configure do |config|
5
-
6
- end
7
-
8
- class OnlyContain
9
- def initialize(*expected)
10
- @expected = [expected].flatten
11
- end
12
-
13
- def matches?(target)
14
- @target = target.dup
15
- @expected.each do |e|
16
- target.gsub!(e, '')
17
- end
18
- target.size == 0
19
- end
20
-
21
- def failure_message
22
- "expected #{@target} to only contain #{@expected.join(', ')}"
23
- end
24
-
25
- def failure_message
26
- "expected #{@target} to not only contain #{@expected.join(', ')}"
27
- end
28
- end
29
-
30
- def only_contain(*expected)
31
- OnlyContain.new(expected)
32
- end