fixture_overlord 0.1.8
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +3 -0
- data/License.txt +22 -0
- data/Rakefile +9 -0
- data/Readme.mkd +70 -0
- data/bin/bundler +16 -0
- data/bin/erubis +16 -0
- data/bin/rackup +16 -0
- data/bin/rails +16 -0
- data/bin/rake +16 -0
- data/bin/ri +16 -0
- data/bin/sprockets +16 -0
- data/bin/thor +16 -0
- data/bin/tilt +16 -0
- data/bin/tt +16 -0
- data/fixture_overlord.gemspec +26 -0
- data/lib/fixture_overlord/fixture_accessor.rb +40 -0
- data/lib/fixture_overlord/hashish.rb +75 -0
- data/lib/fixture_overlord/helpers.rb +35 -0
- data/lib/fixture_overlord/mock.rb +132 -0
- data/lib/fixture_overlord/model.rb +55 -0
- data/lib/fixture_overlord/object_coercion.rb +7 -0
- data/lib/fixture_overlord/read_fixture.rb +62 -0
- data/lib/fixture_overlord/string_extension.rb +29 -0
- data/lib/fixture_overlord/version.rb +10 -0
- data/lib/fixture_overlord.rb +17 -0
- data/test/fixture_accessor_test.rb +97 -0
- data/test/fixture_overlord_test.rb +4 -0
- data/test/fixtures/company.yml +3 -0
- data/test/fixtures/error.yaml +2 -0
- data/test/fixtures/features.yml +2 -0
- data/test/fixtures/hotel.yml +7 -0
- data/test/fixtures/person.yaml +7 -0
- data/test/fixtures/phone.yml +7 -0
- data/test/hashish_test.rb +56 -0
- data/test/mock_test.rb +65 -0
- data/test/model_test.rb +72 -0
- data/test/read_fixture_test.rb +41 -0
- data/test/test_helper.rb +6 -0
- metadata +165 -0
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require './lib/fixture_overlord'
|
3
|
+
require './lib/fixture_overlord/hashish'
|
4
|
+
require 'ostruct'
|
5
|
+
|
6
|
+
module ActiveRecord
|
7
|
+
class Base; end
|
8
|
+
end
|
9
|
+
|
10
|
+
class Person < ActiveRecord::Base
|
11
|
+
def initialize(attributes={}); end
|
12
|
+
class << self
|
13
|
+
def create(*args); true; end
|
14
|
+
def create!(*args); true; end
|
15
|
+
def build(*args); true; end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class Minitest::Test
|
20
|
+
include ::FixtureOverlord
|
21
|
+
fixture_overlord :rule
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
module FixtureOverlord
|
26
|
+
class HashishTest < Minitest::Test
|
27
|
+
def hash
|
28
|
+
@hash ||= { name: 'Bob', age: 44 }
|
29
|
+
end
|
30
|
+
|
31
|
+
def bob
|
32
|
+
@bob ||= person(:bob)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_mock
|
36
|
+
mock = bob.mock
|
37
|
+
assert_equal "Bob", mock.name
|
38
|
+
assert_equal 44, mock.age
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_model
|
42
|
+
model = bob.model
|
43
|
+
assert_instance_of Person, model
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_create
|
47
|
+
assert bob.create
|
48
|
+
assert bob.create!
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_build
|
52
|
+
assert bob.build
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
data/test/mock_test.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require_relative '../lib/fixture_overlord/mock'
|
3
|
+
|
4
|
+
module FixtureOverlord
|
5
|
+
class MockTest < Minitest::Test
|
6
|
+
def mock
|
7
|
+
@mock ||= begin
|
8
|
+
hash = { name: "Bob", age: 49 }
|
9
|
+
Mock.setup(hash)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_initialization
|
14
|
+
assert_equal "Bob", mock.name
|
15
|
+
assert_equal 49, mock.age
|
16
|
+
assert mock.id
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_to_attributes
|
20
|
+
actual = mock.to_attributes
|
21
|
+
assert_instance_of Hashish, actual
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_change
|
25
|
+
mock.change(name: 'Robert')
|
26
|
+
assert_equal "Robert", mock.name
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_add
|
30
|
+
mock.add(address: '123 Street')
|
31
|
+
assert_equal "123 Street", mock.address
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_remove
|
35
|
+
mock.add(address: '123 Street')
|
36
|
+
mock.add(city: 'Carlsbad')
|
37
|
+
assert_equal "123 Street", mock.address
|
38
|
+
assert_equal "Carlsbad", mock.city
|
39
|
+
|
40
|
+
mock.remove(:address)
|
41
|
+
assert_nil mock.address
|
42
|
+
|
43
|
+
mock.delete(:city)
|
44
|
+
assert_nil mock.city
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_child
|
48
|
+
post = Mock.setup(title: "Demo", content: "some content")
|
49
|
+
blog = Mock.setup(name: "My Blog")
|
50
|
+
|
51
|
+
blog.child(posts: post)
|
52
|
+
|
53
|
+
assert_instance_of Array, blog.posts
|
54
|
+
assert_equal "Demo", blog.posts.first.title
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_parent
|
58
|
+
post = Mock.setup(title: "Demo", content: "some content")
|
59
|
+
blog = Mock.setup(name: "My Blog")
|
60
|
+
|
61
|
+
post.parent(blog: blog)
|
62
|
+
assert_equal "My Blog", post.blog.name
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/test/model_test.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require "./lib/fixture_overlord/hashish"
|
3
|
+
require "./lib/fixture_overlord/model"
|
4
|
+
|
5
|
+
module ActiveRecord
|
6
|
+
class Base; end
|
7
|
+
end
|
8
|
+
|
9
|
+
class Person < ActiveRecord::Base
|
10
|
+
def initialize(attributes={}); end
|
11
|
+
def create; true; end
|
12
|
+
def create!; true; end
|
13
|
+
def build; true; end
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def create(hash = {}); true; end
|
17
|
+
def create!(hash = {}); true; end
|
18
|
+
def build(hash = {}); true; end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module FixtureOverlord
|
23
|
+
class ModelTest < Minitest::Test
|
24
|
+
def hashish
|
25
|
+
@hash ||= begin
|
26
|
+
hash = Hashish[{ name: "Bob", age: 49 }].
|
27
|
+
symbolize_keys
|
28
|
+
hash
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_initialization
|
33
|
+
model = Model.new(hashish, 'person')
|
34
|
+
assert model.can_convert_to_model?
|
35
|
+
assert model.respond_to_model_methods?
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_converting_to_model
|
39
|
+
model = Model.new(hashish, 'person')
|
40
|
+
person = model.convert_to_model
|
41
|
+
assert person
|
42
|
+
|
43
|
+
assert person.respond_to?(:create)
|
44
|
+
assert person.respond_to?(:build)
|
45
|
+
assert_equal ::ActiveRecord::Base, person.class.superclass
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_create_class_method
|
49
|
+
assert Model.create(hashish, 'person')
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_alias_create_class_method
|
53
|
+
assert Model.create!(hashish, 'person')
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_init_class_method
|
57
|
+
model = Model.init(hashish, 'person')
|
58
|
+
assert model
|
59
|
+
assert model.create
|
60
|
+
assert model.create!
|
61
|
+
assert model.build
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_plural_filename
|
65
|
+
model = Model.init(hashish, 'people')
|
66
|
+
assert_equal Person, model.class
|
67
|
+
assert model.respond_to?(:create)
|
68
|
+
assert model.respond_to?(:build)
|
69
|
+
assert_equal ::ActiveRecord::Base, model.class.superclass
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require './lib/fixture_overlord/read_fixture'
|
3
|
+
|
4
|
+
module FixtureOverlord
|
5
|
+
class ReadFixtureTest < Minitest::Test
|
6
|
+
def fixture(name)
|
7
|
+
ReadFixture.new("./test/fixtures/#{name}")
|
8
|
+
end
|
9
|
+
|
10
|
+
def valid_fixture
|
11
|
+
@valid_fixture ||= fixture("person.yaml").read(:bob)
|
12
|
+
end
|
13
|
+
|
14
|
+
def invalid_fixture
|
15
|
+
@invalid_fixture ||= fixture("error.yaml").read(:error)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_read_valid_yaml
|
19
|
+
expected = {:name=>"Bob", :age=>44}
|
20
|
+
assert_equal expected, valid_fixture
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_read_invalid_yaml
|
24
|
+
assert_raises FormattingError do
|
25
|
+
invalid_fixture
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_read_valid_yaml_with_erb
|
30
|
+
hotel = fixture("hotel.yml").read(:hotel)
|
31
|
+
|
32
|
+
assert hotel
|
33
|
+
assert_equal 10, hotel[:id]
|
34
|
+
assert_equal "Mandolin Bay", hotel[:name]
|
35
|
+
assert_equal "Vegas Strip", hotel[:location]
|
36
|
+
assert_equal "1-800-999-9999", hotel[:phone]
|
37
|
+
assert hotel[:open]
|
38
|
+
assert_equal Date.today, hotel[:date]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fixture_overlord
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Robert Evans
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.1.0.beta1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.1.0.beta1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rdoc
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: minitest
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: A Rails Gem for handling Fixtures without a database. Allows mocks, stubs,
|
70
|
+
hashes, model object, and inserting into the database when you want it to. No need
|
71
|
+
for the bloat of FactoryGirl or other Object Factory Gems.
|
72
|
+
email:
|
73
|
+
- robert@codewranglers.org
|
74
|
+
executables:
|
75
|
+
- bundler
|
76
|
+
- erubis
|
77
|
+
- rackup
|
78
|
+
- rails
|
79
|
+
- rake
|
80
|
+
- ri
|
81
|
+
- sprockets
|
82
|
+
- thor
|
83
|
+
- tilt
|
84
|
+
- tt
|
85
|
+
extensions: []
|
86
|
+
extra_rdoc_files: []
|
87
|
+
files:
|
88
|
+
- ".gitignore"
|
89
|
+
- ".travis.yml"
|
90
|
+
- Gemfile
|
91
|
+
- License.txt
|
92
|
+
- Rakefile
|
93
|
+
- Readme.mkd
|
94
|
+
- bin/bundler
|
95
|
+
- bin/erubis
|
96
|
+
- bin/rackup
|
97
|
+
- bin/rails
|
98
|
+
- bin/rake
|
99
|
+
- bin/ri
|
100
|
+
- bin/sprockets
|
101
|
+
- bin/thor
|
102
|
+
- bin/tilt
|
103
|
+
- bin/tt
|
104
|
+
- fixture_overlord.gemspec
|
105
|
+
- lib/fixture_overlord.rb
|
106
|
+
- lib/fixture_overlord/fixture_accessor.rb
|
107
|
+
- lib/fixture_overlord/hashish.rb
|
108
|
+
- lib/fixture_overlord/helpers.rb
|
109
|
+
- lib/fixture_overlord/mock.rb
|
110
|
+
- lib/fixture_overlord/model.rb
|
111
|
+
- lib/fixture_overlord/object_coercion.rb
|
112
|
+
- lib/fixture_overlord/read_fixture.rb
|
113
|
+
- lib/fixture_overlord/string_extension.rb
|
114
|
+
- lib/fixture_overlord/version.rb
|
115
|
+
- test/fixture_accessor_test.rb
|
116
|
+
- test/fixture_overlord_test.rb
|
117
|
+
- test/fixtures/company.yml
|
118
|
+
- test/fixtures/error.yaml
|
119
|
+
- test/fixtures/features.yml
|
120
|
+
- test/fixtures/hotel.yml
|
121
|
+
- test/fixtures/person.yaml
|
122
|
+
- test/fixtures/phone.yml
|
123
|
+
- test/hashish_test.rb
|
124
|
+
- test/mock_test.rb
|
125
|
+
- test/model_test.rb
|
126
|
+
- test/read_fixture_test.rb
|
127
|
+
- test/test_helper.rb
|
128
|
+
homepage: ''
|
129
|
+
licenses:
|
130
|
+
- MIT
|
131
|
+
metadata: {}
|
132
|
+
post_install_message:
|
133
|
+
rdoc_options: []
|
134
|
+
require_paths:
|
135
|
+
- lib
|
136
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
requirements: []
|
147
|
+
rubyforge_project:
|
148
|
+
rubygems_version: 2.2.0
|
149
|
+
signing_key:
|
150
|
+
specification_version: 4
|
151
|
+
summary: Handling Fixtures the right way, within a Rails application.
|
152
|
+
test_files:
|
153
|
+
- test/fixture_accessor_test.rb
|
154
|
+
- test/fixture_overlord_test.rb
|
155
|
+
- test/fixtures/company.yml
|
156
|
+
- test/fixtures/error.yaml
|
157
|
+
- test/fixtures/features.yml
|
158
|
+
- test/fixtures/hotel.yml
|
159
|
+
- test/fixtures/person.yaml
|
160
|
+
- test/fixtures/phone.yml
|
161
|
+
- test/hashish_test.rb
|
162
|
+
- test/mock_test.rb
|
163
|
+
- test/model_test.rb
|
164
|
+
- test/read_fixture_test.rb
|
165
|
+
- test/test_helper.rb
|