cassandra_migrations 0.0.1.pre7 → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,6 +15,10 @@ module CassandraMigrations
15
15
  def self.load_config
16
16
  begin
17
17
  self.config = YAML.load_file(Rails.root.join("config", "cassandra.yml"))[Rails.env]
18
+
19
+ if config.nil?
20
+ raise Errors::MissingConfigurationError, "No configuration for #{Rails.env} environment! Complete your config/cassandra.yml."
21
+ end
18
22
  rescue Errno::ENOENT
19
23
  raise Errors::MissingConfigurationError
20
24
  end
@@ -1,9 +1,19 @@
1
1
  # encoding: utf-8
2
2
 
3
+ require 'colorize'
4
+
3
5
  module CassandraMigrations
4
6
  module Errors
5
7
 
6
8
  class CassandraError < StandardError
9
+ def initialize(msg)
10
+ # Makes all exception messages red
11
+ if msg.frozen?
12
+ super(msg.dup.red)
13
+ else
14
+ super(msg.red)
15
+ end
16
+ end
7
17
  end
8
18
 
9
19
  class ClientNotStartedError < CassandraError
@@ -13,8 +23,8 @@ module CassandraMigrations
13
23
  end
14
24
 
15
25
  class MissingConfigurationError < CassandraError
16
- def initialize
17
- super("config/cassandra.yml is missing! Run 'prepare_for_cassandra .' in the rails root directory.")
26
+ def initialize(msg=nil)
27
+ super(msg || "config/cassandra.yml is missing! Run 'prepare_for_cassandra .' in the rails root directory.")
18
28
  end
19
29
  end
20
30
 
@@ -3,11 +3,6 @@ require 'spec_helper'
3
3
 
4
4
  describe CassandraMigrations::Cassandra do
5
5
 
6
- it "should initialize without client or config" do
7
- CassandraMigrations::Cassandra.client.should be_nil
8
- CassandraMigrations::Cassandra.config.should be_nil
9
- end
10
-
11
6
  before do
12
7
  Rails.stub(:root).and_return Pathname.new("spec/fixtures")
13
8
  Rails.stub(:env).and_return ActiveSupport::StringInquirer.new("development")
@@ -17,72 +12,90 @@ describe CassandraMigrations::Cassandra do
17
12
  CassandraMigrations::Cassandra.shutdown! if CassandraMigrations::Cassandra.client
18
13
  end
19
14
 
20
- describe ".start!" do
21
- it "should raise exception if config/cassandra.yaml is not found" do
22
- Rails.stub(:root).and_return Pathname.new("wrong_path")
23
-
24
- expect do
25
- CassandraMigrations::Cassandra.start!
26
- end.to raise_exception CassandraMigrations::Cassandra::Errors::MissingConfigurationError
27
- end
28
-
29
- it "should load config/cassandra.yaml environment specific part in self.config" do
30
- begin
31
- CassandraMigrations::Cassandra.start!
32
- rescue
33
- end
34
-
35
- CassandraMigrations::Cassandra.config.should == {
36
- 'host' => "127.0.0.1",
37
- 'port' => 9042,
38
- 'keyspace' => "cassandra_migrations_development",
39
- 'replication' => {
40
- 'class' => "SimpleStrategy",
41
- 'replication_factor' => 1
42
- }
43
- }
44
- end
45
-
46
- it "should use host and port configurations to create cassandra client" do
15
+ describe '.execute' do
16
+ it 'should connect to cassandra using host and port configured' do
47
17
  cql_client_mock = Cql::Client.new
48
- cql_client_mock.should_receive(:connect)
49
- cql_client_mock.stub(:use)
50
18
  Cql::Client.should_receive(:new).with(:host => '127.0.0.1', :port => 9042).and_return(cql_client_mock)
51
-
52
- CassandraMigrations::Cassandra.start!
19
+ cql_client_mock.should_receive(:connect)
20
+ cql_client_mock.should_receive(:execute).with('anything').and_return(nil)
21
+
22
+ CassandraMigrations::Cassandra.execute('anything').should be_nil
53
23
  end
54
24
 
55
- it "should raise exception if not able to connect to cassandra host" do
25
+ it 'raise exception if there is something wrong with the connection' do
56
26
  cql_client_mock = Cql::Client.new
57
- cql_client_mock.stub(:connect).and_raise Cql::Io::ConnectionError
58
- Cql::Client.stub(:new).and_return cql_client_mock
59
-
60
- expect do
61
- CassandraMigrations::Cassandra.start!
62
- end.to raise_exception CassandraMigrations::Cassandra::Errors::ConnectionError
27
+ Cql::Client.should_receive(:new).and_return(cql_client_mock)
28
+ cql_client_mock.should_receive(:connect).and_raise(Cql::Io::ConnectionError)
29
+
30
+ expect {
31
+ CassandraMigrations::Cassandra.execute('anything')
32
+ }.to raise_exception CassandraMigrations::Errors::ConnectionError
63
33
  end
64
34
 
65
- it "should automatically use configured keyspace" do
66
- CassandraMigrations::Cassandra.should_receive(:use).with('cassandra_migrations_development')
67
- CassandraMigrations::Cassandra.start!
35
+ it 'should return a QueryResult if the query returns something' do
36
+ CassandraMigrations::Cassandra.client = Cql::Client.new
37
+
38
+ result_mock = mock('result_mock')
39
+ CassandraMigrations::Cassandra.client.should_receive(:execute).with('anything').and_return(result_mock)
40
+
41
+ result = CassandraMigrations::Cassandra.execute('anything')
42
+ result.should_not be_nil
43
+ result.should be_a(CassandraMigrations::Cassandra::QueryResult)
68
44
  end
69
45
  end
70
46
 
71
47
  describe '.use' do
48
+ it 'should connect to cassandra using host and port configured' do
49
+ cql_client_mock = Cql::Client.new
50
+ Cql::Client.should_receive(:new).with(:host => '127.0.0.1', :port => 9042).and_return(cql_client_mock)
51
+ cql_client_mock.should_receive(:connect)
52
+ cql_client_mock.should_receive(:use).with('anything').and_return(nil)
53
+
54
+ CassandraMigrations::Cassandra.use('anything').should be_nil
55
+ end
56
+
72
57
  it "should raise exception if configured keyspace does not exist" do
73
- expect do
74
- CassandraMigrations::Cassandra.start!
75
- end.to raise_exception CassandraMigrations::Cassandra::Errors::UnexistingKeyspaceError
58
+ expect {
59
+ CassandraMigrations::Cassandra.use('anything')
60
+ }.to raise_exception CassandraMigrations::Errors::UnexistingKeyspaceError
76
61
  end
77
62
  end
78
63
 
79
- describe "query interface" do
80
- it "should respond to query methods" do
81
- CassandraMigrations::Cassandra.should respond_to :select
82
- CassandraMigrations::Cassandra.should respond_to :write
83
- CassandraMigrations::Cassandra.should respond_to :delete
84
- CassandraMigrations::Cassandra.should respond_to :truncate
85
- end
86
- end
64
+ # describe ".start!" do
65
+ # it "should use host and port configurations to create cassandra client" do
66
+ # cql_client_mock = Cql::Client.new
67
+ # cql_client_mock.should_receive(:connect)
68
+ # cql_client_mock.stub(:use)
69
+ # Cql::Client.should_receive(:new).with(:host => '127.0.0.1', :port => 9042).and_return(cql_client_mock)
70
+ #
71
+ # CassandraMigrations::Cassandra.start!
72
+ # end
73
+ #
74
+ # it "should raise exception if not able to connect to cassandra host" do
75
+ # cql_client_mock = Cql::Client.new
76
+ # cql_client_mock.stub(:connect).and_raise Cql::Io::ConnectionError
77
+ # Cql::Client.stub(:new).and_return cql_client_mock
78
+ #
79
+ # expect do
80
+ # CassandraMigrations::Cassandra.start!
81
+ # end.to raise_exception CassandraMigrations::Cassandra::Errors::ConnectionError
82
+ # end
83
+ #
84
+ # it "should automatically use configured keyspace" do
85
+ # CassandraMigrations::Cassandra.should_receive(:use).with('cassandra_migrations_development')
86
+ # CassandraMigrations::Cassandra.start!
87
+ # end
88
+ # end
89
+ #
90
+ #
91
+ #
92
+ # describe "query interface" do
93
+ # it "should respond to query methods" do
94
+ # CassandraMigrations::Cassandra.should respond_to :select
95
+ # CassandraMigrations::Cassandra.should respond_to :write
96
+ # CassandraMigrations::Cassandra.should respond_to :delete
97
+ # CassandraMigrations::Cassandra.should respond_to :truncate
98
+ # end
99
+ # end
87
100
 
88
101
  end
@@ -0,0 +1,36 @@
1
+ # encoding : utf-8
2
+ require 'spec_helper'
3
+
4
+ describe CassandraMigrations::Config do
5
+
6
+ before do
7
+ CassandraMigrations::Config.config = nil
8
+ end
9
+
10
+ it 'should fetch values in config for the right environment' do
11
+ Rails.stub(:root).and_return Pathname.new("spec/fixtures")
12
+ Rails.stub(:env).and_return ActiveSupport::StringInquirer.new("development")
13
+
14
+ CassandraMigrations::Config.keyspace.should == 'cassandra_migrations_development'
15
+ CassandraMigrations::Config.replication.should == {'class' => "SimpleStrategy", 'replication_factor' => 1 }
16
+ end
17
+
18
+ it 'should raise exception if there are no configs for environment' do
19
+ Rails.stub(:root).and_return Pathname.new("spec/fixtures")
20
+ Rails.stub(:env).and_return ActiveSupport::StringInquirer.new("fake_environment")
21
+
22
+ expect {
23
+ CassandraMigrations::Config.keyspace
24
+ }.to raise_exception CassandraMigrations::Errors::MissingConfigurationError
25
+ end
26
+
27
+ it 'should raise exception if there are no config file' do
28
+ Rails.stub(:root).and_return Pathname.new("spec/fake_path")
29
+ Rails.stub(:env).and_return ActiveSupport::StringInquirer.new("development")
30
+
31
+ expect {
32
+ CassandraMigrations::Config.keyspace
33
+ }.to raise_exception CassandraMigrations::Errors::MissingConfigurationError
34
+ end
35
+ end
36
+
@@ -6,8 +6,9 @@ describe CassandraMigrations do
6
6
  defined?(CassandraMigrations).should be_true
7
7
  defined?(CassandraMigrations::Railtie).should be_true
8
8
  defined?(CassandraMigrations::Cassandra).should be_true
9
- defined?(CassandraMigrations::Cassandra::Query).should be_true
10
- defined?(CassandraMigrations::Cassandra::Errors).should be_true
11
- defined?(CassandraMigrations::Cassandra::Migrator).should be_true
9
+ defined?(CassandraMigrations::Errors).should be_true
10
+ defined?(CassandraMigrations::Migration).should be_true
11
+ defined?(CassandraMigrations::Migrator).should be_true
12
+ defined?(CassandraMigrations::Config).should be_true
12
13
  end
13
14
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cassandra_migrations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre7
5
- prerelease: 6
4
+ version: 0.0.1
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Henrique Gubert
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-29 00:00:00.000000000 Z
12
+ date: 2013-06-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cql-rb
@@ -115,28 +115,29 @@ executables:
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
- - lib/cassandra_migrations.rb
119
- - lib/cassandra_migrations/config.rb
120
- - lib/cassandra_migrations/capistrano.rb
118
+ - lib/cassandra_migrations/cassandra/keyspace_operations.rb
121
119
  - lib/cassandra_migrations/cassandra/queries.rb
122
120
  - lib/cassandra_migrations/cassandra/query_result.rb
123
- - lib/cassandra_migrations/cassandra/keyspace_operations.rb
124
- - lib/cassandra_migrations/railtie/tasks.rake
125
- - lib/cassandra_migrations/railtie/generators/cassandra_migration/USAGE
126
- - lib/cassandra_migrations/railtie/generators/cassandra_migration/cassandra_migration_generator.rb
127
- - lib/cassandra_migrations/railtie/generators/cassandra_migration/templates/empty_migration.rb.erb
128
- - lib/cassandra_migrations/railtie/initializer.rb
121
+ - lib/cassandra_migrations/migration/table_operations.rb
122
+ - lib/cassandra_migrations/migration/table_definition.rb
123
+ - lib/cassandra_migrations/migration/column_operations.rb
129
124
  - lib/cassandra_migrations/migration.rb
130
- - lib/cassandra_migrations/migrator.rb
131
125
  - lib/cassandra_migrations/errors.rb
132
- - lib/cassandra_migrations/migration/column_operations.rb
133
- - lib/cassandra_migrations/migration/table_definition.rb
134
- - lib/cassandra_migrations/migration/table_operations.rb
135
- - lib/cassandra_migrations/cassandra.rb
136
126
  - lib/cassandra_migrations/railtie.rb
127
+ - lib/cassandra_migrations/config.rb
128
+ - lib/cassandra_migrations/migrator.rb
129
+ - lib/cassandra_migrations/cassandra.rb
130
+ - lib/cassandra_migrations/railtie/generators/cassandra_migration/cassandra_migration_generator.rb
131
+ - lib/cassandra_migrations/railtie/generators/cassandra_migration/templates/empty_migration.rb.erb
132
+ - lib/cassandra_migrations/railtie/generators/cassandra_migration/USAGE
133
+ - lib/cassandra_migrations/railtie/tasks.rake
134
+ - lib/cassandra_migrations/railtie/initializer.rb
135
+ - lib/cassandra_migrations/capistrano.rb
136
+ - lib/cassandra_migrations.rb
137
137
  - template/cassandra.yml
138
- - spec/cassandra_migrations/cassandra_spec.rb
139
138
  - spec/cassandra_migrations_spec.rb
139
+ - spec/cassandra_migrations/config_spec.rb
140
+ - spec/cassandra_migrations/cassandra_spec.rb
140
141
  - bin/prepare_for_cassandra
141
142
  homepage: https://github.com/hsgubert/cassandra_migrations
142
143
  licenses:
@@ -164,5 +165,6 @@ signing_key:
164
165
  specification_version: 3
165
166
  summary: Cassandra schema management for a multi-environment developer.
166
167
  test_files:
167
- - spec/cassandra_migrations/cassandra_spec.rb
168
168
  - spec/cassandra_migrations_spec.rb
169
+ - spec/cassandra_migrations/config_spec.rb
170
+ - spec/cassandra_migrations/cassandra_spec.rb