chicagowarehouse 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -14,7 +14,7 @@ require 'rake'
14
14
  require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  gem.name = "chicagowarehouse"
17
- gem.version = "0.3.1"
17
+ gem.version = "0.3.2"
18
18
  gem.summary = "Ruby Data Warehousing"
19
19
  gem.description = "Simple Data Warehouse toolkit for ruby"
20
20
  gem.author = "Roland Swingler"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{chicagowarehouse}
8
- s.version = "0.3.1"
8
+ s.version = "0.3.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = [%q{Roland Swingler}]
12
- s.date = %q{2012-10-22}
12
+ s.date = %q{2012-10-29}
13
13
  s.description = %q{Simple Data Warehouse toolkit for ruby}
14
14
  s.email = %q{roland.swingler@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -38,6 +38,9 @@ module Chicago
38
38
  # The table used to generate/store dimension keys.
39
39
  attr_reader :key_table_name
40
40
 
41
+ # Records representing missing or not applicable dimension values.
42
+ attr_reader :null_records
43
+
41
44
  # Creates a new Dimension, named +name+.
42
45
  #
43
46
  # @param name the name of the dimension
@@ -33,6 +33,17 @@ module Chicago
33
33
  @key_name.qualify(table)
34
34
  end
35
35
 
36
+ # Returns the first null record id for this dimension, or 0 if
37
+ # the dimension has no null records defined.
38
+ def default_value
39
+ record = @dimension.null_records.first
40
+ if record && record[:id]
41
+ record[:id]
42
+ else
43
+ super
44
+ end
45
+ end
46
+
36
47
  # @private
37
48
  def kind_of?(klass)
38
49
  klass == Chicago::Schema::Dimension || super
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Chicago::Schema::DimensionReference do
4
4
  before :each do
5
- @dimension = Chicago::Schema::Dimension.new(:bar)
5
+ @dimension = Chicago::Schema::Dimension.new(:bar, :null_records => [{:id => 1}])
6
6
  end
7
7
 
8
8
  it "returns columns from the dimension" do
@@ -80,6 +80,10 @@ describe Chicago::Schema::DimensionReference do
80
80
  it "can override the key selected as the reference" do
81
81
  described_class.new(:foo, @dimension, :key_name => :baz_dimension_id).key_name.should ==:baz_dimension_id
82
82
  end
83
+
84
+ it "uses the first null record id as the default value" do
85
+ described_class.new(:foo, @dimension).default_value.should == 1
86
+ end
83
87
 
84
88
  it "is visitable" do
85
89
  visitor = mock(:visitor)
@@ -78,6 +78,11 @@ describe Chicago::Schema::Dimension do
78
78
  end.to raise_error(Chicago::UnsafeNullRecordError)
79
79
  end
80
80
 
81
+ it "has null records" do
82
+ described_class.new(:user).null_records.should be_empty
83
+ described_class.new(:user, :null_records => [{:id => 1}]).null_records.should == [{:id => 1}]
84
+ end
85
+
81
86
  it "can define a natural key" do
82
87
  described_class.new(:user, :natural_key => [:foo, :bar]).
83
88
  natural_key.should == [:foo, :bar]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chicagowarehouse
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 1
10
- version: 0.3.1
9
+ - 2
10
+ version: 0.3.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Roland Swingler
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-10-22 00:00:00 Z
18
+ date: 2012-10-29 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  requirement: &id001 !ruby/object:Gem::Requirement