mongoid_oslc 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -21,8 +21,7 @@ Or install it yourself as:
21
21
  Add initializer with your configuration.
22
22
 
23
23
  Mongoid::Oslc.configure do |config|
24
- config.default_namespace = :rtc
25
- config.fields_mapping = {'dcterms:title' => 'title', 'dcterms:description' => 'description'}
24
+ config.default_namespaces = [:rtc]
26
25
  end
27
26
 
28
27
  Include Mongoid::Oslc module to your document
@@ -31,8 +30,11 @@ Include Mongoid::Oslc module to your document
31
30
  include Mongoid::Document
32
31
  include Mongoid::Oslc
33
32
 
34
- field :title, type: String
35
- field :description, type: String
33
+ domain 'oslc_cm'
34
+ describe 'http://open-services.net/ns/cm#ChangeRequest'
35
+
36
+ oslc_field :title, type: String, mapping: 'dcterms:title'
37
+ oslc_field :description, type: String, mapping: 'dcterms:description'
36
38
 
37
39
  end
38
40
 
@@ -43,6 +45,28 @@ Include Mongoid::Oslc module to your document
43
45
  class: Article,
44
46
  embedded: false>
45
47
 
48
+ Mongoid::Oslc.resources.mapping
49
+ => {
50
+ "dcterms:title"=>{
51
+ :name=>:title,
52
+ :value_type=>"http://www.w3.org/2001/XMLSchema#string",
53
+ :read_only=>false,
54
+ :occurs=>"http://open-services.net/ns/core#Zero-or-one",
55
+ :allowed_values=>[],
56
+ :embedded=>false,
57
+ :range=>[]
58
+ },
59
+ "dcterms:description"=>{
60
+ :name=>:description,
61
+ :value_type=>"http://www.w3.org/2001/XMLSchema#string",
62
+ :read_only=>false,
63
+ :occurs=>"http://open-services.net/ns/core#Zero-or-one",
64
+ :allowed_values=>[],
65
+ :embedded=>false,
66
+ :range=>[]
67
+ }
68
+ }
69
+
46
70
  ## Contributing
47
71
 
48
72
  1. Fork it
@@ -107,19 +107,11 @@ module Mongoid
107
107
 
108
108
  class Condition < GrammarNode
109
109
  def to_mongo_query
110
- field = field_for(elements[0].text_value)
110
+ field = Mongoid::Oslc.resources.field_name(elements[0].text_value)
111
111
  value = elements[2].to_mongo_query
112
112
  operator_with_value = elements[1].to_mongo_query_with_value(value)
113
113
  { field => operator_with_value }
114
114
  end
115
-
116
- private
117
-
118
- def field_for(oslc_field)
119
- field = Mongoid::Oslc.resources.mapping[oslc_field].try(:fetch, :name)
120
- field ||= oslc_field.split(":")[1] if Mongoid::Oslc.config.default_namespaces.include?(oslc_field.split(":")[0])
121
- field
122
- end
123
115
  end
124
116
  end
125
117
  end
@@ -16,6 +16,14 @@ module Mongoid
16
16
  def mapping
17
17
  self.inject({}){|hash, klass| hash.merge(klass[1][:fields]) }
18
18
  end
19
+
20
+ def field_name(oslc_name)
21
+ if Mongoid::Oslc.config.default_namespaces.include?(oslc_name.split(":")[0].to_sym)
22
+ oslc_name.split(':')[1].to_sym
23
+ else
24
+ mapping[oslc_name][:name]
25
+ end
26
+ end
19
27
  end
20
28
  end
21
29
  end
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Oslc
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
5
5
  end
@@ -1,5 +1,19 @@
1
1
  require 'spec_helper'
2
2
 
3
+ class MongoDocument
4
+ include Mongoid::Document
5
+ include Mongoid::Oslc
6
+ include Mongoid::Timestamps
7
+
8
+ oslc_field :title, type: String, mapping: 'dcterms:title'
9
+ oslc_field :description, type: String, mapping: 'dcterms:description'
10
+ oslc_field :closed, type: Boolean,mapping: 'oslc_cm:closed'
11
+
12
+ register_oslc_field :created_at, mapping: 'dcterms:created', value_type: 'DateTime'
13
+ register_oslc_field :updated_at, mapping: 'dcterms:modified', value_type: 'DateTime'
14
+
15
+ end
16
+
3
17
  describe Mongoid::Oslc::Strategy do
4
18
  let(:parser) { Mongoid::Oslc::Strategy }
5
19
 
@@ -14,69 +28,58 @@ describe Mongoid::Oslc::Strategy do
14
28
  describe "#parse" do
15
29
 
16
30
  it "should parse simple query" do
17
- parse_query('dcterms:title="requirement"').should eql({"title"=>"requirement"})
31
+ parse_query('dcterms:title="requirement"').should eql({title: "requirement"})
18
32
  end
19
33
 
20
34
  it "should parse query with conjunction" do
21
35
  parse_query('dcterms:title="requirement" and dcterms:description="first"').should eql({
22
- "title"=>"requirement",
23
- "description"=>"first"
36
+ title: "requirement", description: "first"
24
37
  })
25
38
  end
26
39
 
27
40
  it "should parse query with other comparison_op" do
28
- parse_query('dcterms:created>"2010-04-01"').should eql({"created_at"=>{"$gt"=>"2010-04-01"}})
41
+ parse_query('dcterms:created>"2010-04-01"').should eql({created_at: {"$gt"=>"2010-04-01"}})
29
42
  end
30
43
 
31
44
  it "should parse query with not value" do
32
- parse_query('dcterms:title!="First"').should eql({"title"=> {"$ne" => "First"}})
45
+ parse_query('dcterms:title!="First"').should eql({title: {"$ne" => "First"}})
33
46
  end
34
47
 
35
48
  it "should parse query with nil value" do
36
- parse_query('dcterms:title=nil').should eql({"title"=> nil})
49
+ parse_query('dcterms:title=nil').should eql({title: nil})
37
50
  end
38
51
 
39
52
  it "should parse query with empty value" do
40
- parse_query('dcterms:title=empty').should eql({"title"=> []})
53
+ parse_query('dcterms:title=empty').should eql({title: []})
41
54
  end
42
55
 
43
56
  it "should parse query with decimal value" do
44
- parse_query('dcterms:title=+5').should eql({"title"=> 5.0})
57
+ parse_query('dcterms:title=+5').should eql({title: 5.0})
45
58
  end
46
59
 
47
60
  it "should parse query with decimal value" do
48
- parse_query('dcterms:title=-5.151').should eql({"title"=> -5.151})
61
+ parse_query('dcterms:title=-5.151').should eql({title: -5.151})
49
62
  end
50
63
 
51
64
  it "should parse query with boolean value" do
52
- parse_query('oslc_cm:closed=true').should eql({"closed"=> true})
65
+ parse_query('oslc_cm:closed=true').should eql({closed: true})
53
66
  end
54
67
 
55
68
  it "should parse query with boolean value" do
56
- parse_query('oslc_cm:closed=false').should eql({"closed"=> false})
69
+ parse_query('oslc_cm:closed=false').should eql({closed: false})
57
70
  end
58
71
 
59
72
  it "should parse query with one values" do
60
- parse_query('dcterms:title in ["First"]').should eql({"title"=>{"$in"=>["First"]}})
73
+ parse_query('dcterms:title in ["First"]').should eql({title: {"$in"=>["First"]}})
61
74
  end
62
75
 
63
76
  it "should parse query with array values" do
64
- parse_query('dcterms:title in ["First","Second"]').should eql({"title"=>{"$in"=>["First", "Second"]}})
77
+ parse_query('dcterms:title in ["First","Second"]').should eql({title: {"$in"=>["First", "Second"]}})
65
78
  end
66
79
 
67
80
  describe "custom fields" do
68
- describe "defined by fields_mapping" do
69
- before { Mongoid::Oslc.config.stub(:fields_mapping => {'rtc:frontColor' => 'front_color'}) }
70
-
71
- it "should parse query with custom namesapce" do
72
- parse_query('rtc:frontColor="Black"').should eql({"front_color"=> "Black"})
73
- end
74
- end
75
-
76
- describe "not defined by fields_mapping" do
77
- it "should parse query with custom namespace" do
78
- parse_query('rtc:color="Black"').should eql({"color"=> "Black"})
79
- end
81
+ it "should parse query with custom namespace" do
82
+ parse_query('rtc:color="Black"').should eql({color: "Black"})
80
83
  end
81
84
  end
82
85
  end
@@ -4,6 +4,8 @@ class MongoDocument
4
4
  include Mongoid::Document
5
5
  include Mongoid::Oslc
6
6
 
7
+ oslc_field :title, type: String, mapping: 'dcterms:title'
8
+
7
9
  end
8
10
 
9
11
  describe Mongoid::Oslc do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_oslc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -150,12 +150,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
150
  - - ! '>='
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ segments:
154
+ - 0
155
+ hash: 3353479294008417306
153
156
  required_rubygems_version: !ruby/object:Gem::Requirement
154
157
  none: false
155
158
  requirements:
156
159
  - - ! '>='
157
160
  - !ruby/object:Gem::Version
158
161
  version: '0'
162
+ segments:
163
+ - 0
164
+ hash: 3353479294008417306
159
165
  requirements: []
160
166
  rubyforge_project:
161
167
  rubygems_version: 1.8.24