factory_group 0.0.3 → 0.0.4

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: 1bfcb45568576375988c682e459f52c626d73740
4
- data.tar.gz: 56cdd4368d575dfed46ac5d87588c8946a784b71
3
+ metadata.gz: a5b075ad08aec90a1833979525f8efda8d27623c
4
+ data.tar.gz: 270250ee6eafd5bd89e3eb295386b4d46b677a76
5
5
  SHA512:
6
- metadata.gz: e87bcecdb5d1dc0d1223c70223571dc99c25d8e1de7c677170d07c417397825bf45d785739d99e3ba15db67fb79142ae5e2221b944a064018f9a8b0f4cebc3a0
7
- data.tar.gz: 51f402adead483fb2ff43fcc5f7aa29d473dd30c64573056ddd0093da523e15242e822811285e5dab395e01a8bf103ed03c1712248e811713090c50f2c884a19
6
+ metadata.gz: a00dbec2642850445b7e493961b5d5f3f48fe7aace1649e6afbfa750ca606c059d3f323738ef1e0863cc1bf58cb41272fd4785b0d317f5fff9a378d368cbb08f
7
+ data.tar.gz: 45e8252f2a4de6b35fd28e3262307908ad91ca553bffa4c6f7a3d857f4be41b718614ca22b2c0e3036a906b35c6967f32de65c20ffe1717b7aa8f65cd4b3a3cd
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ *.db
1
2
  *.gem
2
3
  *.rbc
3
4
  .bundle
data/.travis.yml CHANGED
@@ -1,11 +1,15 @@
1
1
  rvm:
2
- - 2.1.0
3
- - 2.0.0-p481
4
- - 1.9.3
2
+ - 2.1.0
3
+ - 2.0.0-p481
4
+ - 1.9.3
5
5
  before_install:
6
- - gem update --system
7
- install: "bundle install"
8
- script: "CODECLIMATE_REPO_TOKEN=d3636dec3241cd9be3710d4de49e56b5cba3e56cb682dd0025600b67209520b0 bundle exec rspec spec/"
6
+ - gem update --system
7
+ install: bundle install
8
+ script: CODECLIMATE_REPO_TOKEN=d3636dec3241cd9be3710d4de49e56b5cba3e56cb682dd0025600b67209520b0
9
+ bundle exec rspec spec/
9
10
  branches:
10
11
  only:
11
- - master
12
+ - master
13
+ notifications:
14
+ slack:
15
+ secure: OygKatLhjN4O5Y6Br7PzkqZan+SDoHVaxUJkN/msDY/oBVdobUeknm7hf8EmxTMan3AavsfoXwhdk0Cc/Fy6RYLHRVcBveZAtz4iF8WMu64ogmaP4qhf32AUHLa56iyv7Vn/dK3kStlKI+Ko29mDzglYMONzrU4Lq5iOV3RqgQ8=
data/README.md CHANGED
@@ -1,14 +1,22 @@
1
1
  # FactoryGroup
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/factory_group.svg)](http://badge.fury.io/rb/factory_group) [![Build Status](https://travis-ci.org/Codebrahma/factory_group.svg?branch=master)](https://travis-ci.org/Codebrahma/factory_group) [![Code Climate](https://codeclimate.com/github/Codebrahma/factory_group/badges/gpa.svg)](https://codeclimate.com/github/Codebrahma/factory_group) [![Dependency Status](https://gemnasium.com/Codebrahma/factory_group.svg)](https://gemnasium.com/Codebrahma/factory_group) [![Test Coverage](https://codeclimate.com/github/Codebrahma/factory_group/badges/coverage.svg)](https://codeclimate.com/github/Codebrahma/factory_group)
3
+ [![Gem Version](https://badge.fury.io/rb/factory_group.svg)](http://badge.fury.io/rb/factory_group)
4
+ [![Build Status](https://travis-ci.org/Codebrahma/factory_group.svg?branch=master)](https://travis-ci.org/Codebrahma/factory_group)
5
+ [![Code Climate](https://codeclimate.com/github/Codebrahma/factory_group/badges/gpa.svg)](https://codeclimate.com/github/Codebrahma/factory_group)
6
+ [![Dependency Status](https://gemnasium.com/Codebrahma/factory_group.svg)](https://gemnasium.com/Codebrahma/factory_group)
7
+ [![Test Coverage](https://codeclimate.com/github/Codebrahma/factory_group/badges/coverage.svg)](https://codeclimate.com/github/Codebrahma/factory_group)
4
8
 
5
- TODO: Write a gem description
9
+ By [CodeBrahma](http://codebrahma.com).
10
+
11
+ FactoryGroup provides an abstraction on top of factory_girl, which will help you create reusable groups of factories which can be used across test cases.
12
+
13
+ For now we support only rails applications.
6
14
 
7
15
  ## Installation
8
16
 
9
17
  Add this line to your application's Gemfile:
10
18
 
11
- gem 'factory_group'
19
+ gem 'factory_group', :group => :test
12
20
 
13
21
  And then execute:
14
22
 
@@ -20,7 +28,36 @@ Or install it yourself as:
20
28
 
21
29
  ## Usage
22
30
 
23
- TODO: Write usage instructions here
31
+ Define a factory group
32
+
33
+ ```ruby
34
+ # spec/factory_groups/user_group.rb
35
+ FactoryGroup.define :user_group do
36
+ user FactoryGirl.create(:user, :name => "Rajinikant")
37
+ end
38
+ ```
39
+
40
+ Next require the factory_groups folder from the spec_helper
41
+
42
+ ```ruby
43
+ # spec/spec_helper.rb
44
+ Dir["spec/factory_groups/**/*.rb"].each { |f| require File.expand_path(f) }
45
+ ```
46
+
47
+ Now from your spec call ```FactoryGroup.create(:user_group)```
48
+
49
+ ```ruby
50
+ # spec/user_spec.rb
51
+ describe User do
52
+ let(:user_group) { FactoryGroup.create(:user_group) }
53
+
54
+ context "#name" do
55
+ it "returns Rajinikant" do
56
+ (user_group.user.name).to eq "Rajinikant"
57
+ end
58
+ end
59
+ end
60
+ ```
24
61
 
25
62
  ## Contributing
26
63
 
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Yuvaraja Balamurugan"]
10
10
  spec.email = ["yuv.slm@gmail.com"]
11
11
  spec.summary = %q{Lets you create a group of factories}
12
- spec.description = %q{Lets you create a group of factories which can be accessed from your specs}
12
+ spec.description = %q{FactoryGroup provides an abstraction on top of factory_girl, which will help you create reusable groups of factories which can be used across test cases.}
13
13
  spec.homepage = "http://codebrahma.com/factory_group/"
14
14
  spec.license = "MIT"
15
15
 
@@ -27,4 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rake", ">= 10.3.1"
28
28
  spec.add_development_dependency "debugger", "~> 1.6.8"
29
29
  spec.add_development_dependency "simplecov", "~> 0.9.0"
30
+ spec.add_development_dependency "sqlite3", "~> 1.3.9"
31
+ spec.add_development_dependency "activerecord", "~> 4.1.6"
30
32
  end
@@ -0,0 +1,8 @@
1
+ module FactoryGroup
2
+ module Exceptions
3
+
4
+ class FactoryGroupNotDefined < StandardError
5
+ end
6
+
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module FactoryGroup
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
data/lib/factory_group.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "factory_group/version"
2
2
  require "factory_group/group"
3
+ require "factory_group/exceptions/factory_group_not_defined"
3
4
 
4
5
  module FactoryGroup
5
6
  @registry = {}
@@ -9,13 +10,15 @@ module FactoryGroup
9
10
  end
10
11
 
11
12
  def self.define(name, &block)
12
- group = Group.new
13
- group.instance_eval(&block)
14
- FactoryGroup.registry[name] = group
13
+ FactoryGroup.registry[name] = -> {
14
+ Group.new.tap{ |g| g.instance_eval(&block) }
15
+ }
15
16
  end
16
17
 
17
18
  def self.create(name)
18
- factory_group = registry[name]
19
+ raise Exceptions::FactoryGroupNotDefined if !registry[name]
20
+
21
+ factory_group = registry[name].call
19
22
  factory_group.factories
20
23
  end
21
24
  end
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe FactoryGroup do
4
+ before(:all) do
5
+ described_class.define(:user_group) do
6
+ user FactoryGirl.create(:user)
7
+ end
8
+ end
9
+
10
+ context "#create" do
11
+ before do
12
+ @user_group = FactoryGroup.create(:user_group)
13
+ end
14
+ it "should create a factory_group with the factories" do
15
+ expect(@user_group).to be_a OpenStruct
16
+ expect(@user_group.user).to be_a User
17
+ expect(@user_group.user.name).to eq "sample"
18
+ expect(@user_group.user.age).to eq 20
19
+ end
20
+ end
21
+ end
@@ -11,4 +11,8 @@ describe FactoryGroup::Group do
11
11
  it "responds to the user method" do
12
12
  expect(group.factories).to respond_to :user
13
13
  end
14
+
15
+ it "doesn't respond to the other_user method" do
16
+ expect(group.factories).not_to respond_to :other_user
17
+ end
14
18
  end
@@ -2,15 +2,15 @@ require "spec_helper"
2
2
 
3
3
  describe FactoryGroup do
4
4
 
5
- let(:facory_group_definition) do
5
+ let!(:factory_group_definition) do
6
6
  FactoryGroup.define(:user_group) do
7
7
  user "A User"
8
8
  end
9
9
  end
10
10
 
11
11
  context "#define" do
12
- it "returns the result of evaluating the block passed to define method" do
13
- expect(facory_group_definition).to be_an_instance_of FactoryGroup::Group
12
+ it "returns a proc that evaluates the block passed to define method" do
13
+ expect(factory_group_definition).to be_an_instance_of Proc
14
14
  end
15
15
 
16
16
  it "stores the created group in the registry" do
@@ -19,12 +19,32 @@ describe FactoryGroup do
19
19
  end
20
20
 
21
21
  context "#create" do
22
- it "returns the created FactoryGroup::Group instance" do
23
- expect(described_class.create(:user_group)).to be_an_instance_of OpenStruct
22
+ context "when a group with the given name is defined" do
23
+ let(:user_group){ described_class.create(:user_group) }
24
+ it "returns the created FactoryGroup::Group instance" do
25
+ expect(user_group).to be_an_instance_of OpenStruct
26
+ end
27
+
28
+ it "can be used to access the user variable" do
29
+ expect(user_group.user).to eq "A User"
30
+ end
31
+ end
32
+
33
+ context "when a group with the given name is not defined" do
34
+ it "should raise and exception" do
35
+ expect{
36
+ described_class.create(:invalid_user_group)
37
+ }.to raise_exception(FactoryGroup::Exceptions::FactoryGroupNotDefined)
38
+ end
24
39
  end
25
40
 
26
- it "can be used to access the user variable" do
27
- expect(described_class.create(:user_group).user).to eq "A User"
41
+ context "multiple group instances" do
42
+ let(:group_one){ described_class.create(:user_group) }
43
+ let(:group_two){ described_class.create(:user_group) }
44
+ it "should have different object ids" do
45
+ group_one.user = "Another user"
46
+ expect(group_one.user).not_to eq(group_two.user)
47
+ end
28
48
  end
29
49
  end
30
50
 
data/spec/spec_helper.rb CHANGED
@@ -11,6 +11,8 @@ require 'debugger'
11
11
 
12
12
  require 'factory_group'
13
13
 
14
+ Dir["spec/support/**/*.rb"].each { |f| require File.expand_path(f) }
15
+
14
16
  RSpec.configure do |config|
15
17
 
16
18
  end
@@ -0,0 +1,44 @@
1
+ require "active_record"
2
+
3
+ class User < ActiveRecord::Base
4
+ end
5
+
6
+ FactoryGirl.define do
7
+ factory :user do
8
+ name "sample"
9
+ age 20
10
+ end
11
+ end
12
+
13
+ module CreateTables
14
+ def create_table(table_name, &block)
15
+ connection = ActiveRecord::Base.connection
16
+ connection.create_table(table_name, &block)
17
+ end
18
+
19
+ def drop_table(table_name)
20
+ connection = ActiveRecord::Base.connection
21
+ connection.drop_table(table_name)
22
+ end
23
+ end
24
+
25
+ RSpec.configure do |config|
26
+ include CreateTables
27
+
28
+ config.before(:all) do
29
+ ActiveRecord::Base.establish_connection(
30
+ adapter: 'sqlite3',
31
+ database: File.join(File.dirname(__FILE__), 'test.db')
32
+ )
33
+
34
+ create_table :users do |t|
35
+ t.string :name, limit: 60
36
+ t.integer :age
37
+ end
38
+ end
39
+
40
+
41
+ config.after(:all) do
42
+ drop_table :users
43
+ end
44
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factory_group
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuvaraja Balamurugan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-20 00:00:00.000000000 Z
11
+ date: 2014-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: factory_girl
@@ -94,8 +94,36 @@ dependencies:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.9.0
97
- description: Lets you create a group of factories which can be accessed from your
98
- specs
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 1.3.9
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.3.9
111
+ - !ruby/object:Gem::Dependency
112
+ name: activerecord
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 4.1.6
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 4.1.6
125
+ description: FactoryGroup provides an abstraction on top of factory_girl, which will
126
+ help you create reusable groups of factories which can be used across test cases.
99
127
  email:
100
128
  - yuv.slm@gmail.com
101
129
  executables: []
@@ -111,12 +139,14 @@ files:
111
139
  - Rakefile
112
140
  - factory_group.gemspec
113
141
  - lib/factory_group.rb
142
+ - lib/factory_group/exceptions/factory_group_not_defined.rb
114
143
  - lib/factory_group/group.rb
115
144
  - lib/factory_group/version.rb
116
- - spec/acceptance/group_spec.rb
145
+ - spec/acceptance/factory_group_spec.rb
117
146
  - spec/factory_group/group_spec.rb
118
147
  - spec/factory_group_spec.rb
119
148
  - spec/spec_helper.rb
149
+ - spec/support/macros/define_models.rb
120
150
  homepage: http://codebrahma.com/factory_group/
121
151
  licenses:
122
152
  - MIT
@@ -142,7 +172,8 @@ signing_key:
142
172
  specification_version: 4
143
173
  summary: Lets you create a group of factories
144
174
  test_files:
145
- - spec/acceptance/group_spec.rb
175
+ - spec/acceptance/factory_group_spec.rb
146
176
  - spec/factory_group/group_spec.rb
147
177
  - spec/factory_group_spec.rb
148
178
  - spec/spec_helper.rb
179
+ - spec/support/macros/define_models.rb
@@ -1,5 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe FactoryGroup::Group do
4
- pending "To write acceptance testing for FactoryGroup::Group"
5
- end