activerecord-endoscope 0.0.2 → 0.0.3

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: 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