superstore 1.2.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -13
- data/CHANGELOG.md +16 -0
- data/Gemfile +0 -5
- data/README.md +15 -33
- data/lib/superstore/adapters/jsonb_adapter.rb +245 -0
- data/lib/superstore/associations/association.rb +38 -0
- data/lib/superstore/associations/belongs_to.rb +35 -0
- data/lib/superstore/associations/builder/association.rb +38 -0
- data/lib/superstore/associations/builder/belongs_to.rb +7 -0
- data/lib/superstore/associations/builder/has_many.rb +7 -0
- data/lib/superstore/associations/builder/has_one.rb +7 -0
- data/lib/superstore/associations/has_many.rb +26 -0
- data/lib/superstore/associations/has_one.rb +24 -0
- data/lib/superstore/associations/reflection.rb +65 -0
- data/lib/superstore/associations.rb +72 -0
- data/lib/superstore/attribute_methods/definition.rb +5 -10
- data/lib/superstore/attribute_methods/dirty.rb +12 -2
- data/lib/superstore/attribute_methods/typecasting.rb +6 -12
- data/lib/superstore/base.rb +3 -4
- data/lib/superstore/connection.rb +3 -5
- data/lib/superstore/core.rb +0 -5
- data/lib/superstore/model.rb +32 -33
- data/lib/superstore/persistence.rb +4 -10
- data/lib/superstore/railtie.rb +2 -20
- data/lib/superstore/scope/batches.rb +17 -22
- data/lib/superstore/scope/finder_methods.rb +33 -35
- data/lib/superstore/scope/query_methods.rb +38 -44
- data/lib/superstore/scope.rb +24 -0
- data/lib/superstore/type.rb +3 -3
- data/lib/superstore/types/array_type.rb +2 -9
- data/lib/superstore/types/base_type.rb +4 -7
- data/lib/superstore/types/boolean_type.rb +2 -1
- data/lib/superstore/types/float_type.rb +6 -5
- data/lib/superstore/types/integer_type.rb +3 -3
- data/lib/superstore/types/json_type.rb +0 -21
- data/lib/superstore.rb +16 -5
- data/superstore.gemspec +2 -1
- data/test/support/jsonb.rb +8 -0
- data/test/support/{issue.rb → models.rb} +9 -0
- data/test/support/pg.rb +11 -15
- data/test/test_helper.rb +7 -6
- data/test/unit/{belongs_to_test.rb → associations/belongs_to_test.rb} +1 -10
- data/test/unit/associations/has_many_test.rb +13 -0
- data/test/unit/associations/has_one_test.rb +14 -0
- data/test/unit/{belongs_to → associations}/reflection_test.rb +2 -2
- data/test/unit/attribute_methods/definition_test.rb +6 -3
- data/test/unit/attribute_methods/dirty_test.rb +17 -14
- data/test/unit/attribute_methods/typecasting_test.rb +0 -14
- data/test/unit/base_test.rb +3 -3
- data/test/unit/connection_test.rb +0 -4
- data/test/unit/persistence_test.rb +4 -4
- data/test/unit/schema_test.rb +9 -17
- data/test/unit/scope/query_methods_test.rb +10 -1
- data/test/unit/types/array_type_test.rb +12 -10
- data/test/unit/types/base_type_test.rb +2 -10
- data/test/unit/types/boolean_type_test.rb +15 -13
- data/test/unit/types/date_type_test.rb +3 -3
- data/test/unit/types/float_type_test.rb +14 -7
- data/test/unit/types/integer_type_test.rb +11 -9
- data/test/unit/types/json_type_test.rb +0 -23
- data/test/unit/types/string_type_test.rb +6 -6
- data/test/unit/types/time_type_test.rb +7 -7
- metadata +35 -26
- data/CHANGELOG +0 -0
- data/lib/superstore/adapters/cassandra_adapter.rb +0 -203
- data/lib/superstore/adapters/hstore_adapter.rb +0 -170
- data/lib/superstore/belongs_to/association.rb +0 -65
- data/lib/superstore/belongs_to/builder.rb +0 -40
- data/lib/superstore/belongs_to/reflection.rb +0 -38
- data/lib/superstore/belongs_to.rb +0 -63
- data/lib/superstore/cassandra_schema/statements.rb +0 -52
- data/lib/superstore/cassandra_schema/tasks.rb +0 -47
- data/lib/superstore/cassandra_schema.rb +0 -9
- data/lib/superstore/log_subscriber.rb +0 -44
- data/lib/superstore/railties/controller_runtime.rb +0 -45
- data/lib/superstore/tasks/ks.rake +0 -59
- data/test/support/cassandra.rb +0 -46
- data/test/support/hstore.rb +0 -24
- data/test/support/user.rb +0 -2
- data/test/unit/cassandra_schema/statements_test.rb +0 -47
- data/test/unit/cassandra_schema/tasks_test.rb +0 -31
- data/test/unit/log_subscriber_test.rb +0 -26
- data/test/unit/railties/controller_runtime_test.rb +0 -48
@@ -1,15 +1,8 @@
|
|
1
1
|
module Superstore
|
2
2
|
module Types
|
3
3
|
class ArrayType < BaseType
|
4
|
-
def
|
5
|
-
|
6
|
-
array.to_a.to_json
|
7
|
-
end
|
8
|
-
|
9
|
-
def decode(str)
|
10
|
-
return nil if str.blank?
|
11
|
-
|
12
|
-
ActiveSupport::JSON.decode(str)
|
4
|
+
def decode(val)
|
5
|
+
val unless val.blank?
|
13
6
|
end
|
14
7
|
|
15
8
|
def typecast(value)
|
@@ -1,17 +1,14 @@
|
|
1
1
|
module Superstore
|
2
2
|
module Types
|
3
3
|
class BaseType
|
4
|
-
attr_accessor :options
|
5
|
-
def initialize(options = {})
|
4
|
+
attr_accessor :model, :options
|
5
|
+
def initialize(model, options = {})
|
6
|
+
@model = model
|
6
7
|
@options = options
|
7
8
|
end
|
8
9
|
|
9
|
-
def default
|
10
|
-
options[:default].duplicable? ? options[:default].dup : options[:default]
|
11
|
-
end
|
12
|
-
|
13
10
|
def encode(value)
|
14
|
-
value
|
11
|
+
value
|
15
12
|
end
|
16
13
|
|
17
14
|
def decode(str)
|
@@ -1,15 +1,16 @@
|
|
1
1
|
module Superstore
|
2
2
|
module Types
|
3
3
|
class FloatType < BaseType
|
4
|
-
REGEX = /\A[-+]?\d+(\.\d+)?\Z/
|
5
4
|
def encode(float)
|
6
|
-
|
7
|
-
float.to_s
|
5
|
+
float
|
8
6
|
end
|
9
7
|
|
10
8
|
def decode(str)
|
11
|
-
|
12
|
-
|
9
|
+
str.to_f unless str.empty?
|
10
|
+
end
|
11
|
+
|
12
|
+
def typecast(value)
|
13
|
+
value.to_f
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -4,12 +4,12 @@ module Superstore
|
|
4
4
|
REGEX = /\A[-+]?\d+\Z/
|
5
5
|
def encode(int)
|
6
6
|
raise ArgumentError.new("#{int.inspect} is not an Integer.") unless int.kind_of?(Integer)
|
7
|
-
|
7
|
+
|
8
|
+
int
|
8
9
|
end
|
9
10
|
|
10
11
|
def decode(str)
|
11
|
-
|
12
|
-
str.to_i
|
12
|
+
str.to_i unless str.empty?
|
13
13
|
end
|
14
14
|
|
15
15
|
def typecast(value)
|
@@ -1,27 +1,6 @@
|
|
1
1
|
module Superstore
|
2
2
|
module Types
|
3
3
|
class JsonType < BaseType
|
4
|
-
def encode(data)
|
5
|
-
ActiveSupport::JSON.encode(data)
|
6
|
-
end
|
7
|
-
|
8
|
-
def decode(str)
|
9
|
-
ActiveSupport::JSON.decode(str)
|
10
|
-
end
|
11
|
-
|
12
|
-
def typecast(data)
|
13
|
-
return data if ActiveSupport.parse_json_times
|
14
|
-
|
15
|
-
if data.acts_like?(:time) || data.acts_like?(:date)
|
16
|
-
data.as_json
|
17
|
-
elsif data.is_a?(Array)
|
18
|
-
data.map { |d| typecast(d) }
|
19
|
-
elsif data.is_a?(Hash)
|
20
|
-
data.each_with_object({}) { |(key, value), hash| hash[key] = typecast(value) }
|
21
|
-
else
|
22
|
-
data
|
23
|
-
end
|
24
|
-
end
|
25
4
|
end
|
26
5
|
end
|
27
6
|
end
|
data/lib/superstore.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'active_support/all'
|
2
2
|
require 'active_model'
|
3
3
|
require 'global_id/identification'
|
4
|
+
require 'oj'
|
4
5
|
require 'superstore/errors'
|
5
6
|
|
6
7
|
module Superstore
|
@@ -8,7 +9,7 @@ module Superstore
|
|
8
9
|
|
9
10
|
autoload :AttributeMethods
|
10
11
|
autoload :Base
|
11
|
-
autoload :
|
12
|
+
autoload :Associations
|
12
13
|
autoload :Caching
|
13
14
|
autoload :Callbacks
|
14
15
|
autoload :Connection
|
@@ -21,7 +22,6 @@ module Superstore
|
|
21
22
|
autoload :CassandraSchema
|
22
23
|
autoload :Scope
|
23
24
|
autoload :Scoping
|
24
|
-
autoload :Serialization
|
25
25
|
autoload :Timestamps
|
26
26
|
autoload :Type
|
27
27
|
autoload :Validations
|
@@ -41,16 +41,27 @@ module Superstore
|
|
41
41
|
extend ActiveSupport::Autoload
|
42
42
|
|
43
43
|
autoload :AbstractAdapter
|
44
|
+
autoload :JsonbAdapter
|
44
45
|
autoload :CassandraAdapter
|
45
|
-
autoload :HstoreAdapter
|
46
46
|
end
|
47
47
|
|
48
|
-
module
|
48
|
+
module Associations
|
49
49
|
extend ActiveSupport::Autoload
|
50
50
|
|
51
51
|
autoload :Association
|
52
|
-
autoload :Builder
|
53
52
|
autoload :Reflection
|
53
|
+
autoload :BelongsTo
|
54
|
+
autoload :HasMany
|
55
|
+
autoload :HasOne
|
56
|
+
|
57
|
+
module Builder
|
58
|
+
extend ActiveSupport::Autoload
|
59
|
+
|
60
|
+
autoload :Association
|
61
|
+
autoload :BelongsTo
|
62
|
+
autoload :HasMany
|
63
|
+
autoload :HasOne
|
64
|
+
end
|
54
65
|
end
|
55
66
|
|
56
67
|
module Types
|
data/superstore.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'superstore'
|
5
|
-
s.version = '
|
5
|
+
s.version = '2.0.0'
|
6
6
|
s.description = 'ActiveModel for many attributes'
|
7
7
|
s.summary = 'Cassandra ActiveModel'
|
8
8
|
s.authors = ["Michael Koziarski", "gotime"]
|
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.add_runtime_dependency('activemodel', '>= 3.0')
|
21
21
|
s.add_runtime_dependency('globalid')
|
22
|
+
s.add_runtime_dependency('oj')
|
22
23
|
|
23
24
|
s.add_development_dependency('bundler')
|
24
25
|
end
|
@@ -1,10 +1,19 @@
|
|
1
|
+
class User < ActiveRecord::Base
|
2
|
+
end
|
3
|
+
|
4
|
+
class Label < ActiveRecord::Base
|
5
|
+
end
|
6
|
+
|
1
7
|
class Issue < Superstore::Base
|
2
8
|
string :description
|
3
9
|
string :title
|
4
10
|
|
5
11
|
before_create { self.description ||= 'funny' }
|
6
12
|
|
13
|
+
has_many :labels
|
14
|
+
|
7
15
|
def self.for_key key
|
8
16
|
where_ids(key)
|
9
17
|
end
|
10
18
|
end
|
19
|
+
|
data/test/support/pg.rb
CHANGED
@@ -7,9 +7,7 @@ class PGInitializer
|
|
7
7
|
'encoding' => 'unicode',
|
8
8
|
'database' => 'superstore_test',
|
9
9
|
'pool' => 5,
|
10
|
-
'host' => 'localhost'
|
11
|
-
'password' => 'postgres',
|
12
|
-
'username' => 'postgres'
|
10
|
+
'host' => 'localhost'
|
13
11
|
}
|
14
12
|
|
15
13
|
ActiveRecord::Base.configurations = { test: config }
|
@@ -18,9 +16,17 @@ class PGInitializer
|
|
18
16
|
ActiveRecord::Tasks::DatabaseTasks.create config
|
19
17
|
ActiveRecord::Base.establish_connection config
|
20
18
|
|
19
|
+
create_labels_table
|
21
20
|
create_users_table
|
22
21
|
end
|
23
22
|
|
23
|
+
def self.create_labels_table
|
24
|
+
ActiveRecord::Migration.create_table :labels do |t|
|
25
|
+
t.string :issue_id, null: false
|
26
|
+
t.string :name, null: false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
24
30
|
def self.create_users_table
|
25
31
|
ActiveRecord::Migration.create_table :users do |t|
|
26
32
|
t.string :special_id, null: false
|
@@ -29,19 +35,9 @@ class PGInitializer
|
|
29
35
|
end
|
30
36
|
|
31
37
|
def self.table_names
|
32
|
-
%w(users)
|
38
|
+
%w(labels users)
|
33
39
|
end
|
34
40
|
end
|
35
41
|
|
36
42
|
PGInitializer.initialize!
|
37
|
-
ActiveRecord::Migration.verbose = false
|
38
|
-
|
39
|
-
module ActiveSupport
|
40
|
-
class TestCase
|
41
|
-
teardown do
|
42
|
-
PGInitializer.table_names.each do |table_name|
|
43
|
-
ActiveRecord::Base.connection.execute "TRUNCATE #{table_name}"
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
43
|
+
ActiveRecord::Migration.verbose = false
|
data/test/test_helper.rb
CHANGED
@@ -3,14 +3,15 @@ Bundler.require(:default, :test)
|
|
3
3
|
|
4
4
|
I18n.config.enforce_available_locales = false
|
5
5
|
|
6
|
+
require 'active_record'
|
6
7
|
require 'rails/test_help'
|
7
8
|
require 'mocha/setup'
|
8
9
|
|
10
|
+
ActiveSupport::TestCase.test_order = :random
|
11
|
+
|
9
12
|
require 'support/pg'
|
10
|
-
|
11
|
-
|
12
|
-
require 'support/issue'
|
13
|
-
require 'support/user'
|
13
|
+
require 'support/jsonb'
|
14
|
+
require 'support/models'
|
14
15
|
|
15
16
|
def MiniTest.filter_backtrace(bt)
|
16
17
|
bt
|
@@ -35,9 +36,9 @@ module Superstore
|
|
35
36
|
|
36
37
|
module Types
|
37
38
|
class TestCase < Superstore::TestCase
|
38
|
-
attr_accessor :
|
39
|
+
attr_accessor :type
|
39
40
|
setup do
|
40
|
-
@
|
41
|
+
@type = self.class.name.sub(/Test$/, '').constantize.new(Issue)
|
41
42
|
end
|
42
43
|
end
|
43
44
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class Superstore::
|
3
|
+
class Superstore::Associations::BelongsTest < Superstore::TestCase
|
4
4
|
class TestObject < Issue
|
5
5
|
string :issue_id
|
6
6
|
belongs_to :issue
|
@@ -70,15 +70,6 @@ class Superstore::BelongsToTest < Superstore::TestCase
|
|
70
70
|
assert_equal user, record.user
|
71
71
|
end
|
72
72
|
|
73
|
-
test 'belongs_to with primary_key raises an error for non-ActiveRecord' do
|
74
|
-
issue = Issue.create title: 'title'
|
75
|
-
|
76
|
-
record = TestObject.new
|
77
|
-
record.title_issue_id = issue.title
|
78
|
-
assert_raises(ArgumentError) { record.title_issue }
|
79
|
-
assert_raises(ArgumentError) { record.title_issue = issue }
|
80
|
-
end
|
81
|
-
|
82
73
|
test 'belongs_to with polymorphic' do
|
83
74
|
issue = Issue.create
|
84
75
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Superstore::Associations::HasManyTest < Superstore::TestCase
|
4
|
+
class TestObject < Issue
|
5
|
+
end
|
6
|
+
|
7
|
+
test 'has_many' do
|
8
|
+
issue = TestObject.create!
|
9
|
+
label = Label.create! name: 'important', issue_id: issue.id
|
10
|
+
|
11
|
+
assert_equal [label], issue.labels
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class Superstore::Associations::HasOneTest < Superstore::TestCase
|
4
|
+
class TestObject < Issue
|
5
|
+
has_one :favorite_label, class_name: 'Label', foreign_key: 'issue_id'
|
6
|
+
end
|
7
|
+
|
8
|
+
test 'has_many' do
|
9
|
+
issue = TestObject.create!
|
10
|
+
label = Label.create! name: 'important', issue_id: issue.id
|
11
|
+
|
12
|
+
assert_equal label, issue.favorite_label
|
13
|
+
end
|
14
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
-
class Superstore::
|
3
|
+
class Superstore::Associations::ReflectionTest < Superstore::TestCase
|
4
4
|
class ::Status < Superstore::Base; end
|
5
5
|
class ::Job < Superstore::Base
|
6
6
|
belongs_to :status
|
7
7
|
end
|
8
8
|
|
9
9
|
test 'class_name' do
|
10
|
-
assert_equal 'Status', Job.new.
|
10
|
+
assert_equal 'Status', Job.new.association_reflections[:status].class_name
|
11
11
|
end
|
12
12
|
end
|
@@ -2,12 +2,15 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class Superstore::AttributeMethods::DefinitionTest < Superstore::TestCase
|
4
4
|
class TestType < Superstore::Types::BaseType
|
5
|
+
def typecast(v)
|
6
|
+
"#{v}-foo"
|
7
|
+
end
|
5
8
|
end
|
6
9
|
|
7
|
-
test '
|
8
|
-
definition = Superstore::AttributeMethods::Definition.new(:foo, TestType, {
|
10
|
+
test 'initialize' do
|
11
|
+
definition = Superstore::AttributeMethods::Definition.new(Issue, :foo, TestType, {})
|
9
12
|
|
10
13
|
assert_equal 'foo', definition.name
|
11
|
-
assert_kind_of TestType, definition.
|
14
|
+
assert_kind_of TestType, definition.type
|
12
15
|
end
|
13
16
|
end
|
@@ -51,20 +51,6 @@ class Superstore::AttributeMethods::DirtyTest < Superstore::TestCase
|
|
51
51
|
assert record.changed?
|
52
52
|
end
|
53
53
|
|
54
|
-
test 'typecast json with times' do
|
55
|
-
record = temp_object do
|
56
|
-
json :stuff
|
57
|
-
end.create(stuff: {'time' => Time.new(2004, 12, 24, 6, 42, 21)})
|
58
|
-
|
59
|
-
record.reload
|
60
|
-
|
61
|
-
record.stuff = {'time' => Time.new(2004, 12, 24, 6, 42, 21)}
|
62
|
-
assert !record.changed?
|
63
|
-
|
64
|
-
record.stuff = {'time' => Time.new(2004, 12, 24, 6, 42, 22)}
|
65
|
-
assert record.changed?
|
66
|
-
end
|
67
|
-
|
68
54
|
test 'unapplied_changes' do
|
69
55
|
record = temp_object do
|
70
56
|
float :price
|
@@ -94,4 +80,21 @@ class Superstore::AttributeMethods::DirtyTest < Superstore::TestCase
|
|
94
80
|
assert_equal expected, record.changes
|
95
81
|
end
|
96
82
|
end
|
83
|
+
|
84
|
+
test 'dirty and restore to original value' do
|
85
|
+
object = temp_object do
|
86
|
+
string :name
|
87
|
+
end
|
88
|
+
|
89
|
+
record = object.create(name: 'foo')
|
90
|
+
|
91
|
+
assert_equal({}, record.changes)
|
92
|
+
|
93
|
+
record.name = 'bar'
|
94
|
+
expected = {'name'=>[nil, 'foo']}
|
95
|
+
assert_equal({'name' => ['foo', 'bar']}, record.changes)
|
96
|
+
|
97
|
+
record.name = 'foo'
|
98
|
+
assert_equal({}, record.changes)
|
99
|
+
end
|
97
100
|
end
|
@@ -1,16 +1,9 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::AttributeMethods::TypecastingTest < Superstore::TestCase
|
4
|
-
class CustomType
|
5
|
-
end
|
6
|
-
|
7
|
-
class CustomCoder < Superstore::Types::BaseType
|
8
|
-
end
|
9
|
-
|
10
4
|
class TestIssue < Superstore::Base
|
11
5
|
self.table_name = 'Issues'
|
12
6
|
|
13
|
-
attribute :custom_column, type: CustomType, coder: CustomCoder
|
14
7
|
boolean :enabled
|
15
8
|
float :rating
|
16
9
|
integer :price
|
@@ -28,13 +21,6 @@ class Superstore::AttributeMethods::TypecastingTest < Superstore::TestCase
|
|
28
21
|
assert_nothing_raised { TestChildIssue.new.description }
|
29
22
|
end
|
30
23
|
|
31
|
-
test 'custom attribute definer' do
|
32
|
-
model_attribute = TestIssue.attribute_definitions['custom_column']
|
33
|
-
|
34
|
-
assert_kind_of CustomCoder, model_attribute.coder
|
35
|
-
assert_equal 'custom_column', model_attribute.name
|
36
|
-
end
|
37
|
-
|
38
24
|
test 'typecast_attribute' do
|
39
25
|
assert_equal 1, TestIssue.typecast_attribute('price', 1)
|
40
26
|
assert_equal 1, TestIssue.typecast_attribute(:price, 1)
|
data/test/unit/base_test.rb
CHANGED
@@ -13,8 +13,8 @@ class Superstore::BaseTest < Superstore::TestCase
|
|
13
13
|
assert_equal Son, Grandson.base_class
|
14
14
|
end
|
15
15
|
|
16
|
-
test '
|
17
|
-
assert_equal '
|
18
|
-
assert_equal '
|
16
|
+
test 'table_name' do
|
17
|
+
assert_equal 'superstore_base_test_sons', Son.table_name
|
18
|
+
assert_equal 'superstore_base_test_sons', Grandson.table_name
|
19
19
|
end
|
20
20
|
end
|
@@ -176,7 +176,7 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
176
176
|
assert_equal %w{'a' 'b'}, klass.__send__(:quote_columns, %w{a b})
|
177
177
|
end
|
178
178
|
|
179
|
-
test '
|
179
|
+
test 'delete' do
|
180
180
|
klass = temp_object do
|
181
181
|
string :name
|
182
182
|
end
|
@@ -187,14 +187,14 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
187
187
|
id = record.id
|
188
188
|
assert_equal id, klass.find(id).id
|
189
189
|
|
190
|
-
klass.
|
190
|
+
klass.delete(id)
|
191
191
|
|
192
192
|
assert_raise Superstore::RecordNotFound do
|
193
193
|
klass.find(id)
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
197
|
-
test '
|
197
|
+
test 'delete multiple' do
|
198
198
|
klass = temp_object do
|
199
199
|
string :name
|
200
200
|
end
|
@@ -205,7 +205,7 @@ class Superstore::PersistenceTest < Superstore::TestCase
|
|
205
205
|
ids << record.id
|
206
206
|
end
|
207
207
|
|
208
|
-
klass.
|
208
|
+
klass.delete(ids)
|
209
209
|
|
210
210
|
assert_equal [], klass.find(ids)
|
211
211
|
end
|
data/test/unit/schema_test.rb
CHANGED
@@ -2,22 +2,14 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class Superstore::SchemaTest < Superstore::TestCase
|
4
4
|
# SELECT columnfamily_name FROM System.schema_columnfamilies WHERE keyspace_name='myKeyspaceName';
|
5
|
-
test "
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
Superstore::Schema.drop_table 'TestRecords'
|
15
|
-
|
16
|
-
begin
|
17
|
-
Superstore::Schema.drop_table 'TestRecords'
|
18
|
-
assert false, 'TestRecords should not exist'
|
19
|
-
rescue Exception => e
|
20
|
-
end
|
21
|
-
end
|
5
|
+
# test "create_table" do
|
6
|
+
# Superstore::Schema.create_table 'TestRecords'
|
7
|
+
#
|
8
|
+
# begin
|
9
|
+
# Superstore::Schema.create_table 'TestRecords'
|
10
|
+
# assert false, 'TestRecords should already exist'
|
11
|
+
# rescue Exception => e
|
12
|
+
# end
|
13
|
+
# end
|
22
14
|
|
23
15
|
end
|
@@ -3,7 +3,6 @@ require 'test_helper'
|
|
3
3
|
class Superstore::Scope::QueryMethodsTest < Superstore::TestCase
|
4
4
|
test "select" do
|
5
5
|
original_issue = Issue.create title: 'foo', description: 'bar'
|
6
|
-
|
7
6
|
found_issue = Issue.select(:title).find(original_issue.id)
|
8
7
|
|
9
8
|
assert_equal 'foo', found_issue.title
|
@@ -11,6 +10,16 @@ class Superstore::Scope::QueryMethodsTest < Superstore::TestCase
|
|
11
10
|
assert_nil found_issue.description
|
12
11
|
end
|
13
12
|
|
13
|
+
test "where" do
|
14
|
+
foo_issue = Issue.create title: 'foo'
|
15
|
+
bar_issue = Issue.create title: 'bar'
|
16
|
+
nil_issue = Issue.create title: nil
|
17
|
+
|
18
|
+
assert_equal [foo_issue], Issue.where(title: 'foo').to_a
|
19
|
+
assert_equal [foo_issue, bar_issue], Issue.where(title: ['foo', 'bar']).to_a
|
20
|
+
assert_equal [nil_issue], Issue.where(title: nil).to_a
|
21
|
+
end
|
22
|
+
|
14
23
|
test "select with block" do
|
15
24
|
foo_issue = Issue.create title: 'foo'
|
16
25
|
bar_issue = Issue.create title: 'bar'
|
@@ -1,21 +1,23 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::Types::ArrayTypeTest < Superstore::Types::TestCase
|
4
|
-
|
5
|
-
|
4
|
+
if Superstore::Base.adapter.class.name == 'Superstore::Adapters::CassandraAdapter'
|
5
|
+
test 'encode' do
|
6
|
+
assert_equal ['1', '2'].to_json, type.encode(['1', '2'])
|
6
7
|
|
7
|
-
|
8
|
-
|
8
|
+
assert_raise ArgumentError do
|
9
|
+
type.encode('wtf')
|
10
|
+
end
|
9
11
|
end
|
10
|
-
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
test 'decode' do
|
14
|
+
assert_equal ['1', '2'], type.decode(['1', '2'].to_json)
|
15
|
+
assert_equal nil, type.decode(nil)
|
16
|
+
assert_equal nil, type.decode('')
|
17
|
+
end
|
16
18
|
end
|
17
19
|
|
18
20
|
test 'typecast' do
|
19
|
-
assert_equal ['x', 'y'],
|
21
|
+
assert_equal ['x', 'y'], type.typecast(['x', 'y'].to_set)
|
20
22
|
end
|
21
23
|
end
|
@@ -1,19 +1,11 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class Superstore::Types::BaseTypeTest < Superstore::Types::TestCase
|
4
|
-
test 'default' do
|
5
|
-
assert_equal nil, coder.default
|
6
|
-
assert_equal '5', Superstore::Types::BaseType.new(default: '5').default
|
7
|
-
assert_equal 5.object_id, Superstore::Types::BaseType.new(default: 5).default.object_id
|
8
|
-
end
|
9
|
-
|
10
4
|
test 'encode' do
|
11
|
-
assert_equal '
|
12
|
-
assert_equal '', coder.encode(nil)
|
13
|
-
assert_equal '1', coder.encode('1')
|
5
|
+
assert_equal 'x', type.encode('x')
|
14
6
|
end
|
15
7
|
|
16
8
|
test 'decode' do
|
17
|
-
assert_equal 'abc',
|
9
|
+
assert_equal 'abc', type.decode('abc')
|
18
10
|
end
|
19
11
|
end
|