|
5 | 5 | module RubyEventStore
|
6 | 6 | module ActiveRecord
|
7 | 7 | ::RSpec.describe DatabaseAdapter do
|
8 |
| - specify "equality" do |
9 |
| - expect(DatabaseAdapter.new("postgresql")).to eql(DatabaseAdapter::PostgreSQL.new) |
10 |
| - expect(DatabaseAdapter.new("mysql2")).to eql(DatabaseAdapter::MySQL2.new) |
11 |
| - expect(DatabaseAdapter.new("sqlite")).to eql(DatabaseAdapter::SQLite.new) |
12 |
| - |
13 |
| - expect(DatabaseAdapter.new("postgresql")).to eq(DatabaseAdapter::PostgreSQL.new) |
14 |
| - expect(DatabaseAdapter.new("mysql2")).to eq(DatabaseAdapter::MySQL2.new) |
15 |
| - expect(DatabaseAdapter.new("sqlite")).to eq(DatabaseAdapter::SQLite.new) |
16 |
| - end |
17 |
| - |
18 |
| - specify "does not equal different type" do |
19 |
| - expect(DatabaseAdapter.new("postgresql")).not_to eql("postgresql") |
20 |
| - expect(DatabaseAdapter.new("mysql2")).not_to eql("mysql2") |
21 |
| - expect(DatabaseAdapter.new("sqlite")).not_to eql("sqlite") |
22 |
| - end |
23 |
| - |
24 |
| - specify "hash" do |
25 |
| - expect(DatabaseAdapter::PostgreSQL.new.hash).to eql(DatabaseAdapter::PostgreSQL.hash ^ DatabaseAdapter::BIG_NUM) |
26 |
| - expect(DatabaseAdapter::MySQL2.new.hash).to eql(DatabaseAdapter::MySQL2.hash ^ DatabaseAdapter::BIG_NUM) |
27 |
| - expect(DatabaseAdapter::SQLite.new.hash).to eql(DatabaseAdapter::SQLite.hash ^ DatabaseAdapter::BIG_NUM) |
28 |
| - |
29 |
| - expect(DatabaseAdapter::PostgreSQL.new.hash).to eql(DatabaseAdapter::PostgreSQL.new.hash) |
30 |
| - expect(DatabaseAdapter::MySQL2.new.hash).to eql(DatabaseAdapter::MySQL2.new.hash) |
31 |
| - expect(DatabaseAdapter::SQLite.new.hash).to eql(DatabaseAdapter::SQLite.new.hash) |
| 8 | + specify "from_string" do |
| 9 | + expect(DatabaseAdapter.from_string("PostgreSQL")).to eql(DatabaseAdapter::PostgreSQL.new) |
| 10 | + expect(DatabaseAdapter.from_string("PostGIS")).to eql(DatabaseAdapter::PostgreSQL.new) |
| 11 | + expect(DatabaseAdapter.from_string("MySQL2")).to eql(DatabaseAdapter::MySQL2.new) |
| 12 | + expect(DatabaseAdapter.from_string("SQLite")).to eql(DatabaseAdapter::SQLite.new) |
32 | 13 | end
|
33 | 14 |
|
34 |
| - specify "different adapters does not compare" do |
35 |
| - expect(DatabaseAdapter.new("postgresql")).not_to eql(DatabaseAdapter.new("mysql2")) |
| 15 | + specify "equality" do |
| 16 | + expect(DatabaseAdapter::PostgreSQL.new).not_to eql(DatabaseAdapter::MySQL2.new) |
| 17 | + expect(DatabaseAdapter::PostgreSQL.new).not_to eql("postgresql") |
36 | 18 | end
|
37 | 19 |
|
38 |
| - specify "postgis is postgresql flavor" do |
39 |
| - expect(DatabaseAdapter.new("postgis")).to eq(DatabaseAdapter.new("postgresql")) |
| 20 | + specify "adapter_name" do |
| 21 | + expect(DatabaseAdapter::PostgreSQL.new.adapter_name).to eql("postgresql") |
| 22 | + expect(DatabaseAdapter::MySQL2.new.adapter_name).to eql("mysql2") |
| 23 | + expect(DatabaseAdapter::SQLite.new.adapter_name).to eql("sqlite") |
40 | 24 | end
|
41 | 25 |
|
42 |
| - specify "raises exception on unsupported adapter" do |
43 |
| - expect { DatabaseAdapter.new("foo") }.to raise_error(UnsupportedAdapter, "Unsupported adapter: \"foo\"") |
| 26 | + specify "raise on unknown adapter" do |
| 27 | + expect { DatabaseAdapter.from_string("kakadudu") }.to raise_error( |
| 28 | + UnsupportedAdapter, |
| 29 | + "Unsupported adapter: \"kakadudu\"" |
| 30 | + ) |
| 31 | + expect { DatabaseAdapter.from_string(nil) }.to raise_error(UnsupportedAdapter, "Unsupported adapter: nil") |
| 32 | + expect { DatabaseAdapter.from_string(123) }.to raise_error(UnsupportedAdapter, "Unsupported adapter: 123") |
44 | 33 | end
|
45 | 34 |
|
46 |
| - specify "case insensitive adapter name" do |
47 |
| - expect(DatabaseAdapter.new("PostgreSQL")).to eq(DatabaseAdapter.new("postgresql")) |
| 35 | + specify "unsupported data type passed to #from_string" do |
| 36 | + expect { DatabaseAdapter.from_string("postgresql", "foo") }.to raise_error(InvalidDataTypeForAdapter) |
| 37 | + expect { DatabaseAdapter.from_string("mysql2", "foo") }.to raise_error(InvalidDataTypeForAdapter) |
| 38 | + expect { DatabaseAdapter.from_string("sqlite", "foo") }.to raise_error(InvalidDataTypeForAdapter) |
48 | 39 | end
|
49 | 40 |
|
50 |
| - specify "junk adapter name" do |
51 |
| - expect { DatabaseAdapter.new(nil) }.to raise_error(UnsupportedAdapter, "Unsupported adapter: nil") |
52 |
| - expect { DatabaseAdapter.new(123) }.to raise_error(UnsupportedAdapter, "Unsupported adapter: 123") |
| 41 | + specify "hash" do |
| 42 | + expect(DatabaseAdapter::PostgreSQL.new.hash).to eql(DatabaseAdapter.hash ^ "postgresql".hash) |
| 43 | + expect(DatabaseAdapter::MySQL2.new.hash).to eql(DatabaseAdapter.hash ^ "mysql2".hash) |
| 44 | + expect(DatabaseAdapter::SQLite.new.hash).to eql(DatabaseAdapter.hash ^ "sqlite".hash) |
53 | 45 | end
|
54 | 46 |
|
55 |
| - specify "unsupported data type" do |
56 |
| - expect { DatabaseAdapter.new("postgresql", "foo") }.to raise_error(InvalidDataTypeForAdapter) |
57 |
| - expect { DatabaseAdapter.new("mysql2", "foo") }.to raise_error(InvalidDataTypeForAdapter) |
58 |
| - expect { DatabaseAdapter.new("sqlite", "foo") }.to raise_error(InvalidDataTypeForAdapter) |
| 47 | + specify "child classes don't implement #from_string" do |
| 48 | + expect { DatabaseAdapter::PostgreSQL.from_string("postgresql") }.to raise_error(NoMethodError) |
| 49 | + expect { DatabaseAdapter::MySQL2.from_string("mysql2") }.to raise_error(NoMethodError) |
| 50 | + expect { DatabaseAdapter::SQLite.from_string("sqlite") }.to raise_error(NoMethodError) |
59 | 51 | end
|
60 | 52 |
|
61 | 53 | context "data type verification" do
|
@@ -85,8 +77,8 @@ module ActiveRecord
|
85 | 77 | end
|
86 | 78 |
|
87 | 79 | specify "PostgreSQL doesn't support bla" do
|
88 |
| - expect { DatabaseAdapter::PostgreSQL.new("bla") }.to raise_error InvalidDataTypeForAdapter, |
89 |
| - "PostgreSQL doesn't support \"bla\". Supported types are: binary, json, jsonb." |
| 80 | + expect { DatabaseAdapter::PostgreSQL.new("kakadudu") }.to raise_error InvalidDataTypeForAdapter, |
| 81 | + "PostgreSQL doesn't support \"kakadudu\". Supported types are: binary, json, jsonb." |
90 | 82 | end
|
91 | 83 |
|
92 | 84 | specify "sqlite supports binary" do
|
|
0 commit comments