light 1.0.0 → 1.0.1

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: 0bcfe0b06dba3e6fe05c7abbfc571b4a730f2e14
4
- data.tar.gz: 8c38fc100b208b7dd433b1cd49ffc532e4805082
3
+ metadata.gz: acbf70b8bbb6a9b52486af69db0943258636befe
4
+ data.tar.gz: ed1173653116ef955eb281296a0872621a6b4bed
5
5
  SHA512:
6
- metadata.gz: 30a396cc252034d137d96f44daf020e3f84d440285f19df47ce0dda7252baa67ce8654e5ee4664afa085df6e2ed5b9f164b49350ccae24a0e0a6f017322340fe
7
- data.tar.gz: 5d3f0f12ac99e416d97b54786394da9f2f3b8ecdf8864b3ad9d493d973f13df4293e28ae14f32006ad75f121c50badda36b41e7c96f3aec6bfdf330fa55ad43c
6
+ metadata.gz: 8570eeec9de0d96122ec59e03cbc28fd38cacba59e9fbc1fa77e3f6965c0ce4c6baefe130dcf1969df02ce162e19447013eb443b9853c989c6bfbb0c51b72c5b
7
+ data.tar.gz: 6d99baa956e03e77525521da3af626640cbf1761a6650233a9debe02b927b4c61e41a2d164909d758b2c900c182adf3e7807fdaac0765be15a769d0fc0373ab4
data/README.md CHANGED
@@ -1,11 +1,38 @@
1
1
  # Light
2
2
 
3
- When you need all functionalities of ActiveRecord model but for other purposes than db transactions you can use Light. Light has additional `equality_state` and `to_h` method.
3
+ When you need all functionalities of ActiveRecord model but for other purposes than db transactions you can use Light. Light has additional `equality_state` and `to_h` and `persisted?` method.
4
4
 
5
5
  ## Examples:
6
6
 
7
- ```
8
-
7
+ ```ruby
8
+ require 'light'
9
+ class Person < Light::Model
10
+ attributes :id, :name, :email
11
+ end
12
+
13
+ person1 = Person.new(name: 'Pawel', email: 'pawel@o2.pl')
14
+ person1.to_h # => {"id" => nil, "name"=>"Pawel", "email"=>"pawel@o2.pl"}
15
+ person1.as_json # => {"id" => nil, "name"=>"Pawel", "email"=>"pawel@o2.pl"}
16
+ person1.to_json # => "{\"id\":null,\"name\":\"Pawel\",\"email\":\"pawel@o2.pl\"}"
17
+
18
+ person2 = Person.new('name' => 'Pawel', email: 'pawel@o2.pl')
19
+ person3 = Person.new(name: 'Sylwia', email: 'sylwia@o2.pl')
20
+
21
+ person1 == person2 # => true
22
+ person1 == person3 # => false
23
+ person1.eql?(person2) # => true
24
+ person1.eql?(person3) # => false
25
+ person1.persisted? # => false
26
+
27
+ class User < Light::Model
28
+ attributes :id, :email
29
+ persisted_via_attr :id
30
+ end
31
+
32
+ user = User.new(email: 'somebody@gmail.com')
33
+ user.persisted? # => false
34
+ user.id = 1
35
+ user.persisted? # => true
9
36
  ```
10
37
 
11
38
  ## Installation
@@ -16,6 +16,10 @@ module Light
16
16
  end
17
17
  @__attributes = (@__attributes || []) + attrs
18
18
  end
19
+
20
+ def persisted_via_attr(attr_name)
21
+ @__persisted_via_attr = attr_name
22
+ end
19
23
  end
20
24
 
21
25
  def equality_state
@@ -46,7 +50,10 @@ module Light
46
50
  end
47
51
 
48
52
  def persisted?
49
- false
53
+ attr_name = self.class.instance_variable_get(:@__persisted_via_attr)
54
+ return false if attr_name.nil?
55
+ value = send(attr_name)
56
+ !(value.respond_to?(:empty?) ? !!value.empty? : !value)
50
57
  end
51
58
 
52
59
  private
@@ -1,3 +1,3 @@
1
1
  module Light
2
- VERSION = '1.0.0'.freeze
2
+ VERSION = '1.0.1'.freeze
3
3
  end
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activemodel', '~> 4.0'
21
+ spec.add_dependency 'activemodel', '>= 4.0'
22
22
  spec.add_development_dependency 'bundler', '~> 1.3'
23
23
  spec.add_development_dependency 'rake', '~> 0'
24
24
  spec.add_development_dependency 'rspec', '~> 3.1'
@@ -8,7 +8,7 @@ describe Light::Model do
8
8
  let(:test_data) { {name: 'Pawel', email: 'pniemczyk@o2.pl', bucket: { test_key: 'stuff'}} }
9
9
  before(:each) { @subject = TestClass.new(test_data) }
10
10
 
11
- describe 'initialize' do
11
+ context 'initialize' do
12
12
  it 'fillfull instance' do
13
13
  @subject.name.should eq test_data[:name]
14
14
  @subject.email.should eq test_data[:email]
@@ -16,7 +16,7 @@ describe Light::Model do
16
16
  end
17
17
  end
18
18
 
19
- describe '#to_h' do
19
+ context '#to_h' do
20
20
  it 'default' do
21
21
  @subject.to_h.symbolize_keys.should eq test_data
22
22
  end
@@ -27,7 +27,7 @@ describe Light::Model do
27
27
  end
28
28
  end
29
29
 
30
- describe 'equality' do
30
+ context 'equality' do
31
31
  it 'two instance with same data should be eq' do
32
32
  [
33
33
  TestClass.new(test_data) == TestClass.new(test_data),
@@ -36,7 +36,7 @@ describe Light::Model do
36
36
  end
37
37
  end
38
38
 
39
- describe '#as_json' do
39
+ context '#as_json' do
40
40
  it 'default' do
41
41
  @subject.as_json.should eq test_data.stringify_keys
42
42
  end
@@ -47,7 +47,7 @@ describe Light::Model do
47
47
  end
48
48
  end
49
49
 
50
- describe '#to_json' do
50
+ context '#to_json' do
51
51
  it 'default' do
52
52
  @subject.to_json.should eq test_data.to_json
53
53
  end
@@ -57,4 +57,22 @@ describe Light::Model do
57
57
  @subject.to_json(only: :name).should eq hash.to_json
58
58
  end
59
59
  end
60
+
61
+ context '#persisted?' do
62
+ it 'by default returns false' do
63
+ @subject.persisted?.should eq false
64
+ end
65
+
66
+ context 'when persisted_via_attr is setup' do
67
+ before { @subject.class.persisted_via_attr :name }
68
+ it 'returns true when attr value present' do
69
+ @subject.persisted?.should eq true
70
+ end
71
+
72
+ it 'returns false when attr value is blank' do
73
+ @subject.name = nil
74
+ @subject.persisted?.should eq false
75
+ end
76
+ end
77
+ end
60
78
  end
metadata CHANGED
@@ -1,27 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: light
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pawel Niemczyk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-18 00:00:00.000000000 Z
11
+ date: 2018-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4.0'
27
27
  - !ruby/object:Gem::Dependency
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.6.8
123
+ rubygems_version: 2.6.14
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Light models