partisan 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.0.0
5
+ - 1.9.3
6
+
7
+ script: "echo 'DO IT' && bundle exec rake spec"
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Partisan
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/partisan.png)](https://rubygems.org/gems/partisan)
4
+ [![Build Status](https://travis-ci.org/mirego/partisan.png?branch=master)](https://travis-ci.org/mirego/partisan)
5
+
3
6
  Partisan is a Ruby library that allows ActiveRecord records to follow other records.
4
7
 
5
8
  It’s heavily inspired by `acts_as_follower`. However, it’s not 100% compatible with `acts_as_follower` as I removed some “features”:
@@ -21,7 +24,7 @@ Add this line to your application’s Gemfile:
21
24
  gem 'partisan'
22
25
  ```
23
26
 
24
- And then execute:
27
+ And then execute
25
28
 
26
29
  ```bash
27
30
  $ bundle
@@ -81,7 +84,7 @@ band.followers_count
81
84
  # Quick lookup into the column and returns `1`
82
85
  ```
83
86
 
84
- The same concept applies to `followable` with a `following_count` column.
87
+ The same concept applies to `followable` with a `followings_count` column.
85
88
 
86
89
  ### Callbacks
87
90
 
@@ -135,11 +138,6 @@ The available callbacks are:
135
138
 
136
139
  ## About Mirego
137
140
 
138
- Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun.
139
- We proudly built mobile applications for
140
- [iPhone](http://mirego.com/en/iphone-app-development/ "iPhone application development"),
141
- [iPad](http://mirego.com/en/ipad-app-development/ "iPad application development"),
142
- [Android](http://mirego.com/en/android-app-development/ "Android application development"),
143
- [Blackberry](http://mirego.com/en/blackberry-app-development/ "Blackberry application development"),
144
- [Windows Phone](http://mirego.com/en/windows-phone-app-development/ "Windows Phone application development") and
145
- [Windows 8](http://mirego.com/en/windows-8-app-development/ "Windows 8 application development").
141
+ Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We proudly build mobile applications for [iPhone](http://mirego.com/en/iphone-app-development/ "iPhone application development"), [iPad](http://mirego.com/en/ipad-app-development/ "iPad application development"), [Android](http://mirego.com/en/android-app-development/ "Android application development"), [Blackberry](http://mirego.com/en/blackberry-app-development/ "Blackberry application development"), [Windows Phone](http://mirego.com/en/windows-phone-app-development/ "Windows Phone application development") and [Windows 8](http://mirego.com/en/windows-8-app-development/ "Windows 8 application development") in beautiful Quebec City.
142
+
143
+ We also love [open-source software](http://open.mirego.com/) and we try to extract as much code as possible from our projects to give back to the community.
@@ -45,8 +45,8 @@ module Partisan
45
45
  protected
46
46
 
47
47
  def update_follow_counter
48
- self.follower.update_follow_counter
49
- self.followable.update_follow_counter
48
+ self.follower.update_follower_counter
49
+ self.followable.update_followable_counter
50
50
  end
51
51
  end
52
52
  end
@@ -54,7 +54,7 @@ module Partisan
54
54
 
55
55
  # Update cache counter
56
56
  # Called in after_create and after_destroy
57
- def update_follow_counter
57
+ def update_followable_counter
58
58
  self.update_attribute('followers_count', self.followings.count) if self.respond_to?(:followers_count)
59
59
  end
60
60
 
@@ -96,7 +96,7 @@ module Partisan
96
96
 
97
97
  # Update cache counter
98
98
  # Called in after_create and after_destroy
99
- def update_follow_counter
99
+ def update_follower_counter
100
100
  self.update_attribute('followings_count', self.follows.count) if self.respond_to?(:followings_count)
101
101
  end
102
102
 
@@ -1,3 +1,3 @@
1
1
  module Partisan
2
- VERSION = "0.2.1"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -37,7 +37,7 @@ describe Partisan::Followable do
37
37
 
38
38
  describe :followers_by_type do
39
39
  it { expect(band.followers_by_type('User').count).to eq 1 }
40
- it { expect(band.followers_by_type('User')).to be_an_instance_of(ActiveRecord::Relation) }
40
+ it { expect(band.followers_by_type('User')).to be_an_instance_of(ActiveRecord::Relation::ActiveRecord_Relation_User) }
41
41
  it { expect(band.followers_by_type('User').first).to be_an_instance_of(User) }
42
42
  it { expect(band.followers_by_type('Fan').count).to eq 0 }
43
43
  end
@@ -50,7 +50,7 @@ describe Partisan::Followable do
50
50
 
51
51
  describe :followers_by_type_in_method_missing do
52
52
  it { expect(band.user_followers.count).to eq 1 }
53
- it { expect(band.user_followers).to be_an_instance_of(ActiveRecord::Relation) }
53
+ it { expect(band.user_followers).to be_an_instance_of(ActiveRecord::Relation::ActiveRecord_Relation_User) }
54
54
  it { expect(band.user_followers.first).to be_an_instance_of(User) }
55
55
  it { expect(band.fan_followers.count).to eq 0 }
56
56
  end
@@ -5,20 +5,34 @@ describe Partisan::Follower do
5
5
  run_migration do
6
6
  create_table(:users, force: true) do |t|
7
7
  t.integer :followings_count, default: 0
8
+ t.integer :followers_count, default: 0
8
9
  end
9
10
  create_table(:concerts, force: true)
10
11
  create_table(:bands, force: true)
11
12
  end
12
13
 
13
- follower 'User'
14
+ followable_and_follower 'User'
14
15
  followable 'Band'
15
16
  followable 'Concert'
16
17
  end
17
18
 
18
19
  let(:band) { Band.create }
19
20
  let(:user) { User.create }
21
+ let(:user2) { User.create }
20
22
  let(:concert) { Concert.create }
21
23
 
24
+ describe :UserToUser do
25
+ before do
26
+ user.follow user2
27
+
28
+ user.reload
29
+ user2.reload
30
+ end
31
+
32
+ it { expect(user.followings_count).to eq 1 }
33
+ it { expect(user2.followers_count).to eq 1 }
34
+ end
35
+
22
36
  describe :InstanceMethods do
23
37
  before do
24
38
  user.follow band
@@ -44,7 +58,7 @@ describe Partisan::Follower do
44
58
 
45
59
  describe :following_by_type do
46
60
  it { expect(user.following_by_type('Band').count).to eq 1 }
47
- it { expect(user.following_by_type('Band')).to be_an_instance_of(ActiveRecord::Relation) }
61
+ it { expect(user.following_by_type('Band')).to be_an_instance_of(ActiveRecord::Relation::ActiveRecord_Relation_Band) }
48
62
  it { expect(user.following_by_type('Band').first).to be_an_instance_of(Band) }
49
63
  it { expect(user.following_by_type('Concert').count).to eq 0 }
50
64
  end
@@ -57,11 +71,11 @@ describe Partisan::Follower do
57
71
 
58
72
  describe :following_by_type_in_method_missing do
59
73
  it { expect(user.following_bands.count).to eq 1 }
60
- it { expect(user.following_bands).to be_an_instance_of(ActiveRecord::Relation) }
74
+ it { expect(user.following_bands).to be_an_instance_of(ActiveRecord::Relation::Relation::ActiveRecord_Relation_Band) }
61
75
  it { expect(user.following_bands.first).to be_an_instance_of(Band) }
62
76
 
63
77
  it { expect(user.following_concerts.count).to eq 0 }
64
- it { expect(user.following_concerts).to be_an_instance_of(ActiveRecord::Relation) }
78
+ it { expect(user.following_concerts).to be_an_instance_of(ActiveRecord::Relation::Relation::ActiveRecord_Relation_Concert) }
65
79
  end
66
80
 
67
81
  describe :following_fields_by_type_in_method_missing do
@@ -15,6 +15,15 @@ module ModelMacros
15
15
  end
16
16
  end
17
17
 
18
+ # Create a new emotive and emotionnal model
19
+ def followable_and_follower(klass_name, &block)
20
+ spawn_model klass_name, ActiveRecord::Base do
21
+ acts_as_followable
22
+ acts_as_follower
23
+ class_eval(&block) if block
24
+ end
25
+ end
26
+
18
27
  protected
19
28
 
20
29
  # Create a new model class
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: partisan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-07-18 00:00:00.000000000 Z
13
+ date: 2013-07-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -104,6 +104,7 @@ extra_rdoc_files: []
104
104
  files:
105
105
  - .gitignore
106
106
  - .rspec
107
+ - .travis.yml
107
108
  - Gemfile
108
109
  - LICENSE.md
109
110
  - README.md
@@ -119,9 +120,9 @@ files:
119
120
  - lib/partisan/railtie.rb
120
121
  - lib/partisan/version.rb
121
122
  - partisan.gemspec
122
- - spec/followable_spec.rb
123
- - spec/follower_spec.rb
124
123
  - spec/spec_helper.rb
124
+ - spec/support/followable_spec.rb
125
+ - spec/support/follower_spec.rb
125
126
  - spec/support/macros/database_macros.rb
126
127
  - spec/support/macros/model_macros.rb
127
128
  homepage: https://github.com/mirego/partisan
@@ -139,7 +140,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
139
140
  version: '0'
140
141
  segments:
141
142
  - 0
142
- hash: -3563341390347157269
143
+ hash: 390646380941659305
143
144
  required_rubygems_version: !ruby/object:Gem::Requirement
144
145
  none: false
145
146
  requirements:
@@ -148,7 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  version: '0'
149
150
  segments:
150
151
  - 0
151
- hash: -3563341390347157269
152
+ hash: 390646380941659305
152
153
  requirements: []
153
154
  rubyforge_project:
154
155
  rubygems_version: 1.8.23
@@ -157,8 +158,8 @@ specification_version: 3
157
158
  summary: Partisan is a Ruby library that allows ActiveRecord records to be follower
158
159
  and followable
159
160
  test_files:
160
- - spec/followable_spec.rb
161
- - spec/follower_spec.rb
162
161
  - spec/spec_helper.rb
162
+ - spec/support/followable_spec.rb
163
+ - spec/support/follower_spec.rb
163
164
  - spec/support/macros/database_macros.rb
164
165
  - spec/support/macros/model_macros.rb