smart_properties 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -1,9 +1,10 @@
1
1
  rvm:
2
- - 1.8.7
3
- - 1.9.2
4
2
  - 1.9.3
5
- - jruby
3
+ - jruby-19mode
6
4
  - rbx-19mode
5
+ - rbx-18mode
6
+
7
+ bundler_args: --without documentation
7
8
 
8
9
  branches:
9
10
  only:
data/Gemfile CHANGED
@@ -3,4 +3,12 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in smart_properties.gemspec
4
4
  gemspec
5
5
 
6
- gem "ruby_gntp"
6
+ if RUBY_PLATFORM =~ /darwin/
7
+ gem "ruby_gntp"
8
+ gem "rb-fsevent"
9
+ end
10
+
11
+ group :documentation do
12
+ gem "yard"
13
+ gem "redcarpet"
14
+ end
data/Rakefile CHANGED
@@ -2,9 +2,12 @@
2
2
  require 'bundler/setup'
3
3
  require 'bundler/gem_tasks'
4
4
 
5
- require 'yard'
6
- YARD::Rake::YardocTask.new do |t|
7
- t.files = ['lib/**/*.rb', 'README.md']
5
+ begin
6
+ require 'yard'
7
+ YARD::Rake::YardocTask.new do |t|
8
+ t.files = ['lib/**/*.rb', 'README.md']
9
+ end
10
+ rescue LoadError
8
11
  end
9
12
 
10
13
  require 'rspec/core/rake_task'
@@ -22,7 +22,7 @@
22
22
  #
23
23
  module SmartProperties
24
24
 
25
- VERSION = "1.2.0"
25
+ VERSION = "1.2.1"
26
26
 
27
27
  class Property
28
28
 
@@ -40,7 +40,7 @@ module SmartProperties
40
40
  @required = !!attrs.delete(:required)
41
41
 
42
42
  unless attrs.empty?
43
- raise ArgumentError, "SmartProperties do not support the following configuration options: #{attrs.keys.join(', ')}."
43
+ raise ArgumentError, "SmartProperties do not support the following configuration options: #{attrs.keys.map { |m| m.to_s }.sort.join(', ')}."
44
44
  end
45
45
  end
46
46
 
@@ -165,7 +165,7 @@ module SmartProperties
165
165
  end
166
166
 
167
167
  def to_hash
168
- Hash[members.zip(entries)]
168
+ Hash[each_pair.to_a]
169
169
  end
170
170
  end
171
171
  end
@@ -18,10 +18,8 @@ Gem::Specification.new do |gem|
18
18
  gem.name = "smart_properties"
19
19
  gem.require_paths = ["lib"]
20
20
  gem.version = SmartProperties::VERSION
21
-
21
+
22
22
  gem.add_development_dependency "rspec", "~> 2.0"
23
23
  gem.add_development_dependency "rake", "~> 0.8"
24
- gem.add_development_dependency "yard", "~> 0.8"
25
- gem.add_development_dependency "redcarpet", "~> 2.1"
26
24
  gem.add_development_dependency "guard-rspec", "~> 0.7"
27
25
  end
@@ -472,4 +472,75 @@ describe SmartProperties do
472
472
 
473
473
  end
474
474
 
475
+ context 'when used to build a class that is then subclassed and later extended at runtime' do
476
+
477
+ let!(:klass) do
478
+ Class.new.tap do |c|
479
+ c.send(:include, described_class)
480
+ c.send(:property, :title)
481
+ end
482
+ end
483
+
484
+ let!(:subklass) do
485
+ Class.new(klass).tap do |c|
486
+ c.send(:property, :body)
487
+ end
488
+ end
489
+
490
+ before do
491
+ klass.tap do |c|
492
+ c.send(:property, :subject)
493
+ end
494
+ end
495
+
496
+ context "the class's properties" do
497
+
498
+ subject { klass.properties }
499
+
500
+ it { should have_key(:title) }
501
+ it { should have_key(:subject) }
502
+
503
+ end
504
+
505
+ context "the subclass's properties" do
506
+
507
+ subject { subklass.properties }
508
+
509
+ it { should have_key(:title) }
510
+ it { should have_key(:body) }
511
+
512
+ pending '(dynamically defined property is not inherited)' do
513
+ it { should have_key(:subject) }
514
+ end
515
+
516
+ end
517
+
518
+ context 'the subclass' do
519
+
520
+ subject { subklass }
521
+
522
+ it "should be initializable using a block", :pending => true do
523
+ configuration_instructions = lambda do |s|
524
+ s.title = "Lorem Ipsum"
525
+ s.priority = :low
526
+ s.body = "Lorem ipsum dolor sit amet."
527
+ end
528
+
529
+ expect { subject.new(&configuration_instructions) }.to_not raise_error
530
+ end
531
+
532
+ it "should be initializable using a hash of attributes" do
533
+ attributes = {
534
+ :title => "Lorem Ipsum",
535
+ :priority => :low,
536
+ :body => "Lorem ipsum dolor sit amet."
537
+ }
538
+
539
+ expect { subject.new(attributes) }.to_not raise_error
540
+ end
541
+
542
+ end
543
+
544
+ end
545
+
475
546
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_properties
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -43,38 +43,6 @@ dependencies:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
45
  version: '0.8'
46
- - !ruby/object:Gem::Dependency
47
- name: yard
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: '0.8'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '0.8'
62
- - !ruby/object:Gem::Dependency
63
- name: redcarpet
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: '2.1'
70
- type: :development
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: '2.1'
78
46
  - !ruby/object:Gem::Dependency
79
47
  name: guard-rspec
80
48
  requirement: !ruby/object:Gem::Requirement
@@ -126,7 +94,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
94
  version: '0'
127
95
  segments:
128
96
  - 0
129
- hash: 2972832392315398871
97
+ hash: 183774927770524698
130
98
  required_rubygems_version: !ruby/object:Gem::Requirement
131
99
  none: false
132
100
  requirements:
@@ -135,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
103
  version: '0'
136
104
  segments:
137
105
  - 0
138
- hash: 2972832392315398871
106
+ hash: 183774927770524698
139
107
  requirements: []
140
108
  rubyforge_project:
141
109
  rubygems_version: 1.8.24