koujou 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.
- data/History.txt +4 -0
- data/Manifest.txt +29 -0
- data/PostInstall.txt +7 -0
- data/README.rdoc +43 -0
- data/Rakefile +26 -0
- data/koujou.gemspec +37 -0
- data/lib/koujou.rb +23 -0
- data/lib/koujou/builder.rb +214 -0
- data/lib/koujou/custom_validation.rb +15 -0
- data/lib/koujou/data_generator.rb +106 -0
- data/lib/koujou/sequence.rb +11 -0
- data/lib/koujou/validation_reflection.rb +143 -0
- data/script/console +10 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/test/lib/active_record_test_connector.rb +79 -0
- data/test/lib/models/car.rb +7 -0
- data/test/lib/models/comment.rb +7 -0
- data/test/lib/models/message.rb +5 -0
- data/test/lib/models/photo.rb +3 -0
- data/test/lib/models/post.rb +15 -0
- data/test/lib/models/profile.rb +9 -0
- data/test/lib/models/user.rb +38 -0
- data/test/test_builder.rb +150 -0
- data/test/test_custom_validation.rb +19 -0
- data/test/test_data_generator.rb +120 -0
- data/test/test_helper.rb +12 -0
- data/test/test_kojo.rb +11 -0
- data/test/test_sequence.rb +20 -0
- metadata +109 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestCustomValidation < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context 'CustomValidation' do
|
6
|
+
|
7
|
+
should 'override any custom validations' do
|
8
|
+
instance = User.new
|
9
|
+
Koujou::CustomValidation.stub_custom_validations!(instance)
|
10
|
+
assert instance.custom_validation_method
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'override any before_validate methods' do
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
@@ -0,0 +1,120 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestDataGenerator < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context 'on generate' do
|
6
|
+
|
7
|
+
setup do
|
8
|
+
@validation = mock("ActiveRecord::Reflection::MacroReflection")
|
9
|
+
@validation.expects(:active_record).twice.returns(User)
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'generate a valid int' do
|
13
|
+
@validation.expects(:name).twice.returns('age')
|
14
|
+
int = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
15
|
+
assert_kind_of Fixnum, int
|
16
|
+
assert int > 0
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'generate a valid float' do
|
20
|
+
@validation.expects(:name).twice.returns('salary')
|
21
|
+
float = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
22
|
+
assert_kind_of Float, float
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'generate a valid string' do
|
26
|
+
@validation.expects(:name).at_least_once.returns('name')
|
27
|
+
string = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
28
|
+
assert_kind_of String, string
|
29
|
+
assert string.size > 0
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'generate a valid email' do
|
33
|
+
@validation.expects(:name).times(1..10).returns('email')
|
34
|
+
email = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
35
|
+
assert_match(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, email)
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'genreate valid text field values' do
|
39
|
+
@validation.expects(:name).twice.returns('about')
|
40
|
+
body = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
41
|
+
assert_not_nil body
|
42
|
+
end
|
43
|
+
|
44
|
+
should 'generate a valid datetime' do
|
45
|
+
@validation.expects(:name).twice.returns('hired_on')
|
46
|
+
dt = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
47
|
+
assert_kind_of DateTime, dt
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'always generate true for booleans' do
|
51
|
+
@validation.expects(:name).twice.returns('terms_of_service')
|
52
|
+
assert Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'on generate for attributes that are not columns' do
|
57
|
+
setup do
|
58
|
+
@validation = mock("ActiveRecord::Reflection::MacroReflection")
|
59
|
+
@validation.expects(:active_record).once.returns(User)
|
60
|
+
end
|
61
|
+
|
62
|
+
should 'always generate "koujourama" for passwords' do
|
63
|
+
@validation.expects(:name).at_least_once.returns('password')
|
64
|
+
assert_equal "koujourama", Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
65
|
+
end
|
66
|
+
|
67
|
+
should 'always generate "koujourama" for password confirmations' do
|
68
|
+
@validation.expects(:name).at_least_once.returns('password_confirmation')
|
69
|
+
assert_equal "koujourama", Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
70
|
+
end
|
71
|
+
|
72
|
+
should 'always generate the same for password and password confirmations' do
|
73
|
+
@validation.expects(:name).at_least_once.returns('password')
|
74
|
+
password = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
75
|
+
@validation.expects(:active_record).once.returns(User)
|
76
|
+
@validation.expects(:name).at_least_once.returns('password_confirmation')
|
77
|
+
password_confirmation = Koujou::DataGenerator.new(false, @validation).generate_data_for_column_type
|
78
|
+
assert_equal password, password_confirmation
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
context 'on generate with a required length' do
|
83
|
+
setup do
|
84
|
+
@validation = mock("ActiveRecord::Reflection::MacroReflection")
|
85
|
+
@validation.expects(:active_record).twice.returns(Post)
|
86
|
+
end
|
87
|
+
|
88
|
+
should 'generate the correct size string with a length passed in' do
|
89
|
+
@validation.expects(:name).twice.returns('body')
|
90
|
+
data_generator = Koujou::DataGenerator.new(false, @validation)
|
91
|
+
data_generator.required_length = 20
|
92
|
+
body = data_generator.generate_data_for_column_type
|
93
|
+
assert_equal 20, body.size
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
context 'on generate with an inclusion' do
|
99
|
+
|
100
|
+
setup do
|
101
|
+
@validation = mock("ActiveRecord::Reflection::MacroReflection")
|
102
|
+
end
|
103
|
+
|
104
|
+
should 'generate the correct string with an inclusion_value passed in' do
|
105
|
+
data_generator = Koujou::DataGenerator.new(false, @validation)
|
106
|
+
data_generator.inclusion_values = %w(Nissan Subaru)
|
107
|
+
make = data_generator.generate_data_for_column_type
|
108
|
+
assert_equal 'Nissan', make
|
109
|
+
end
|
110
|
+
|
111
|
+
should 'generate the correct int with an inclusion_value passed in' do
|
112
|
+
data_generator = Koujou::DataGenerator.new(false, @validation)
|
113
|
+
data_generator.inclusion_values = (1..3)
|
114
|
+
num = data_generator.generate_data_for_column_type
|
115
|
+
assert_equal 1, num
|
116
|
+
end
|
117
|
+
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
ENV["RAILS_ENV"] = "test"
|
2
|
+
|
3
|
+
require 'stringio'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'rubygems'
|
6
|
+
gem 'thoughtbot-shoulda'
|
7
|
+
require 'shoulda'
|
8
|
+
gem 'mocha'
|
9
|
+
require 'mocha'
|
10
|
+
require File.dirname(__FILE__) + '/../lib/koujou'
|
11
|
+
require File.join(File.dirname(__FILE__), 'lib', 'active_record_test_connector')
|
12
|
+
|
data/test/test_kojo.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper.rb'
|
2
|
+
|
3
|
+
class TestSequence < Test::Unit::TestCase
|
4
|
+
|
5
|
+
context "sequence" do
|
6
|
+
|
7
|
+
should "implement the singleton pattern" do
|
8
|
+
assert !Koujou::Sequence.respond_to?(:new)
|
9
|
+
assert Koujou::Sequence.include?(Singleton)
|
10
|
+
end
|
11
|
+
|
12
|
+
should "generate successive numbers when calling next" do
|
13
|
+
first = Koujou::Sequence.instance.next
|
14
|
+
second = Koujou::Sequence.instance.next
|
15
|
+
assert_not_equal first, second
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: koujou
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Michael Leung
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-02-12 00:00:00 +00:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: hoe
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.3.2
|
24
|
+
version:
|
25
|
+
description: |-
|
26
|
+
Koujou is a fixture replacement that requires no effort to use. You don't have to define a single thing
|
27
|
+
in your test_helper or whatever. Just call the koujou method on your active record model, and you're
|
28
|
+
off.
|
29
|
+
|
30
|
+
Check out: http://www.michaelleung.us/koujou for all the juicy details.
|
31
|
+
|
32
|
+
Please note this is a very early release of koujou, so if you find any issues, just post
|
33
|
+
them here: http://github.com/mleung/koujou/issues
|
34
|
+
email:
|
35
|
+
- me@michaelleung.us
|
36
|
+
executables: []
|
37
|
+
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files:
|
41
|
+
- History.txt
|
42
|
+
- Manifest.txt
|
43
|
+
- PostInstall.txt
|
44
|
+
files:
|
45
|
+
- History.txt
|
46
|
+
- Manifest.txt
|
47
|
+
- PostInstall.txt
|
48
|
+
- README.rdoc
|
49
|
+
- Rakefile
|
50
|
+
- koujou.gemspec
|
51
|
+
- lib/koujou.rb
|
52
|
+
- lib/koujou/builder.rb
|
53
|
+
- lib/koujou/custom_validation.rb
|
54
|
+
- lib/koujou/data_generator.rb
|
55
|
+
- lib/koujou/sequence.rb
|
56
|
+
- lib/koujou/validation_reflection.rb
|
57
|
+
- script/console
|
58
|
+
- script/destroy
|
59
|
+
- script/generate
|
60
|
+
- test/lib/active_record_test_connector.rb
|
61
|
+
- test/lib/models/car.rb
|
62
|
+
- test/lib/models/comment.rb
|
63
|
+
- test/lib/models/message.rb
|
64
|
+
- test/lib/models/photo.rb
|
65
|
+
- test/lib/models/post.rb
|
66
|
+
- test/lib/models/profile.rb
|
67
|
+
- test/lib/models/user.rb
|
68
|
+
- test/test_builder.rb
|
69
|
+
- test/test_custom_validation.rb
|
70
|
+
- test/test_data_generator.rb
|
71
|
+
- test/test_helper.rb
|
72
|
+
- test/test_kojo.rb
|
73
|
+
- test/test_sequence.rb
|
74
|
+
has_rdoc: true
|
75
|
+
homepage: http://github.com/mleung/koujou
|
76
|
+
licenses: []
|
77
|
+
|
78
|
+
post_install_message: PostInstall.txt
|
79
|
+
rdoc_options:
|
80
|
+
- --main
|
81
|
+
- README.rdoc
|
82
|
+
require_paths:
|
83
|
+
- lib
|
84
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: "0"
|
89
|
+
version:
|
90
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: "0"
|
95
|
+
version:
|
96
|
+
requirements: []
|
97
|
+
|
98
|
+
rubyforge_project: koujou
|
99
|
+
rubygems_version: 1.3.5
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: Koujou is a fixture replacement that requires no effort to use
|
103
|
+
test_files:
|
104
|
+
- test/test_builder.rb
|
105
|
+
- test/test_custom_validation.rb
|
106
|
+
- test/test_data_generator.rb
|
107
|
+
- test/test_helper.rb
|
108
|
+
- test/test_kojo.rb
|
109
|
+
- test/test_sequence.rb
|