unidata 0.0.10 → 0.0.11

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 CHANGED
@@ -1,4 +1,4 @@
1
- UniData ORM [![Build Status](https://secure.travis-ci.org/jisraelsen/unidata.png?branch=master)](http://travis-ci.org/jisraelsen/unidata) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/jisraelsen/unidata)
1
+ UniData ORM [![Build Status](https://secure.travis-ci.org/jisraelsen/unidata.png?branch=master)](http://travis-ci.org/jisraelsen/unidata) [![Coverage Status](https://coveralls.io/repos/jisraelsen/unidata/badge.png?branch=master)](https://coveralls.io/r/jisraelsen/unidata) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/jisraelsen/unidata)
2
2
  ===========
3
3
 
4
4
  A simple ORM for Rocket's UniData database.
@@ -32,43 +32,33 @@ module Unidata
32
32
  end
33
33
 
34
34
  def exists?(filename, record_id)
35
- exists = false
36
-
37
35
  open_file(filename) do |file|
38
36
  begin
39
- file.read_field(record_id, 0)
40
- exists = true
37
+ !!file.read_field(record_id, 0)
41
38
  rescue Unidata::UniFileException
39
+ false
42
40
  end
43
41
  end
44
-
45
- exists
46
42
  end
47
43
 
48
44
  def read(filename, record_id)
49
- record = nil
50
-
51
45
  open_file(filename) do |file|
52
46
  begin
53
- record = Unidata::UniDynArray.new(file.read(record_id))
47
+ Unidata::UniDynArray.new(file.read(record_id))
54
48
  rescue Unidata::UniFileException
49
+ nil
55
50
  end
56
51
  end
57
-
58
- record
59
52
  end
60
53
 
61
54
  def read_field(filename, record_id, field)
62
- value = nil
63
-
64
55
  open_file(filename) do |file|
65
56
  begin
66
- value = file.read_field(record_id, field).to_s
57
+ file.read_field(record_id, field).to_s
67
58
  rescue Unidata::UniFileException
59
+ nil
68
60
  end
69
61
  end
70
-
71
- value
72
62
  end
73
63
 
74
64
  def write(filename, record_id, record)
@@ -3,17 +3,20 @@ module Unidata
3
3
  class << self
4
4
  attr_accessor :filename
5
5
 
6
+ def inherited(subclass)
7
+ subclass.instance_variable_set(:@fields, {})
8
+ end
9
+
6
10
  def connection
7
11
  Unidata.connection
8
12
  end
9
13
 
10
14
  def fields
11
- unless @fields
12
- @fields = {}
13
- field(0, :id)
15
+ if self < Unidata::Model
16
+ superclass.fields.merge @fields
17
+ else
18
+ @fields
14
19
  end
15
-
16
- @fields
17
20
  end
18
21
 
19
22
  def field?(name)
@@ -21,7 +24,7 @@ module Unidata
21
24
  end
22
25
 
23
26
  def field(index, name, type=String, options={})
24
- fields[name.to_sym] = Field.new(index, name, type, options)
27
+ @fields[name.to_sym] = Field.new(index, name, type, options)
25
28
  define_attribute_accessor(name)
26
29
  define_attribute_finder(name)
27
30
  end
@@ -108,6 +111,9 @@ module Unidata
108
111
  end
109
112
  end
110
113
 
114
+ @fields = {}
115
+ field 0, :id
116
+
111
117
  def initialize(attributes={})
112
118
  initialize_attributes
113
119
 
@@ -1,3 +1,3 @@
1
1
  module Unidata
2
- VERSION = "0.0.10"
2
+ VERSION = "0.0.11"
3
3
  end
@@ -1,15 +1,18 @@
1
- if ENV['COVERAGE']
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter '/spec/'
5
- end
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+
4
+ MultiJson.engine = :json_pure
5
+
6
+ SimpleCov.formatter = Coveralls::SimpleCov::Formatter
7
+ SimpleCov.start do
8
+ add_filter '/spec/'
6
9
  end
7
10
 
8
11
  require 'rspec'
9
12
  require 'time'
10
13
  require 'unidata'
11
14
 
12
- def package_local_constructor klass,*values
15
+ def package_local_constructor klass, *values
13
16
  constructors = klass.java_class.declared_constructors
14
17
  constructors.each do |c|
15
18
  c.accessible = true
@@ -17,6 +20,8 @@ def package_local_constructor klass,*values
17
20
  return c.new_instance(*values).to_java
18
21
  rescue TypeError
19
22
  false
23
+ rescue ArgumentError
24
+ false
20
25
  end
21
26
  end
22
27
  raise TypeError,"found no matching constructor for " + klass.to_s + "(" + value.class + ")"
@@ -140,7 +140,7 @@ describe Unidata::Connection do
140
140
 
141
141
  describe '#read' do
142
142
  before(:each) do
143
- @file = double('UniFile', :close => nil, :read => nil)
143
+ @file = double('UniFile', :close => nil, :read => '')
144
144
  @session.stub(:open).and_return(@file)
145
145
 
146
146
  connection.open
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'set'
2
3
 
3
4
  describe Unidata::Model do
4
5
  subject { Unidata::Model }
@@ -15,6 +16,32 @@ describe Unidata::Model do
15
16
  field 5, :status, String, :default => 'active'
16
17
  end
17
18
 
19
+ class SubclassRecord < Record
20
+ self.filename = 'TESTTEMP'
21
+
22
+ field 6, :another_field
23
+ end
24
+
25
+ def create_field(index, name, type=String, options={})
26
+ Unidata::Field.new(index, name, type, options)
27
+ end
28
+
29
+ describe 'subclasses' do
30
+ it "should have the fields of it\'s superclass and it's own fields" do
31
+ SubclassRecord.fields.keys.to_set.should == [
32
+ :id,
33
+ :name,
34
+ :age,
35
+ :birth_date,
36
+ :employer,
37
+ :job_title,
38
+ :salary,
39
+ :status,
40
+ :another_field,
41
+ ].to_set
42
+ end
43
+ end
44
+
18
45
  describe '.connection' do
19
46
  it 'returns the Unidata connection' do
20
47
  Unidata.stub('connection').and_return(double('connection'))
metadata CHANGED
@@ -2,57 +2,79 @@
2
2
  name: unidata
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.10
5
+ version: 0.0.11
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeremy Israelsen
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-28 00:00:00.000000000Z
12
+ date: 2013-08-07 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jruby-openssl
16
- version_requirements: &3630 !ruby/object:Gem::Requirement
16
+ version_requirements: &4664 !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ! '>='
19
19
  - !ruby/object:Gem::Version
20
20
  version: '0'
21
21
  none: false
22
- requirement: *3630
22
+ requirement: *4664
23
+ prerelease: false
24
+ type: :development
25
+ - !ruby/object:Gem::Dependency
26
+ name: json_pure
27
+ version_requirements: &4682 !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ none: false
33
+ requirement: *4682
23
34
  prerelease: false
24
35
  type: :development
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: rake
27
- version_requirements: &3648 !ruby/object:Gem::Requirement
38
+ version_requirements: &4698 !ruby/object:Gem::Requirement
28
39
  requirements:
29
40
  - - ! '>='
30
41
  - !ruby/object:Gem::Version
31
42
  version: '0'
32
43
  none: false
33
- requirement: *3648
44
+ requirement: *4698
34
45
  prerelease: false
35
46
  type: :development
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rspec
38
- version_requirements: &3664 !ruby/object:Gem::Requirement
49
+ version_requirements: &4714 !ruby/object:Gem::Requirement
39
50
  requirements:
40
51
  - - ~>
41
52
  - !ruby/object:Gem::Version
42
53
  version: '2.10'
43
54
  none: false
44
- requirement: *3664
55
+ requirement: *4714
45
56
  prerelease: false
46
57
  type: :development
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: simplecov
49
- version_requirements: &3680 !ruby/object:Gem::Requirement
60
+ version_requirements: &4730 !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ~>
63
+ - !ruby/object:Gem::Version
64
+ version: '0.7'
65
+ none: false
66
+ requirement: *4730
67
+ prerelease: false
68
+ type: :development
69
+ - !ruby/object:Gem::Dependency
70
+ name: coveralls
71
+ version_requirements: &4746 !ruby/object:Gem::Requirement
50
72
  requirements:
51
73
  - - ~>
52
74
  - !ruby/object:Gem::Version
53
75
  version: '0.6'
54
76
  none: false
55
- requirement: *3680
77
+ requirement: *4746
56
78
  prerelease: false
57
79
  type: :development
58
80
  description: A simple ORM for Rocket's UniData database