gotime-cassandra_object 2.6.2 → 2.6.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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'gotime-cassandra_object'
5
- s.version = '2.6.2'
5
+ s.version = '2.6.3'
6
6
  s.description = 'Cassandra ActiveModel'
7
7
  s.summary = 'Cassandra ActiveModel'
8
8
 
@@ -52,7 +52,7 @@ module CassandraObject
52
52
  @key = attributes.delete(:key)
53
53
  @new_record = true
54
54
  @destroyed = false
55
- @attributes = {}
55
+ @attributes = {}.with_indifferent_access
56
56
  self.attributes = attributes
57
57
  @schema_version = self.class.current_schema_version
58
58
  end
@@ -1,41 +1,35 @@
1
1
  module CassandraObject
2
2
  module Types
3
3
  class ArrayType < BaseType
4
- class Proxy < BasicObject
5
- instance_methods.each { |m| undef_method m }
6
-
7
- attr_accessor :record, :name, :array, :options
4
+ class DirtyArray < Array
5
+ attr_accessor :record, :name, :options
8
6
  def initialize(record, name, array, options)
9
7
  @record = record
10
8
  @name = name.to_s
11
- @array = array.presence || []
12
9
  @options = options
10
+ super(array.presence || [])
13
11
  end
14
12
 
15
13
  def <<(obj)
16
14
  modifying do
17
- array << obj
18
- array.uniq! if options[:unique]
15
+ super
16
+ uniq! if options[:unique]
19
17
  end
20
18
  end
21
19
 
22
20
  private
23
- def method_missing(method, *args, &block)
24
- array.send(method, *args, &block)
25
- end
26
-
27
21
  def modifying
28
22
  unless record.changed_attributes.include?(name)
29
- original = array.dup
23
+ original = dup
30
24
  end
31
25
 
32
26
  yield
33
27
 
34
- if !record.changed_attributes.key?(name) && original.sort != array.sort
28
+ if !record.changed_attributes.key?(name) && original.sort != sort
35
29
  record.changed_attributes[name] = original
36
30
  end
37
31
 
38
- record.send("#{name}=", array)
32
+ record.send("#{name}=", self)
39
33
  end
40
34
  end
41
35
 
@@ -55,7 +49,7 @@ module CassandraObject
55
49
  end
56
50
 
57
51
  def wrap(record, name, value)
58
- Proxy.new(record, name, value, options)
52
+ DirtyArray.new(record, name, value, options)
59
53
  end
60
54
  end
61
55
  end
data/test/dirty_test.rb CHANGED
@@ -15,16 +15,4 @@ class CassandraObject::DirtyTest < CassandraObject::TestCase
15
15
 
16
16
  assert !record.changed?
17
17
  end
18
-
19
- test 'reload clears dirty' do
20
- record = TestRecord.create!(name: 'foo')
21
- record = TestRecord.find(record.id)
22
-
23
- record.name = 'bar'
24
- assert record.changed?
25
-
26
- record.reload
27
-
28
- assert !record.changed?
29
- end
30
18
  end
data/test/test_helper.rb CHANGED
@@ -4,11 +4,6 @@ require 'test/unit'
4
4
  require 'cassandra/0.8'
5
5
  require 'gotime-cassandra_object'
6
6
 
7
- CassandraObject::Base.establish_connection(
8
- keyspace: 'place_directory_development',
9
- servers: '127.0.0.1:9160'
10
- )
11
-
12
7
  class Issue < CassandraObject::Base
13
8
  key :uuid
14
9
  string :description
@@ -17,6 +12,11 @@ end
17
12
  module CassandraObject
18
13
  class TestCase < ActiveSupport::TestCase
19
14
  setup do
15
+ CassandraObject::Base.establish_connection(
16
+ keyspace: 'place_directory_development',
17
+ # servers: '192.168.0.100:9160'
18
+ servers: '127.0.0.1:9160'
19
+ )
20
20
  end
21
21
 
22
22
  teardown do
@@ -29,7 +29,7 @@ module CassandraObject
29
29
  end
30
30
 
31
31
  module Types
32
- class TestCase < CassandraObject::TestCase
32
+ class TestCase < ActiveSupport::TestCase
33
33
  attr_accessor :coder
34
34
  setup do
35
35
  @coder = self.class.name.sub(/Test$/, '').constantize.new
@@ -18,30 +18,19 @@ class CassandraObject::Types::ArrayTypeTest < CassandraObject::Types::TestCase
18
18
  end
19
19
 
20
20
  class TestIssue < CassandraObject::Base
21
- key :uuid
22
- self.column_family = 'Issues'
23
- array :favorite_colors, unique: true
21
+ self.column_family = 'Issue'
22
+ array :favorite_colors
24
23
  end
25
24
 
26
- test 'array attribute' do
27
- issue = TestIssue.new favorite_colors: []
28
-
29
- assert_kind_of Array, issue.favorite_colors
30
- issue.favorite_colors << 'red'
31
-
32
- assert issue.changed?
33
- assert_equal({'favorite_colors' => [nil, ['red']]}, issue.changes)
34
- end
25
+ test 'wrap' do
26
+ issue = TestIssue.new
27
+ colors = []
28
+ wrapper = coder.wrap(issue, 'favorite_colors', colors)
35
29
 
36
- test 'array uniques' do
37
- issue = TestIssue.create! favorite_colors: ['red', 'blue']
38
-
39
- issue.favorite_colors << 'red'
40
- assert_equal ['red', 'blue'], issue.favorite_colors
30
+ assert_kind_of Array, wrapper
31
+
41
32
  assert !issue.changed?
42
-
43
- issue.favorite_colors << 'yellow'
44
- assert_equal ['red', 'blue', 'yellow'], issue.favorite_colors
45
- assert_equal({'favorite_colors' => [['red', 'blue'], ['red', 'blue', 'yellow']]}, issue.changes)
33
+ wrapper << 'red'
34
+ assert issue.changed?
46
35
  end
47
36
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gotime-cassandra_object
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.2
4
+ version: 2.6.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -14,7 +14,7 @@ date: 2011-08-29 00:00:00.000000000Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
17
- requirement: &70186041043380 !ruby/object:Gem::Requirement
17
+ requirement: &70252009263440 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ~>
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '3.0'
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: *70186041043380
25
+ version_requirements: *70252009263440
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: cassandra
28
- requirement: &70186041042820 !ruby/object:Gem::Requirement
28
+ requirement: &70252009262920 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ~>
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: 0.12.0
34
34
  type: :runtime
35
35
  prerelease: false
36
- version_requirements: *70186041042820
36
+ version_requirements: *70252009262920
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bundler
39
- requirement: &70186041042140 !ruby/object:Gem::Requirement
39
+ requirement: &70252009262340 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ~>
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: 1.0.0
45
45
  type: :development
46
46
  prerelease: false
47
- version_requirements: *70186041042140
47
+ version_requirements: *70252009262340
48
48
  description: Cassandra ActiveModel
49
49
  email: gems@gotime.com
50
50
  executables: []