difference 1.0.1 → 1.0.2.alpha

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.
data/.gitignore CHANGED
@@ -2,3 +2,4 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ test/setup/db/test.sqlite3
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - "2.0.0"
4
+ - "1.9.3"
5
+ env:
6
+ - DB=sqlite
7
+ script:
8
+ - bundle install
9
+ - ruby test/test_difference.rb
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem 'activerecord'
3
+ gemspec
4
4
 
data/README.rdoc CHANGED
@@ -1,6 +1,10 @@
1
1
  
2
- Difference is used to find difference between 2 objects of same class.
2
+ Difference is used to find difference between 2 objects of same class.
3
3
 
4
+ {<img src="https://badge.fury.io/rb/difference.png" alt="Gem Version" />}[http://badge.fury.io/rb/difference]
5
+ {<img src="https://travis-ci.org/gouravtiwari/difference.png?branch=master" alt="Build Status" />}[https://travis-ci.org/gouravtiwari/difference]
6
+
7
+ Supported versions Ruby 1.9.3+
4
8
 
5
9
  Usage
6
10
  1. Paste this line in your Gemfile
@@ -15,22 +19,25 @@ Eg.
15
19
  a=Foo.find 1
16
20
  b=Foo.find 3
17
21
 
18
- Now you can use,
22
+ Now you can use,
19
23
  a.differs_from b
20
24
 
21
- will return a hash: {:attr1=>[<value of attr1 in a>,<value of attr1 in b>], :attr2=>[<value of attr2 in a>,<value of attr2 in b>]} if both values are different in a and b.
25
+ will return a hash:
26
+ {:attr1=>[<value of attr1 in a>,<value of attr1 in b>], :attr2=>[<value of attr2 in a>,<value of attr2 in b>]} if both values are different in a and b.
22
27
 
23
28
  Options for differs_from:
24
29
  1. ignore_attributes: This options helps to ignore attributes from the AR objects while comparison.
25
- Eg:
26
- a.differs_from b, :ignore_attributes=>[:id, :created_at]
30
+ a.differs_from b, :ignore_attributes=>[:id, :created_at]
27
31
 
28
32
  2. only_attribues: This options helps to compare only the specified attributes.
29
- a.differs_from b :only_attributes=> :name
33
+ a.differs_from b :only_attributes=> :name
30
34
 
31
35
 
32
- TODO:
33
- #specs
36
+ Tests
37
+ This repo uses very lightweight test-suite 'minitest'
38
+ To run tests:
39
+ 1. $ bundle install #at root
40
+ 2. $ ruby test/test_difference.rb
34
41
 
35
42
 
36
43
  License
data/difference.gemspec CHANGED
@@ -19,6 +19,9 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
22
+ s.add_dependency 'activerecord'
23
+
24
+ s.add_development_dependency 'minitest'
25
+ s.add_development_dependency 'sqlite3'
23
26
  # s.add_runtime_dependency "rest-client"
24
27
  end
@@ -1,3 +1,3 @@
1
1
  module Difference
2
- VERSION = "1.0.1"
2
+ VERSION = "1.0.2.alpha"
3
3
  end
data/lib/difference.rb CHANGED
@@ -1,5 +1,3 @@
1
- require "difference/version"
2
-
3
1
  module Difference
4
2
  class ActiveRecord::Base
5
3
  def differs_from(object,opt={})
@@ -0,0 +1 @@
1
+ .gitkeep
@@ -0,0 +1,31 @@
1
+ require 'minitest/autorun'
2
+ require_relative 'test_helper'
3
+
4
+ class FakeUser < ActiveRecord::Base
5
+ def self.needs_attr_accessible?
6
+ ActiveRecord::VERSION::MAJOR == 3
7
+ end
8
+
9
+ if needs_attr_accessible?
10
+ attr_accessible :name, :address
11
+ end
12
+ end
13
+
14
+ class TestDifference < MiniTest::Test
15
+ def setup
16
+ @john = FakeUser.create(:name => 'john', :address => 'NYC')
17
+ @smith = FakeUser.create(:name => 'smith', :address => 'NYC')
18
+ end
19
+
20
+ def test_john_and_smith_not_matching_on_id_and_name
21
+ assert_equal({:id => [@john.id, @smith.id], :name=>["john", "smith"]}, @john.differs_from(@smith))
22
+ end
23
+
24
+ def test_john_and_smith_not_matching_on_name
25
+ assert_equal({:name=>["john", "smith"]}, @john.differs_from(@smith, :ignore_attributes => [:id, :created_at]))
26
+ end
27
+
28
+ def test_john_and_smith_matching_on_address
29
+ assert_equal({}, @john.differs_from(@smith, :only_attributes => [:address]))
30
+ end
31
+ end
@@ -0,0 +1,19 @@
1
+ require 'active_record'
2
+ require 'fileutils'
3
+ require 'sqlite3'
4
+
5
+ require_relative '../lib/difference.rb'
6
+
7
+ FileUtils.rm_f 'test/setup/db/test.sqlite3'
8
+
9
+ ActiveRecord::Base.establish_connection(
10
+ :adapter => 'sqlite3',
11
+ :database => './test/setup/db/test.sqlite3'
12
+ )
13
+
14
+ ActiveRecord::Migration.class_eval do
15
+ create_table :fake_users do |t|
16
+ t.string :name
17
+ t.text :address
18
+ end
19
+ end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: difference
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease:
4
+ hash: 967688027
5
+ prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 2
10
+ - alpha
11
+ version: 1.0.2.alpha
11
12
  platform: ruby
12
13
  authors:
13
14
  - Manish Puri
@@ -15,9 +16,50 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2013-07-07 00:00:00 Z
19
- dependencies: []
20
-
19
+ date: 2014-02-17 00:00:00 Z
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: activerecord
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: minitest
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: sqlite3
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
21
63
  description: This is a simple gem to compare 2 objects of the same class and return a hash of differences
22
64
  email:
23
65
  - manishspuri@gmail.com
@@ -29,12 +71,16 @@ extra_rdoc_files: []
29
71
 
30
72
  files:
31
73
  - .gitignore
74
+ - .travis.yml
32
75
  - Gemfile
33
76
  - README.rdoc
34
77
  - Rakefile
35
78
  - difference.gemspec
36
79
  - lib/difference.rb
37
80
  - lib/difference/version.rb
81
+ - test/setup/db/.gitkeep
82
+ - test/test_difference.rb
83
+ - test/test_helper.rb
38
84
  homepage: ""
39
85
  licenses: []
40
86
 
@@ -55,16 +101,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
55
101
  required_rubygems_version: !ruby/object:Gem::Requirement
56
102
  none: false
57
103
  requirements:
58
- - - ">="
104
+ - - ">"
59
105
  - !ruby/object:Gem::Version
60
- hash: 3
106
+ hash: 25
61
107
  segments:
62
- - 0
63
- version: "0"
108
+ - 1
109
+ - 3
110
+ - 1
111
+ version: 1.3.1
64
112
  requirements: []
65
113
 
66
114
  rubyforge_project: difference
67
- rubygems_version: 1.8.25
115
+ rubygems_version: 1.8.17
68
116
  signing_key:
69
117
  specification_version: 3
70
118
  summary: difference between 2 objects