forgery 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/README.markdown +99 -0
  2. data/VERSION.yml +4 -0
  3. data/generators/forgery/USAGE +6 -0
  4. data/generators/forgery/forgery_generator.rb +12 -0
  5. data/lib/dictionaries.rb +24 -0
  6. data/lib/dictionaries/cities +478 -0
  7. data/lib/dictionaries/colors +19 -0
  8. data/lib/dictionaries/company_names +400 -0
  9. data/lib/dictionaries/countries +249 -0
  10. data/lib/dictionaries/female_first_names +100 -0
  11. data/lib/dictionaries/frequencies +8 -0
  12. data/lib/dictionaries/genders +2 -0
  13. data/lib/dictionaries/languages +97 -0
  14. data/lib/dictionaries/last_names +250 -0
  15. data/lib/dictionaries/lorem_ipsum +151 -0
  16. data/lib/dictionaries/male_first_names +100 -0
  17. data/lib/dictionaries/name_suffixes +5 -0
  18. data/lib/dictionaries/name_titles +6 -0
  19. data/lib/dictionaries/province_abbrevs +13 -0
  20. data/lib/dictionaries/provinces +13 -0
  21. data/lib/dictionaries/races +93 -0
  22. data/lib/dictionaries/shirt_sizes +7 -0
  23. data/lib/dictionaries/state_abbrevs +50 -0
  24. data/lib/dictionaries/states +50 -0
  25. data/lib/dictionaries/street_suffixes +21 -0
  26. data/lib/dictionaries/streets +500 -0
  27. data/lib/dictionaries/top_level_domains +9 -0
  28. data/lib/extensions/array.rb +11 -0
  29. data/lib/extensions/hash.rb +12 -0
  30. data/lib/extensions/range.rb +9 -0
  31. data/lib/extensions/string.rb +48 -0
  32. data/lib/file_reader.rb +53 -0
  33. data/lib/forgeries/address_forgery.rb +136 -0
  34. data/lib/forgeries/basic_forgery.rb +71 -0
  35. data/lib/forgeries/internet_forgery.rb +17 -0
  36. data/lib/forgeries/lorem_ipsum_forgery.rb +112 -0
  37. data/lib/forgeries/monetary_forgery.rb +13 -0
  38. data/lib/forgeries/name_forgery.rb +34 -0
  39. data/lib/forgeries/personal_forgery.rb +22 -0
  40. data/lib/forgery.rb +47 -0
  41. data/lib/formats.rb +24 -0
  42. data/lib/formats/phone +1 -0
  43. data/lib/formats/street_number +5 -0
  44. data/lib/formats/zip +2 -0
  45. data/spec/dictionaries_spec.rb +35 -0
  46. data/spec/extensions/array_spec.rb +25 -0
  47. data/spec/extensions/range_spec.rb +26 -0
  48. data/spec/extensions/string_spec.rb +29 -0
  49. data/spec/file_reader_spec.rb +11 -0
  50. data/spec/forgeries/address_forgery_spec.rb +79 -0
  51. data/spec/forgeries/basic_forgery_spec.rb +175 -0
  52. data/spec/forgeries/internet_forgery_spec.rb +30 -0
  53. data/spec/forgeries/lorem_ipsum_forgery_spec.rb +128 -0
  54. data/spec/forgeries/monetary_forgery_spec.rb +4 -0
  55. data/spec/forgeries/name_forgery_spec.rb +4 -0
  56. data/spec/forgeries/personal_forgery_spec.rb +15 -0
  57. data/spec/forgery_spec.rb +42 -0
  58. data/spec/formats_spec.rb +35 -0
  59. data/spec/spec_helper.rb +32 -0
  60. metadata +114 -0
@@ -0,0 +1,30 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe InternetForgery do
4
+ describe ".user_name" do
5
+ it "should return a username that is lowercase" do
6
+ InternetForgery.user_name.should only_contain(BasicForgery::LOWER_ALPHA)
7
+ end
8
+ end
9
+
10
+ it "should return a top level domain" do
11
+ Forgery.dictionaries[:top_level_domains].should include(InternetForgery.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 = InternetForgery.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(InternetForgery.domain_name.split('.').last)
22
+ end
23
+ end
24
+
25
+ describe ".email_address" do
26
+ it "should match the email format" do
27
+ InternetForgery.email_address.should match(/.+@.+\.(#{Forgery.dictionaries[:top_level_domains].join("|")})/)
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,128 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe LoremIpsumForgery do
4
+ describe ".paragraphs" do
5
+ it "should return text" do
6
+ LoremIpsumForgery.paragraphs.should be_a_kind_of(String)
7
+ end
8
+
9
+ it "should return text with 1 or more character" do
10
+ LoremIpsumForgery.paragraphs.size.should >= 1
11
+ end
12
+
13
+ it "should default to returning 2 paragraphs separated by \\n\\n" do
14
+ LoremIpsumForgery.paragraphs.split("\n\n").size.should == 2
15
+ end
16
+
17
+ it "should default to returning 3 sentences per paragraph" do
18
+ paragraphs = LoremIpsumForgery.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 = LoremIpsumForgery.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 = LoremIpsumForgery.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
+ LoremIpsumForgery.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
+ LoremIpsumForgery.paragraph.should be_a_kind_of(String)
46
+ end
47
+
48
+ it "should return text with 1 or more character" do
49
+ LoremIpsumForgery.paragraph.size.should >= 1
50
+ end
51
+
52
+ it "should return a single paragraph" do
53
+ LoremIpsumForgery.paragraph.scan("\n\n").size.should == 0
54
+ end
55
+ end
56
+
57
+ describe ".sentences" do
58
+ it "should return text" do
59
+ LoremIpsumForgery.sentences.should be_a_kind_of(String)
60
+ end
61
+
62
+ it "should return text with 1 or more character" do
63
+ LoremIpsumForgery.sentences.size.should >= 1
64
+ end
65
+
66
+ it "should return two sentences by default" do
67
+ LoremIpsumForgery.sentences.scan(".").size.should == 2
68
+ end
69
+
70
+ it "should return as many sentences as you specify" do
71
+ LoremIpsumForgery.sentences(4).scan(".").size.should == 4
72
+ end
73
+ end
74
+
75
+ describe ".sentence" do
76
+ it "should return text" do
77
+ LoremIpsumForgery.sentence.should be_a_kind_of(String)
78
+ end
79
+
80
+ it "should return text with 1 or more character" do
81
+ LoremIpsumForgery.sentence.size.should >= 1
82
+ end
83
+
84
+ it "should return a single sentence" do
85
+ LoremIpsumForgery.sentence.scan(".").size.should == 1
86
+ end
87
+ end
88
+
89
+ describe ".words" do
90
+ it "should return text" do
91
+ LoremIpsumForgery.words.should be_a_kind_of(String)
92
+ end
93
+
94
+ it "should return text with 1 or more character" do
95
+ LoremIpsumForgery.words.size.should >= 1
96
+ end
97
+ end
98
+
99
+ describe ".word" do
100
+ it "should return text" do
101
+ LoremIpsumForgery.word.should be_a_kind_of(String)
102
+ end
103
+
104
+ it "should return text with 1 or more character" do
105
+ LoremIpsumForgery.word.size.should >= 1
106
+ end
107
+ end
108
+
109
+ describe ".characters" do
110
+ it "should return text" do
111
+ LoremIpsumForgery.characters.should be_a_kind_of(String)
112
+ end
113
+
114
+ it "should return text with 1 or more character" do
115
+ LoremIpsumForgery.characters.size.should >= 1
116
+ end
117
+ end
118
+
119
+ describe ".character" do
120
+ it "should return text" do
121
+ LoremIpsumForgery.character.should be_a_kind_of(String)
122
+ end
123
+
124
+ it "should return text with 1 or more character" do
125
+ LoremIpsumForgery.character.size.should >= 1
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,4 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe MonetaryForgery do
4
+ end
@@ -0,0 +1,4 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe NameForgery do
4
+ end
@@ -0,0 +1,15 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe PersonalForgery do
4
+ describe '.gender' do
5
+ it 'should return male or female' do
6
+ Forgery.dictionaries[:genders].should include(PersonalForgery.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(PersonalForgery.shirt_size)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,42 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Forgery do
4
+ it "should load a dictionary when it is requested" do
5
+ Forgery.dictionaries.reset!
6
+
7
+ Forgery.dictionaries.should_not be_loaded(:colors)
8
+
9
+ Forgery.dictionaries[:colors]
10
+
11
+ Forgery.dictionaries.should be_loaded(:colors)
12
+ end
13
+
14
+ it "should load formats when it is requested" do
15
+ Forgery.formats.reset!
16
+
17
+ Forgery.formats.should_not be_loaded(:phone)
18
+
19
+ Forgery.formats[:phone]
20
+
21
+ Forgery.formats.should be_loaded(:phone)
22
+ end
23
+
24
+ it "should accept a symbol and return the appropriate forgery class" do
25
+ Forgery(:address).should == AddressForgery
26
+ Forgery(:basic).should == BasicForgery
27
+ Forgery(:internet).should == InternetForgery
28
+ end
29
+
30
+ it "should accept two symbols, finding the right class and calling the appropriate method" do
31
+ AddressForgery.should_receive(:street_name)
32
+ Forgery(:address, :street_name)
33
+
34
+ NameForgery.should_receive(:full_name)
35
+ Forgery(:name, :full_name)
36
+ end
37
+
38
+ it "should accept two symbols and arguments, passing them along to the appropriate method" do
39
+ LoremIpsumForgery.should_receive(:text).with(:sentences, 2)
40
+ Forgery(:lorem_ipsum, :text, :sentences, 2)
41
+ end
42
+ end
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe Formats do
4
+ it "should check if the dictionary is loaded" do
5
+ formats = 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 = 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 = 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
@@ -0,0 +1,32 @@
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
metadata ADDED
@@ -0,0 +1,114 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: forgery
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Nathan Sutton
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-07 00:00:00 +03:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Forgery generates fake data from dictionaries, formats, and recipes. The plugin includes a generator providing directories to make your own forgeries.
17
+ email: nate@sevenwire.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - README.markdown
26
+ - VERSION.yml
27
+ - generators/forgery/forgery_generator.rb
28
+ - generators/forgery/USAGE
29
+ - lib/dictionaries/cities
30
+ - lib/dictionaries/colors
31
+ - lib/dictionaries/company_names
32
+ - lib/dictionaries/countries
33
+ - lib/dictionaries/female_first_names
34
+ - lib/dictionaries/frequencies
35
+ - lib/dictionaries/genders
36
+ - lib/dictionaries/languages
37
+ - lib/dictionaries/last_names
38
+ - lib/dictionaries/lorem_ipsum
39
+ - lib/dictionaries/male_first_names
40
+ - lib/dictionaries/name_suffixes
41
+ - lib/dictionaries/name_titles
42
+ - lib/dictionaries/province_abbrevs
43
+ - lib/dictionaries/provinces
44
+ - lib/dictionaries/races
45
+ - lib/dictionaries/shirt_sizes
46
+ - lib/dictionaries/state_abbrevs
47
+ - lib/dictionaries/states
48
+ - lib/dictionaries/street_suffixes
49
+ - lib/dictionaries/streets
50
+ - lib/dictionaries/top_level_domains
51
+ - lib/dictionaries.rb
52
+ - lib/extensions/array.rb
53
+ - lib/extensions/hash.rb
54
+ - lib/extensions/range.rb
55
+ - lib/extensions/string.rb
56
+ - lib/file_reader.rb
57
+ - lib/forgeries/address_forgery.rb
58
+ - lib/forgeries/basic_forgery.rb
59
+ - lib/forgeries/internet_forgery.rb
60
+ - lib/forgeries/lorem_ipsum_forgery.rb
61
+ - lib/forgeries/monetary_forgery.rb
62
+ - lib/forgeries/name_forgery.rb
63
+ - lib/forgeries/personal_forgery.rb
64
+ - lib/forgery.rb
65
+ - lib/formats/phone
66
+ - lib/formats/street_number
67
+ - lib/formats/zip
68
+ - lib/formats.rb
69
+ - spec/dictionaries_spec.rb
70
+ - spec/extensions/array_spec.rb
71
+ - spec/extensions/range_spec.rb
72
+ - spec/extensions/string_spec.rb
73
+ - spec/file_reader_spec.rb
74
+ - spec/forgeries/address_forgery_spec.rb
75
+ - spec/forgeries/basic_forgery_spec.rb
76
+ - spec/forgeries/internet_forgery_spec.rb
77
+ - spec/forgeries/lorem_ipsum_forgery_spec.rb
78
+ - spec/forgeries/monetary_forgery_spec.rb
79
+ - spec/forgeries/name_forgery_spec.rb
80
+ - spec/forgeries/personal_forgery_spec.rb
81
+ - spec/forgery_spec.rb
82
+ - spec/formats_spec.rb
83
+ - spec/spec_helper.rb
84
+ has_rdoc: true
85
+ homepage: http://github.com/sevenwire/forgery
86
+ licenses: []
87
+
88
+ post_install_message:
89
+ rdoc_options:
90
+ - --inline-source
91
+ - --charset=UTF-8
92
+ require_paths:
93
+ - lib
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: "0"
99
+ version:
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: "0"
105
+ version:
106
+ requirements: []
107
+
108
+ rubyforge_project:
109
+ rubygems_version: 1.3.5
110
+ signing_key:
111
+ specification_version: 2
112
+ summary: Forgery generates fake data from dictionaries, formats, and recipes. The plugin includes a generator providing directories to make your own forgeries.
113
+ test_files: []
114
+