activerecord-endoscope 0.0.2 → 0.0.3

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: 6b2bf489b3f724243c06baf3af05a3df2a2c67bf
4
- data.tar.gz: 38131b96090c359b3b0f3e0b1f17cd79c654cb39
3
+ metadata.gz: 4f7b0f144f4d540ddf9c2cfeb5193de79fb4406e
4
+ data.tar.gz: 21d1a181faaec6953411bd9a4574b084ed0e15d5
5
5
  SHA512:
6
- metadata.gz: 3d01545bbe9af660d03de99577905b9a082289b1ea2036fe7903c06c8f6f34035509dd3512af6e7cdd0594ceee56a1321cc2c833fac2cf001c5528e0c8de04b5
7
- data.tar.gz: 123226f8c6ac312066d7e7cd5bce8115c8655ca73ac6fa4d4365a82be5badbe644bd2b17762a686ad4f948bb7f89f83a8d168c7fb363dfdaaf94f52d32fe7838
6
+ metadata.gz: 1254fd5b3774e8c16b10261a3f70e57993b44015639b93e1b57ef4716dbce5eaaea4b24a3607bbf651289661a9271ed08963f3618094682f34e65a5631b549bd
7
+ data.tar.gz: ab0199d0cd4bb7448e2dc655b1876b5af68a6f97831372d0fe09e91ef070dfc6f54871fb3e39a6286b9b50ddf204a00d1f876bfaafc64115b54c794c66d8ed77
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .rspec
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in active_record-endoscope.gemspec
4
4
  gemspec
5
+ gem 'arel_ruby', github: 'tkawa/arel_ruby'
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # activerecord-endoscope
2
2
 
3
+ [![Build Status](https://travis-ci.org/tkawa/activerecord-endoscope.png)](https://travis-ci.org/tkawa/activerecord-endoscope)
4
+ [![Gem Version](https://badge.fury.io/rb/activerecord-endoscope.png)](http://badge.fury.io/rb/activerecord-endoscope)
5
+
3
6
  Endoscope enables scope to apply to model instance
4
7
 
5
8
  ## Example
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'rubygems'
2
+ require 'rspec/core/rake_task'
3
+ require 'bundler/gem_tasks'
4
+
5
+ desc 'Run all examples'
6
+ RSpec::Core::RakeTask.new(:spec) do |t|
7
+ t.rspec_opts = %w[--color]
8
+ end
9
+
10
+ task :default => [:spec]
@@ -23,4 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_dependency 'arel_ruby'
24
24
  spec.add_development_dependency 'bundler', '~> 1.3'
25
25
  spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rspec'
27
+ spec.add_development_dependency 'sqlite3'
28
+ spec.add_development_dependency 'squeel'
26
29
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module Endoscope
3
- VERSION = "0.0.2"
3
+ VERSION = "0.0.3"
4
4
  end
5
5
  end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe "user's scope" do
4
+ subject {
5
+ User.create!(
6
+ locale: 'ja',
7
+ sign_in_count: 1,
8
+ name: 'foobar',
9
+ email: 'foobar@example.com',
10
+ joined_at: Time.parse('2013-09-19 00:00:00'),
11
+ specified_on: Date.parse('2013-09-19')
12
+ )
13
+ }
14
+ specify { expect(subject).to be_ja }
15
+ specify { expect(subject).not_to be_not_ja }
16
+ specify { expect(subject).to be_ja_or_en }
17
+ specify { expect(subject).not_to be_not_ja_or_en }
18
+ specify { expect(subject).to be_rarely_signed_in }
19
+ specify { expect(subject).not_to be_not_rarely_signed_in }
20
+ specify { expect(subject).to be_recently_joined }
21
+ specify { expect(subject).to be_specified_day_in_this_week }
22
+ specify { expect(subject).not_to have_no_email }
23
+ specify { expect(subject).to have_email }
24
+ specify { expect(subject).to be_named('foo') }
25
+ specify { expect(subject).not_to be_named('baz') }
26
+ specify { expect(subject).not_to be_heavily_used }
27
+ specify { expect(subject).to be_complex_logic }
28
+ end
@@ -0,0 +1,74 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'active_record'
4
+ require 'arel_ruby'
5
+ require 'activerecord-endoscope'
6
+ require 'squeel'
7
+
8
+ # database
9
+ ActiveRecord::Base.configurations = {'test' => {:adapter => 'sqlite3', :database => ':memory:'}}
10
+ ActiveRecord::Base.establish_connection('test')
11
+
12
+ # models
13
+ class User < ActiveRecord::Base
14
+ extend ActiveRecord::Endoscope
15
+ scope :ja, -> {
16
+ where(locale: 'ja')
17
+ }
18
+ scope :not_ja, -> {
19
+ where.not(locale: 'ja')
20
+ }
21
+ scope :ja_or_en, -> {
22
+ where(locale: ['ja', 'en'])
23
+ #where{ (locale == 'ja') | (locale == 'en') }
24
+ }
25
+ scope :not_ja_or_en, -> {
26
+ where.not(locale: ['ja', 'en'])
27
+ }
28
+ scope :rarely_signed_in, -> {
29
+ where(sign_in_count: 0..3)
30
+ }
31
+ scope :not_rarely_signed_in, -> {
32
+ where.not(sign_in_count: 0..3)
33
+ }
34
+ scope :recently_joined, -> {
35
+ now = Time.parse('2013-09-20 00:00:00')
36
+ where(joined_at: now.ago(1.week)..now)
37
+ }
38
+ scope :specified_day_in_this_week, -> {
39
+ now = Date.parse('2013-09-20')
40
+ where(specified_on: now.beginning_of_week..now.end_of_week)
41
+ }
42
+ scope :have_no_email, -> {
43
+ where(email: nil)
44
+ }
45
+ scope :have_email, -> {
46
+ where.not(email: nil).where.not(email: '')
47
+ }
48
+ # using squeel
49
+ scope :named, ->(param) {
50
+ where{ name.like "%#{param}%" }
51
+ }
52
+ scope :not_named, ->(param) {
53
+ where{ name.not_like "%#{param}%" }
54
+ }
55
+ scope :heavily_used, -> {
56
+ where{ sign_in_count >= 4 }
57
+ }
58
+ scope :complex_logic, -> {
59
+ where{ ((locale == 'ja') & (email != nil)) | ((locale == 'en') & (email == nil)) }
60
+ }
61
+ end
62
+
63
+ # migrations
64
+ class CreateAllTables < ActiveRecord::Migration
65
+ def self.up
66
+ create_table(:users) {|t| t.string :locale; t.integer :sign_in_count; t.string :name; t.string :email; t.datetime :joined_at; t.date :specified_on}
67
+ end
68
+ end
69
+
70
+ RSpec.configure do |config|
71
+ config.before :all do
72
+ CreateAllTables.up unless ActiveRecord::Base.connection.table_exists?('users')
73
+ end
74
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-endoscope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Toru KAWAMURA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-16 00:00:00.000000000 Z
11
+ date: 2013-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -80,6 +80,48 @@ dependencies:
80
80
  - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: squeel
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
83
125
  description: Endoscope enables scope to apply to model instance
84
126
  email:
85
127
  - tkawa@4bit.net
@@ -88,6 +130,7 @@ extensions: []
88
130
  extra_rdoc_files: []
89
131
  files:
90
132
  - .gitignore
133
+ - .travis.yml
91
134
  - Gemfile
92
135
  - LICENSE.txt
93
136
  - README.md
@@ -96,6 +139,8 @@ files:
96
139
  - lib/active_record/endoscope.rb
97
140
  - lib/active_record/endoscope/version.rb
98
141
  - lib/activerecord-endoscope.rb
142
+ - spec/scope_spec.rb
143
+ - spec/spec_helper.rb
99
144
  homepage: https://github.com/tkawa/activerecord-endoscope
100
145
  licenses:
101
146
  - MIT
@@ -120,4 +165,6 @@ rubygems_version: 2.0.3
120
165
  signing_key:
121
166
  specification_version: 4
122
167
  summary: Endoscope enables scope to apply to model instance
123
- test_files: []
168
+ test_files:
169
+ - spec/scope_spec.rb
170
+ - spec/spec_helper.rb