millionaire 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md ADDED
@@ -0,0 +1,9 @@
1
+ ## installrtion
2
+
3
+ ```
4
+ gem 'millionaire'
5
+ ```
6
+
7
+ ## usage
8
+
9
+ [usage wiki page](https://github.com/hidenba/millionaire/wiki/Usage)
@@ -1,4 +1,5 @@
1
1
  # -*- coding: utf-8 -*-
2
+ require 'millionaire'
2
3
 
3
4
  class Millionaire::Column
4
5
  attr_accessor :name, :uniq
@@ -41,8 +41,8 @@ module Millionaire::Csv
41
41
  when :constraint; validates name, v
42
42
  when :index; index(name)
43
43
  when :uniq
44
- validates name, csv_uniqness: column.uniq
45
- index(column.uniq)
44
+ validates name, csv_uniqness: v
45
+ index(name)
46
46
  end
47
47
  end
48
48
  end
@@ -2,5 +2,6 @@ require 'active_model'
2
2
 
3
3
  class CsvUniqnessValidator < ActiveModel::EachValidator
4
4
  def validate_each(record, attribute, value)
5
+ record.errors[attribute] << 'already exists' if record.class.where(attribute => value).count > 1
5
6
  end
6
7
  end
@@ -1,3 +1,3 @@
1
1
  module Millionaire
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -0,0 +1,31 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+ require 'millionaire/csv'
4
+
5
+ describe Millionaire::Csv do
6
+
7
+ describe 'single column' do
8
+ class Single
9
+ include Millionaire::Csv
10
+ column :str, uniq: true
11
+ end
12
+
13
+ before do
14
+ Single.load StringIO.new csv_data.join("\n")
15
+ Single.first.valid?
16
+ end
17
+
18
+ subject { Single.first.errors }
19
+
20
+ context 'valid' do
21
+ let(:csv_data) { %w(str alice bob chris) }
22
+ it { should be_blank }
23
+ end
24
+
25
+ context 'invalid' do
26
+ let(:csv_data) { %w(str alice bob alice) }
27
+ it { should be_present }
28
+ its([:str]) { should == ['already exists'] }
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: millionaire
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-04 00:00:00.000000000Z
12
+ date: 2012-04-14 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70320448035420 !ruby/object:Gem::Requirement
16
+ requirement: &70191745691180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70320448035420
24
+ version_requirements: *70191745691180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: shoulda-matchers
27
- requirement: &70320448035000 !ruby/object:Gem::Requirement
27
+ requirement: &70191745690760 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70320448035000
35
+ version_requirements: *70191745690760
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: tapp
38
- requirement: &70320448034580 !ruby/object:Gem::Requirement
38
+ requirement: &70191745690340 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70320448034580
46
+ version_requirements: *70191745690340
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: activemodel
49
- requirement: &70320448034160 !ruby/object:Gem::Requirement
49
+ requirement: &70191745689920 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70320448034160
57
+ version_requirements: *70191745689920
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activesupport
60
- requirement: &70320448033740 !ruby/object:Gem::Requirement
60
+ requirement: &70191745689500 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70320448033740
68
+ version_requirements: *70191745689500
69
69
  description: You can do the CSV file by specifying the column to include a millionaire.
70
70
  email:
71
71
  - hide.nba@gmail.com
@@ -76,6 +76,7 @@ files:
76
76
  - .gitignore
77
77
  - Gemfile
78
78
  - LICENSE
79
+ - README.md
79
80
  - Rakefile
80
81
  - example/sample.csv
81
82
  - example/sample.rb
@@ -88,6 +89,7 @@ files:
88
89
  - millionaire.gemspec
89
90
  - spec/millionaire/column_spec.rb
90
91
  - spec/millionaire/csv_spec.rb
92
+ - spec/millionaire/validations/csv_uniqness_spec.rb
91
93
  - spec/millionaire/version_spec.rb
92
94
  - spec/spec_helper.rb
93
95
  homepage: ''
@@ -117,5 +119,6 @@ summary: Simple use the CSV
117
119
  test_files:
118
120
  - spec/millionaire/column_spec.rb
119
121
  - spec/millionaire/csv_spec.rb
122
+ - spec/millionaire/validations/csv_uniqness_spec.rb
120
123
  - spec/millionaire/version_spec.rb
121
124
  - spec/spec_helper.rb