sixarm_ruby_fab 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/.gemtest +0 -0
- data/CONTRIBUTING.md +28 -0
- data/README.md +91 -0
- data/Rakefile +8 -0
- data/VERSION +1 -0
- data/lib/sixarm_ruby_fab.rb +40 -0
- data/lib/sixarm_ruby_fab/agent.rb +20 -0
- data/lib/sixarm_ruby_fab/basic.rb +26 -0
- data/lib/sixarm_ruby_fab/company.rb +21 -0
- data/lib/sixarm_ruby_fab/date.rb +45 -0
- data/lib/sixarm_ruby_fab/datetime.rb +44 -0
- data/lib/sixarm_ruby_fab/email.rb +12 -0
- data/lib/sixarm_ruby_fab/files.rb +113 -0
- data/lib/sixarm_ruby_fab/forgery/geo.rb +56 -0
- data/lib/sixarm_ruby_fab/forgery/uri.rb +12 -0
- data/lib/sixarm_ruby_fab/geo.rb +21 -0
- data/lib/sixarm_ruby_fab/id.rb +28 -0
- data/lib/sixarm_ruby_fab/internet.rb +12 -0
- data/lib/sixarm_ruby_fab/locale.rb +34 -0
- data/lib/sixarm_ruby_fab/mime.rb +29 -0
- data/lib/sixarm_ruby_fab/names.rb +30 -0
- data/lib/sixarm_ruby_fab/password.rb +16 -0
- data/lib/sixarm_ruby_fab/phone.rb +12 -0
- data/lib/sixarm_ruby_fab/postal.rb +39 -0
- data/lib/sixarm_ruby_fab/text.rb +58 -0
- data/lib/sixarm_ruby_fab/time.rb +44 -0
- data/lib/sixarm_ruby_fab/twitter.rb +119 -0
- data/lib/sixarm_ruby_fab/username.rb +16 -0
- data/lib/sixarm_ruby_fab/uuid.rb +27 -0
- data/test/sixarm_ruby_fab_test.rb +32 -0
- data/test/sixarm_ruby_fab_test/agent_test.rb +40 -0
- data/test/sixarm_ruby_fab_test/basic_test.rb +35 -0
- data/test/sixarm_ruby_fab_test/company_test.rb +34 -0
- data/test/sixarm_ruby_fab_test/date_test.rb +67 -0
- data/test/sixarm_ruby_fab_test/datetime_test.rb +66 -0
- data/test/sixarm_ruby_fab_test/email_test.rb +22 -0
- data/test/sixarm_ruby_fab_test/files_test.rb +106 -0
- data/test/sixarm_ruby_fab_test/forgery/geo_test.rb +0 -0
- data/test/sixarm_ruby_fab_test/forgery/uri_test.rb +0 -0
- data/test/sixarm_ruby_fab_test/geo_test.rb +34 -0
- data/test/sixarm_ruby_fab_test/id_test.rb +34 -0
- data/test/sixarm_ruby_fab_test/internet_test.rb +23 -0
- data/test/sixarm_ruby_fab_test/locale_test.rb +51 -0
- data/test/sixarm_ruby_fab_test/mime_test.rb +41 -0
- data/test/sixarm_ruby_fab_test/names_test.rb +47 -0
- data/test/sixarm_ruby_fab_test/password_test.rb +26 -0
- data/test/sixarm_ruby_fab_test/phone_test.rb +22 -0
- data/test/sixarm_ruby_fab_test/postal_test.rb +58 -0
- data/test/sixarm_ruby_fab_test/text_test.rb +58 -0
- data/test/sixarm_ruby_fab_test/time_test.rb +66 -0
- data/test/sixarm_ruby_fab_test/twitter_test.rb +98 -0
- data/test/sixarm_ruby_fab_test/username_test.rb +58 -0
- data/test/sixarm_ruby_fab_test/uuid_test.rb +34 -0
- metadata +159 -0
- metadata.gz.sig +3 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2cfd05a4915d109badc07b3de31b368a094764e4
|
4
|
+
data.tar.gz: b1308a6558b30ddd6f44f7003d93302ae5ddbc19
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9ce73304f967d12d5a7e24b37c8dd5a0666581fae01ff4b6a41b5ac7ed05b12704b497e90a325c53b542004e9b30c472f1070acec5464b1f5e5cdca64036895e
|
7
|
+
data.tar.gz: 747bde33626df662131b4661c1df943890bd67fa175f35368c81e99ee49149b64e45475a1d2343211189d5dec69c3350596773d86b6c657bec5098d4f31a3573
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
��*�j�������n�@��x�sR`��rX�Q֍B
|
data.tar.gz.sig
ADDED
Binary file
|
data/.gemtest
ADDED
File without changes
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# Contributing
|
2
|
+
|
3
|
+
Thank you for contributing!
|
4
|
+
|
5
|
+
If you would like to contribute a donation, an easy way is to use PayPal to sixarm@sixarm.com.
|
6
|
+
|
7
|
+
If you would like to contribute help, the next section is for you.
|
8
|
+
|
9
|
+
|
10
|
+
## Contributing to the source
|
11
|
+
|
12
|
+
We love pull requests for improvments to the source code and documentation.
|
13
|
+
|
14
|
+
There are three easy steps:
|
15
|
+
|
16
|
+
1. Fork the repo.
|
17
|
+
|
18
|
+
* Before you do any work please run our existing tests to make sure the code runs cleanly.
|
19
|
+
|
20
|
+
2. Work as you like.
|
21
|
+
|
22
|
+
* Please create tests. This helps us know that all your code runs cleanly.
|
23
|
+
|
24
|
+
3. Push to your fork and submit a pull request.
|
25
|
+
|
26
|
+
* We'll take a look as soon as we can; this is typically within a business day.
|
27
|
+
|
28
|
+
Thank you again!
|
data/README.md
ADDED
@@ -0,0 +1,91 @@
|
|
1
|
+
# SixArm.com » Ruby » <br> Fab gem for fabricated sample data for testing
|
2
|
+
|
3
|
+
* Doc: <http://sixarm.com/sixarm_ruby_fab/doc>
|
4
|
+
* Gem: <http://rubygems.org/gems/sixarm_ruby_fab>
|
5
|
+
* Repo: <http://github.com/sixarm/sixarm_ruby_fab>
|
6
|
+
* Email: Joel Parker Henderson, <joel@sixarm.com>
|
7
|
+
|
8
|
+
## Introduction
|
9
|
+
|
10
|
+
Fabricate sample data suitable for testing.
|
11
|
+
|
12
|
+
Requires the Forgery gem.
|
13
|
+
|
14
|
+
For docs go to <http://sixarm.com/sixarm_ruby_fab/doc>
|
15
|
+
|
16
|
+
Want to help? We're happy to get pull requests.
|
17
|
+
|
18
|
+
|
19
|
+
## Install quickstart
|
20
|
+
|
21
|
+
Install:
|
22
|
+
|
23
|
+
gem install sixarm_ruby_fab
|
24
|
+
|
25
|
+
Bundler:
|
26
|
+
|
27
|
+
gem "sixarm_ruby_fab", "~>1.0.0"
|
28
|
+
|
29
|
+
Require:
|
30
|
+
|
31
|
+
require "sixarm_ruby_fab"
|
32
|
+
|
33
|
+
|
34
|
+
## Install with security (optional)
|
35
|
+
|
36
|
+
To enable high security for all our gems:
|
37
|
+
|
38
|
+
wget http://sixarm.com/sixarm.pem
|
39
|
+
gem cert --add sixarm.pem
|
40
|
+
gem sources --add http://sixarm.com
|
41
|
+
|
42
|
+
To install with high security:
|
43
|
+
|
44
|
+
gem install sixarm_ruby_fab --test --trust-policy HighSecurity
|
45
|
+
|
46
|
+
|
47
|
+
## Examples
|
48
|
+
|
49
|
+
Create a fab:
|
50
|
+
|
51
|
+
require "sixarm_ruby_fab"
|
52
|
+
fab = Fab.new
|
53
|
+
|
54
|
+
Use it:
|
55
|
+
|
56
|
+
fab.email_address #=> "foo@bar.com"
|
57
|
+
fab.street_address #=> "123 Main Street"
|
58
|
+
|
59
|
+
|
60
|
+
## Changes
|
61
|
+
|
62
|
+
* 2013-08-01 1.0.0 Publish.
|
63
|
+
|
64
|
+
|
65
|
+
## License
|
66
|
+
|
67
|
+
You may choose any of these open source licenses:
|
68
|
+
|
69
|
+
* Apache License
|
70
|
+
* BSD License
|
71
|
+
* CreativeCommons License, Non-commercial Share Alike
|
72
|
+
* GNU General Public License Version 2 (GPL 2)
|
73
|
+
* GNU Lesser General Public License (LGPL)
|
74
|
+
* MIT License
|
75
|
+
* Perl Artistic License
|
76
|
+
* Ruby License
|
77
|
+
|
78
|
+
The software is provided "as is", without warranty of any kind,
|
79
|
+
express or implied, including but not limited to the warranties of
|
80
|
+
merchantability, fitness for a particular purpose and noninfringement.
|
81
|
+
|
82
|
+
In no event shall the authors or copyright holders be liable for any
|
83
|
+
claim, damages or other liability, whether in an action of contract,
|
84
|
+
tort or otherwise, arising from, out of or in connection with the
|
85
|
+
software or the use or other dealings in the software.
|
86
|
+
|
87
|
+
This license is for the included software that is created by SixArm;
|
88
|
+
some of the included software may have its own licenses, copyrights,
|
89
|
+
authors, etc. and these do take precedence over the SixArm license.
|
90
|
+
|
91
|
+
Copyright (c) 2005-2013 Joel Parker Henderson
|
data/Rakefile
ADDED
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
=begin rdoc
|
3
|
+
Please see README
|
4
|
+
=end
|
5
|
+
|
6
|
+
require 'pathname'
|
7
|
+
require 'securerandom'
|
8
|
+
require 'forgery' # gem
|
9
|
+
require 'sixarm_ruby_fab/forgery/geo'
|
10
|
+
require 'sixarm_ruby_fab/forgery/uri'
|
11
|
+
|
12
|
+
class Fab
|
13
|
+
AZ = ('a'..'z').to_a
|
14
|
+
end
|
15
|
+
|
16
|
+
[
|
17
|
+
'agent',
|
18
|
+
'basic',
|
19
|
+
'company',
|
20
|
+
'date',
|
21
|
+
'datetime',
|
22
|
+
'email',
|
23
|
+
'files',
|
24
|
+
'geo',
|
25
|
+
'id',
|
26
|
+
'internet',
|
27
|
+
'locale',
|
28
|
+
'mime',
|
29
|
+
'names',
|
30
|
+
'password',
|
31
|
+
'phone',
|
32
|
+
'postal',
|
33
|
+
'text',
|
34
|
+
'time',
|
35
|
+
'twitter',
|
36
|
+
'username',
|
37
|
+
'uuid'
|
38
|
+
].each{|x|
|
39
|
+
require "sixarm_ruby_fab/#{x}.rb"
|
40
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class Fab
|
2
|
+
|
3
|
+
AGENT_LIST = [
|
4
|
+
"Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405",
|
5
|
+
"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B179",
|
6
|
+
"Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; SCH-I500 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1",
|
7
|
+
"Mozilla/5.0 (Linux; U; Android 4.0.3; en-us; EVO Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"
|
8
|
+
]
|
9
|
+
|
10
|
+
attr_accessor :agent_list
|
11
|
+
|
12
|
+
def agent
|
13
|
+
agent_list.sample
|
14
|
+
end
|
15
|
+
|
16
|
+
def agent_list
|
17
|
+
@agent_list ||= AGENT_LIST
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
class Fab
|
2
|
+
|
3
|
+
# Fab a boolean, either true or false.
|
4
|
+
#
|
5
|
+
# @return [boolean] either true or false.
|
6
|
+
#
|
7
|
+
def boolean
|
8
|
+
[true, false].sample
|
9
|
+
end
|
10
|
+
|
11
|
+
# Fab a rating, such as 1 to 5 stars.
|
12
|
+
#
|
13
|
+
# Options:
|
14
|
+
#
|
15
|
+
# * min: 1
|
16
|
+
# * max: 5
|
17
|
+
#
|
18
|
+
# @return [Fixnum] a random number
|
19
|
+
#
|
20
|
+
def rating(options = {})
|
21
|
+
rand((options[:min] || 1)..(options[:max] || 5))
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class Fab
|
2
|
+
|
3
|
+
# Fab a company name.
|
4
|
+
# Delegates to Forgery::Name.company_name.
|
5
|
+
#
|
6
|
+
# @returns [String] a random company name
|
7
|
+
#
|
8
|
+
def company_name(options = {})
|
9
|
+
Forgery::Name.company_name
|
10
|
+
end
|
11
|
+
|
12
|
+
# Fab a job title.
|
13
|
+
# Delegates to Forgery::Name.job_title.
|
14
|
+
#
|
15
|
+
# @returns [String] a random company name
|
16
|
+
#
|
17
|
+
def job_title(options = {})
|
18
|
+
Forgery::Name.job_title
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class Fab
|
2
|
+
|
3
|
+
# Fab a random date.
|
4
|
+
#
|
5
|
+
# Options:
|
6
|
+
#
|
7
|
+
# * min: today - 1000
|
8
|
+
# * max: today + 1000
|
9
|
+
#
|
10
|
+
# @returns [Date] a random date min..max
|
11
|
+
#
|
12
|
+
def date(options = {})
|
13
|
+
rand((options[:min] || Date.today - 1000)..(options[:max] || Date.today + 1000))
|
14
|
+
end
|
15
|
+
|
16
|
+
# Fab a random start date.
|
17
|
+
# Delegates to #date.
|
18
|
+
#
|
19
|
+
# @returns [Date] a random date min..max
|
20
|
+
#
|
21
|
+
def start_date(options = {})
|
22
|
+
date(options)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Fab a random stop date.
|
26
|
+
# Delegates to #date.
|
27
|
+
#
|
28
|
+
# @returns [Date] a random date min..max
|
29
|
+
#
|
30
|
+
def stop_date(options = {})
|
31
|
+
date(options)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Fab a random start date and stop date.
|
35
|
+
# The start is less than or equal to the stop.
|
36
|
+
# Delegates to #start_date and #stop_date.
|
37
|
+
#
|
38
|
+
# @returns [Date,Date] a random [start date, stop date] from min..max
|
39
|
+
#
|
40
|
+
def start_date_and_stop_date(options = {})
|
41
|
+
[start_date(options), stop_date(options)].sort
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class Fab
|
2
|
+
|
3
|
+
# Fab a random datetime.
|
4
|
+
#
|
5
|
+
# Options:
|
6
|
+
#
|
7
|
+
# * min: now - 1000
|
8
|
+
# * max: now + 1000
|
9
|
+
#
|
10
|
+
# @returns [DateTime] a random datetime min..max
|
11
|
+
#
|
12
|
+
def datetime(options = {})
|
13
|
+
rand((options[:min] || DateTime.now - 1000)..(options[:max] || DateTime.now + 1000))
|
14
|
+
end
|
15
|
+
|
16
|
+
# Fab a random start datetime.
|
17
|
+
# Delegates to #datetime.
|
18
|
+
#
|
19
|
+
# @returns [DateTime] a random datetime min..max
|
20
|
+
#
|
21
|
+
def start_datetime(options = {})
|
22
|
+
datetime(options)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Fab a random stop datetime.
|
26
|
+
# Delegates to #datetime.
|
27
|
+
#
|
28
|
+
# @returns [DateTime] a random datetime min..max
|
29
|
+
#
|
30
|
+
def stop_datetime(options = {})
|
31
|
+
datetime(options)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Fab a random start datetime and stop datetime.
|
35
|
+
# The start is less than or equal to the stop.
|
36
|
+
# Delegates to #start_datetime and #stop_datetime.
|
37
|
+
#
|
38
|
+
# @returns [DateTime,DateTime] a random [start datetime, stop datetime] from min..max
|
39
|
+
#
|
40
|
+
def start_datetime_and_stop_datetime(options = {})
|
41
|
+
[start_datetime(options), stop_datetime(options)].sort
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
class Fab
|
2
|
+
|
3
|
+
CHARS = ('a'..'z').to_a
|
4
|
+
|
5
|
+
# Fab a path e.g. "/mydir1/mydir2/myfile.txt"
|
6
|
+
#
|
7
|
+
# @returns [String] a path
|
8
|
+
#
|
9
|
+
def path(options = {})
|
10
|
+
(Pathname.new("") + dirname(options) + basename(options)).to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
# Fab a base name e.g. "myfile.txt"
|
14
|
+
#
|
15
|
+
# The base name has two parts:
|
16
|
+
#
|
17
|
+
# * The "intension" e.g. "myfile"
|
18
|
+
# * The "extension" e.g. "txt"
|
19
|
+
#
|
20
|
+
# Options:
|
21
|
+
#
|
22
|
+
# * chars: a..z
|
23
|
+
# * intension_length: [sent to #basename_intension as :length]
|
24
|
+
# * extension_length: [sent to #basename_extension as :length]
|
25
|
+
#
|
26
|
+
# @returns [String] a base name
|
27
|
+
#
|
28
|
+
def basename(options = {})
|
29
|
+
intention = basename_intension(options[:intension_length] ? options.merge(length: intension_length) : options)
|
30
|
+
extention = basename_extension(options[:extension_length] ? options.merge(length: extension_length) : options)
|
31
|
+
"#{basename_intension}.#{basename_extension}"
|
32
|
+
end
|
33
|
+
|
34
|
+
# Fab a file base name intension e.g. "myfile"
|
35
|
+
#
|
36
|
+
# Options:
|
37
|
+
#
|
38
|
+
# * chars: a..z
|
39
|
+
# * length: rand(1..30)
|
40
|
+
#
|
41
|
+
# @returns [String] a base name intension
|
42
|
+
#
|
43
|
+
def basename_intension(options = {})
|
44
|
+
(options[:chars] || AZ).sample(options[:size] || rand(1..30)).join
|
45
|
+
end
|
46
|
+
|
47
|
+
# Fab a file base name extension e.g. "txt"
|
48
|
+
#
|
49
|
+
# Options:
|
50
|
+
#
|
51
|
+
# * chars: a..z
|
52
|
+
# * length: rand(1..5)
|
53
|
+
#
|
54
|
+
# @returns [String] a base name extension
|
55
|
+
#
|
56
|
+
def basename_extension(options = {})
|
57
|
+
(options[:chars] || AZ).sample(options[:size] || rand(1..5)).join
|
58
|
+
end
|
59
|
+
|
60
|
+
# Fab a directory name e.g. "/mydir1/mydir2".
|
61
|
+
# This calls #dirname_part +rand+ times.
|
62
|
+
#
|
63
|
+
# Options:
|
64
|
+
#
|
65
|
+
# * parts: rand(2..6) [how many parts to use]
|
66
|
+
# * chars: a..z [sent to #dirname_part]
|
67
|
+
# * length: 1..20 per part [sent to #dirname_part]
|
68
|
+
#
|
69
|
+
# @returns [String] a directory name
|
70
|
+
#
|
71
|
+
def dirname(options = {})
|
72
|
+
pathname = Pathname.new("/")
|
73
|
+
parts = options[:parts] || rand(2..6)
|
74
|
+
parts.times.each{ pathname += dirname_part(options) }
|
75
|
+
pathname.to_s
|
76
|
+
end
|
77
|
+
|
78
|
+
# Fab a directory path part e.g. "mydir".
|
79
|
+
#
|
80
|
+
# Options:
|
81
|
+
#
|
82
|
+
# * chars: a..z
|
83
|
+
# * size: rand(1..20)
|
84
|
+
#
|
85
|
+
# @returns [String] a directory name part
|
86
|
+
#
|
87
|
+
def dirname_part(options = {})
|
88
|
+
(options[:chars] || AZ).sample(options[:size] || rand(1..20)).join
|
89
|
+
end
|
90
|
+
|
91
|
+
# Fab a file extension.
|
92
|
+
# Delegates to #basename_extension.
|
93
|
+
#
|
94
|
+
# @returns [String] a file extension e.g. "txt"
|
95
|
+
#
|
96
|
+
# TODO refactor this to streamline it
|
97
|
+
#
|
98
|
+
def file_extension(options = {})
|
99
|
+
basename_extension(options)
|
100
|
+
end
|
101
|
+
|
102
|
+
# Fab a file path.
|
103
|
+
# Delegates to #path.
|
104
|
+
#
|
105
|
+
# @returns [String] a file path e.g. "/mydir1/mydir2/myfile.txt"
|
106
|
+
#
|
107
|
+
# TODO refactor this to streamline it
|
108
|
+
#
|
109
|
+
def file_path(options = {})
|
110
|
+
path(options)
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|