factory_json 0.1.0 → 0.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1fdcd55cfe7a41a601a71bde443711f27310bc4d
4
- data.tar.gz: b456e844dc4cbe95b3d976757672d57cd6e85785
3
+ metadata.gz: c1f961754dad7697c6a16ddcd68a90873cd86d5a
4
+ data.tar.gz: e5d402e38bf49d9e3788f823e686e57fb0a2d5bc
5
5
  SHA512:
6
- metadata.gz: ec268ccc71b6ed66ad2c6f199f32d3f624a50153e1529bc05e7c121ae1a989efd3ab7ee53f75346b0134c01728f9af6a5fd67c7677e3ad3818121b4514b10851
7
- data.tar.gz: 72123089a8efd9c9720509dc4b8c4030a7d116851bb707de998c883984a9ec12a1ea89f55c3fa788acfbfad1fe28edcb68c9d08326b6da30fac805ae0ac90a36
6
+ metadata.gz: 2263468e77128fa5330fd160bf0bb29224dce606fca2f92d75f4ba9608c276731e19af27be92963b9a1c31fcb444e06ad5aad3448cf9b30b042137d6ff3a7960
7
+ data.tar.gz: 1e4411dbe3fd8ab39f7eb087384b04b5f45ad9d3e1739c17bc55ad684529a2b6e6500169a294dfc858fe72312d344a0fd1dd0259cb88b5b24a7b904bbf13d2e4
data/Gemfile CHANGED
@@ -8,5 +8,6 @@ gem 'jdbc-sqlite3', platforms: :jruby
8
8
 
9
9
  gem 'sqlite3', '~> 1.3.10', platforms: :ruby
10
10
 
11
- gem "pry"
12
- gem "pry-byebug"
11
+ # gem "pry"
12
+ # gem "pry-byebug"
13
+ # gem "pry-stack_explorer"
data/README.md CHANGED
@@ -126,6 +126,20 @@ user_hash = FactoryGirl.as_json(:user, :with_profile) # to return data as a Ruby
126
126
  user_json = FactoryGirl.json(:user, :with_profile) # to return string, that contains valid JSON
127
127
  ```
128
128
 
129
+ ## Testing
130
+
131
+ Testing is pretty much standard
132
+
133
+ ```bash
134
+ rspec spec
135
+ ```
136
+
137
+ Testing compatibility with FactoryGirl
138
+
139
+ ```bash
140
+ rspec `bundle show factory_girl`/spec
141
+ ```
142
+
129
143
  ## Contributing
130
144
 
131
145
  1. Fork it ( https://github.com/[my-github-username]/factory_json/fork )
@@ -22,11 +22,18 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_dependency "factory_girl"
24
24
 
25
- spec.add_development_dependency "bundler", "~> 1.6"
26
25
  spec.add_development_dependency "rake"
27
- spec.add_development_dependency "rspec"
28
- spec.add_development_dependency "mocha", "~> 0.14.0"
26
+ spec.add_development_dependency "bundler", "~> 1.6"
27
+ spec.add_development_dependency "rspec", "~> 2.12.0"
28
+ spec.add_development_dependency "cucumber", "~> 1.3.15"
29
+ spec.add_development_dependency "aruba"
30
+ spec.add_development_dependency "mocha", ">= 0.12.8"
29
31
  spec.add_development_dependency "bourne"
30
-
32
+ spec.add_development_dependency "appraisal", "~> 1.0.0"
33
+ spec.add_development_dependency "timecop"
31
34
  spec.add_development_dependency "activerecord", ">= 3.0.0"
35
+
36
+ # Compatibility test
37
+ spec.add_development_dependency "factory_girl_rails"
38
+
32
39
  end
@@ -7,7 +7,7 @@ module FactoryGirl
7
7
  attributes_to_set_on_instance.each do |attribute|
8
8
  if instance.respond_to?("#{attribute}=")
9
9
  instance.public_send("#{attribute}=", get(attribute))
10
- elsif instance.respond_to?("[]=")
10
+ elsif instance.kind_of?(Hash)
11
11
  instance[attribute] = get(attribute)
12
12
  else
13
13
  raise NoMethodError.new("undefined method `#{attribute}=' for #{instance}")
@@ -1,3 +1,3 @@
1
1
  module FactoryJson
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe FactoryGirl::Strategy::AsJSON do
4
4
  it_should_behave_like "strategy with association support", :build
5
- it_should_behave_like "strategy with callbacks", {}, :after_build, :before_json
5
+ it_should_behave_like "json strategy with callbacks", {}, :after_build, :before_json
6
6
  it_should_behave_like "strategy with strategy: :build", :build
7
7
 
8
8
  context "Object source" do
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe FactoryGirl::Strategy::JSON do
4
4
  it_should_behave_like "strategy with association support", :build
5
- it_should_behave_like "strategy with callbacks", "{}", :after_build, :before_json
5
+ it_should_behave_like "json strategy with callbacks", "{}", :after_build, :before_json
6
6
  it_should_behave_like "strategy with strategy: :build", :build
7
7
 
8
8
  context "Object source" do
@@ -4,31 +4,31 @@ $LOAD_PATH << File.join(File.dirname(__FILE__))
4
4
  require 'rubygems'
5
5
  require 'rspec'
6
6
  require 'rspec/autorun'
7
+
7
8
  require 'mocha/api'
8
9
  require 'bourne'
10
+ require 'timecop'
9
11
 
10
12
  require 'factory_girl'
11
13
  require 'factory_json'
12
14
 
13
- spec = Gem::Specification.find_by_name('factory_girl')
15
+ source_path = Gem::Specification.find_by_name('factory_girl').gem_dir
14
16
 
15
- files = File.join(spec.gem_dir, 'spec', 'support', 'macros', '**', '*.rb')
17
+ files = File.join(source_path, 'spec', 'support', 'macros', '**', '*.rb')
16
18
  Dir[files].each { |f| require File.expand_path(f) }
17
19
 
18
- files = File.join(spec.gem_dir, 'spec', 'support', 'matchers', '**', '*.rb')
20
+ files = File.join(source_path, 'spec', 'support', 'matchers', '**', '*.rb')
19
21
  Dir[files].each { |f| require File.expand_path(f) }
20
22
 
21
23
  require "support/shared_examples/strategy"
22
24
 
23
25
  RSpec.configure do |config|
24
- config.expect_with :rspec do |expectations|
25
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
26
- end
27
26
 
28
27
  config.mock_framework = :mocha
29
28
  config.include DeclarationMatchers
30
29
 
31
30
  config.after do
31
+ Timecop.return
32
32
  FactoryGirl.reload
33
33
  end
34
- end
34
+ end
@@ -1,3 +1,23 @@
1
+ shared_examples_for "strategy without association support" do
2
+ let(:factory) { stub("associate_factory") }
3
+ let(:attribute) { FactoryGirl::Attribute::Association.new(:user, :user, {}) }
4
+
5
+ def association_named(name, overrides)
6
+ runner = FactoryGirl::FactoryRunner.new(name, :build, [overrides])
7
+ subject.association(runner)
8
+ end
9
+
10
+ before do
11
+ FactoryGirl.stubs(factory_by_name: factory)
12
+ factory.stubs(:compile)
13
+ factory.stubs(:run)
14
+ end
15
+
16
+ it "returns nil when accessing an association" do
17
+ expect(association_named(:user, {})).to be_nil
18
+ end
19
+ end
20
+
1
21
  shared_examples_for "strategy with association support" do |factory_girl_strategy_name|
2
22
  let(:factory) { stub("associate_factory") }
3
23
 
@@ -48,7 +68,28 @@ shared_examples_for "strategy with strategy: :build" do |factory_girl_strategy_n
48
68
  end
49
69
  end
50
70
 
51
- shared_examples_for "strategy with callbacks" do |result_instance, *callback_names|
71
+ shared_examples_for "strategy with callbacks" do |*callback_names|
72
+ let(:result_instance) do
73
+ define_class("ResultInstance") do
74
+ attr_accessor :id
75
+ end.new
76
+ end
77
+
78
+ let(:evaluation) { stub("evaluation", object: result_instance, notify: true, create: nil) }
79
+
80
+ it "runs the callbacks #{callback_names} with the evaluation's object" do
81
+ subject.result(evaluation)
82
+ callback_names.each do |name|
83
+ expect(evaluation).to have_received(:notify).with(name, evaluation.object)
84
+ end
85
+ end
86
+
87
+ it "returns the object from the evaluation" do
88
+ expect(subject.result(evaluation)).to eq evaluation.object
89
+ end
90
+ end
91
+
92
+ shared_examples_for "json strategy with callbacks" do |result_instance, *callback_names|
52
93
  let(:object) {{}}
53
94
  let(:evaluation) { stub("evaluation", object: object, notify: true, create: nil) }
54
95
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - E-Max
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-15 00:00:00.000000000 Z
11
+ date: 2015-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_girl
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +53,35 @@ dependencies:
39
53
  - !ruby/object:Gem::Version
40
54
  version: '1.6'
41
55
  - !ruby/object:Gem::Dependency
42
- name: rake
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 2.12.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 2.12.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: cucumber
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.3.15
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.3.15
83
+ - !ruby/object:Gem::Dependency
84
+ name: aruba
43
85
  requirement: !ruby/object:Gem::Requirement
44
86
  requirements:
45
87
  - - ">="
@@ -53,7 +95,21 @@ dependencies:
53
95
  - !ruby/object:Gem::Version
54
96
  version: '0'
55
97
  - !ruby/object:Gem::Dependency
56
- name: rspec
98
+ name: mocha
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.12.8
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 0.12.8
111
+ - !ruby/object:Gem::Dependency
112
+ name: bourne
57
113
  requirement: !ruby/object:Gem::Requirement
58
114
  requirements:
59
115
  - - ">="
@@ -67,21 +123,21 @@ dependencies:
67
123
  - !ruby/object:Gem::Version
68
124
  version: '0'
69
125
  - !ruby/object:Gem::Dependency
70
- name: mocha
126
+ name: appraisal
71
127
  requirement: !ruby/object:Gem::Requirement
72
128
  requirements:
73
129
  - - "~>"
74
130
  - !ruby/object:Gem::Version
75
- version: 0.14.0
131
+ version: 1.0.0
76
132
  type: :development
77
133
  prerelease: false
78
134
  version_requirements: !ruby/object:Gem::Requirement
79
135
  requirements:
80
136
  - - "~>"
81
137
  - !ruby/object:Gem::Version
82
- version: 0.14.0
138
+ version: 1.0.0
83
139
  - !ruby/object:Gem::Dependency
84
- name: bourne
140
+ name: timecop
85
141
  requirement: !ruby/object:Gem::Requirement
86
142
  requirements:
87
143
  - - ">="
@@ -108,6 +164,20 @@ dependencies:
108
164
  - - ">="
109
165
  - !ruby/object:Gem::Version
110
166
  version: 3.0.0
167
+ - !ruby/object:Gem::Dependency
168
+ name: factory_girl_rails
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
111
181
  description: FactoryGirl can now handle JSON representation for an object.
112
182
  email:
113
183
  - max.zab87@gmail.com