factory_group 0.0.3 → 0.0.4

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