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.
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class FixtureOverlordTest < Minitest::Test
4
+ end
@@ -0,0 +1,3 @@
1
+ cw:
2
+ name: Code Wranglers
3
+ Description: Custom Software Development
@@ -0,0 +1,2 @@
1
+ error:
2
+ &&HFDS(dfh(
@@ -0,0 +1,2 @@
1
+ feature:
2
+ name: "Build Database"
@@ -0,0 +1,7 @@
1
+ hotel:
2
+ id: <%= "10".to_i %>
3
+ name: "Mandolin Bay"
4
+ location: "Vegas Strip"
5
+ phone: "1-800-999-9999"
6
+ open: true
7
+ date: <%= Date.today %>
@@ -0,0 +1,7 @@
1
+ bob:
2
+ name: Bob
3
+ age: 44
4
+
5
+ mary:
6
+ name: Mary
7
+ age: 45
@@ -0,0 +1,7 @@
1
+ bob_mobile:
2
+ number: 18001234567
3
+ type: cell
4
+
5
+ bob_home:
6
+ number: 18009876543
7
+ type: home
@@ -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
@@ -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
@@ -0,0 +1,6 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ Bundler.setup
4
+
5
+ require 'minitest/autorun'
6
+ require 'minitest/pride'
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