fixture_overlord 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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