ixtlan-configuration 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # ixtlan-configuration #
2
2
 
3
3
  * [![Build Status](https://secure.travis-ci.org/mkristian/ixtlan-configuration.png)](http://travis-ci.org/mkristian/ixtlan-configuration)
4
- * [![Dependency Status](https://gemnasium.com/mkristian/ixtlan-ixtlan-configuration.png)](https://gemnasium.com/mkristian/ixtlan-ixtlan-configuration)
5
- * [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/mkristian/ixtlan-ixtlan-configuration)
4
+ * [![Dependency Status](https://gemnasium.com/mkristian/ixtlan-configuration.png)](https://gemnasium.com/mkristian/ixtlan-configuration)
5
+ * [![Code Climate](https://codeclimate.com/github/mkristian/ixtlan-configuration.png)](https://codeclimate.com/github/mkristian/ixtlan-configuration)
6
6
 
7
- persistent configuration for the xtlan series. with cuba for composition.
7
+ persistent configuration for the xtlan series. includes a cuba 'controller' for composition.
8
8
 
9
9
  TODO usage
10
10
  ==========
@@ -33,10 +33,10 @@ module Ixtlan
33
33
  end
34
34
 
35
35
  on put do
36
- updated_at = keeps( Configuration )[ 'updated_at' ]
37
- config = Configuration.optimistic_get!( updated_at,
36
+ req_filter( Configuration )
37
+ config = Configuration.optimistic_get!( req_filter.updated_at,
38
38
  Configuration.instance.id )
39
- config.attributes = params
39
+ config.attributes = req_filter.params
40
40
  config.modified_by = current_user if config.dirty?
41
41
  config.save
42
42
  write config
@@ -25,7 +25,10 @@ module Ixtlan
25
25
 
26
26
  add_context( :single,
27
27
  :keep => [ :updated_at ],
28
- :except => [:id, :created_at, :updated_at, :modified_by_id] )
28
+ :except => [ :id,
29
+ :created_at,
30
+ :updated_at,
31
+ :modified_by_id ] )
29
32
 
30
33
  end
31
34
  end
@@ -22,12 +22,53 @@ require 'ixtlan/babel/serializer'
22
22
 
23
23
  class ConfigurationSerializer < Ixtlan::Babel::Serializer
24
24
 
25
- add_context(:single,
26
- :except => [:id, :modified_by_id],
27
- :include => {
28
- :modified_by => {
29
- :only => [:id, :login, :name]
25
+ METHODS = [ :base_url, :created_at, :updated_at ]
26
+
27
+ if defined? Ixtlan::Session
28
+ METHODS << :idle_session_timeout
29
+ end
30
+
31
+ if defined? Ixtlan::Audit
32
+ METHODS << :audit_keep_logs
33
+ end
34
+
35
+ if defined? Ixtlan::Errors
36
+ METHODS << :errors_keep_dumps
37
+ METHODS << :errors_base_path
38
+ METHODS << :errors_from_email
39
+ METHODS << :errors_to_emails
40
+ end
41
+
42
+ if defined? Ixtlan::Remote
43
+ METHODS << :users_url
44
+ METHODS << :users_token
45
+ end
46
+
47
+ if defined? Rack::Session::EncryptedCookie
48
+ METHODS << :encrypted_cookie_secret
49
+ end
50
+
51
+ if defined? Ixtlan::Gettext
52
+ METHODS << :flash_url
53
+ METHODS << :translations_url
54
+ METHODS << :translations_token
55
+ end
56
+
57
+ if defined?( Ixtlan::UserManagement::User ) && Ixtlan::UserManagement::User.respond_to?( :properties )
58
+ add_context(:single,
59
+ :only => [],
60
+ :methods => METHODS,
61
+ :include => {
62
+ :modified_by => {
63
+ :only => [],
64
+ :methods => [:id, :login, :name]
65
+ }
30
66
  }
31
- }
32
- )
67
+ )
68
+ else
69
+ add_context(:single,
70
+ :only => [],
71
+ :methods => METHODS
72
+ )
73
+ end
33
74
  end
@@ -0,0 +1,64 @@
1
+ # -*- coding: utf-8 -*-
2
+ require File.expand_path( File.join( File.dirname( __FILE__ ),
3
+ 'spec_helper.rb' ) )
4
+
5
+ require 'ixtlan/configuration/resource'
6
+ require 'ixtlan/configuration/serializer'
7
+ require 'ixtlan/configuration/filter'
8
+ require 'ixtlan/babel/factory'
9
+
10
+ describe Ixtlan::Configuration::Configuration do
11
+
12
+ subject do
13
+ c = Ixtlan::Configuration::Configuration.instance
14
+ c.modified_by = root
15
+ c.save
16
+ c
17
+ end
18
+
19
+ let( :root ) do
20
+ unless u = Ixtlan::UserManagement::User.first
21
+ u = Ixtlan::UserManagement::User.create( :login => 'root',
22
+ :name => 'Root',
23
+ :updated_at => DateTime.now )
24
+ end
25
+ u
26
+ end
27
+
28
+ let( :factory ) { Ixtlan::Babel::Factory.new }
29
+
30
+ it 'serializes' do
31
+ expected = {
32
+ "base_url"=>"http://localhost:3000",
33
+ "audit_keep_logs"=>30,
34
+ "errors_keep_dumps"=>30,
35
+ "errors_base_path"=>"/errors",
36
+ "errors_from_email"=>"no-reply@example.com",
37
+ "errors_to_emails"=>"developer@example.com",
38
+ "modified_by"=>{
39
+ "id"=>1,
40
+ "login"=>"root",
41
+ "name"=>"Root"
42
+ }
43
+ }
44
+ result = factory.new_serializer( subject ).to_hash
45
+ result.delete("created_at").wont_be_nil
46
+ result.delete("updated_at").wont_be_nil
47
+ result.must_equal expected
48
+ end
49
+
50
+ it 'filters' do
51
+ expected = {
52
+ "base_url"=>"http://localhost:3000",
53
+ "audit_keep_logs"=>30,
54
+ "errors_keep_dumps"=>30,
55
+ "errors_base_path"=>"/errors",
56
+ "errors_from_email"=>"no-reply@example.com",
57
+ "errors_to_emails"=>"developer@example.com"
58
+ }
59
+ json = factory.new_serializer( subject ).to_hash
60
+ result = factory.new_filter( subject.class ).filter_it( json ).to_hash
61
+ result[ :params ].must_equal expected
62
+ result[ 'updated_at' ].sub( /\..*$/, '').must_equal subject.updated_at.to_s.sub( /\+.*$/, '')
63
+ end
64
+ end
@@ -0,0 +1,44 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+ require '4foodiez/partner/partner_store_serializer'
4
+
5
+ describe ForFoodiez::RestPartnerStoresSerializer do
6
+
7
+ subject { Ixtlan::Babel::Factory.new.new_serializer( stores ) }
8
+
9
+ let( :stores ){ ForFoodiez::RestPartnerStores.new( :stores => [ store ], :offset => 10, :total_count => 123 ) }
10
+
11
+ let( :store ){ Factory.partner_store }
12
+
13
+ it 'should serialize' do
14
+ expected = {
15
+ "offset"=>10,
16
+ "total_count"=>123,
17
+ "stores"=>[{
18
+ "id"=>store.id,
19
+ "longitude"=>-71.18972,
20
+ "latitude"=>41.52639,
21
+ # "name"=>"mine",
22
+ "phone"=>"(91) 123-23",
23
+ "fax"=>"[0]33 123/323",
24
+ "url"=>"http://valentin.de",
25
+ "mail"=>"mail@valentin.de",
26
+ "address"=>"Valentin Museum, München",
27
+ "description"=>"schöne eis-skulptur auf suppen-teller - leider geschmolzen",
28
+ # "updated_at"=>"2013-02-17T14:58:41.55607318380+0530",
29
+ "partner_id"=> store.partner.id,
30
+ "modified_by"=>{
31
+ "id"=>1,
32
+ "login"=>"system",
33
+ "name"=>"System"
34
+ }
35
+ }]
36
+ }
37
+ result = subject.to_hash
38
+ Docu.list_response( 'partner_stores', subject )
39
+ result['stores'][0].delete("updated_at").wont_be_nil
40
+ result['stores'][0].delete("name").wont_be_nil
41
+ result.must_equal expected
42
+ end
43
+
44
+ end
@@ -0,0 +1,35 @@
1
+ # single spec setup
2
+ $LOAD_PATH.unshift File.join( File.dirname( File.expand_path( File.dirname( __FILE__ ) ) ),
3
+ 'lib' )
4
+ require 'minitest/autorun'
5
+
6
+ require 'dm-timestamps'
7
+ require 'dm-migrations'
8
+ require 'dm-validations'
9
+ #DataMapper::Logger.new(STDOUT, :debug)
10
+
11
+ #require 'ixtlan/session'
12
+ require 'ixtlan/user_management/user_resource'
13
+ require 'ixtlan/audit/resource'
14
+ require 'ixtlan/errors/resource'
15
+ require 'ixtlan/remote'
16
+ require 'ixtlan/gettext'
17
+
18
+ require 'ixtlan/configuration/resource'
19
+
20
+ DataMapper.setup :default, 'sqlite3::memory:'
21
+ DataMapper.finalize
22
+
23
+ # single entry in pool for the memory sqlite3
24
+ # otherwise sqlite3 sometimes does not find certain tables :(
25
+ class DataObjects::Pooling::Pool
26
+
27
+ alias :initialize_old :initialize
28
+
29
+ def initialize(max_size, resource, args)
30
+ initialize_old( 1, resource, args)
31
+ end
32
+ end
33
+
34
+ DataObjects::Pooling.pools
35
+ DataMapper.auto_migrate!
@@ -0,0 +1,26 @@
1
+ # single spec setup
2
+ $LOAD_PATH.unshift File.join( File.dirname( File.expand_path( File.dirname( __FILE__ ) ) ),
3
+ 'lib' )
4
+ require 'minitest/autorun'
5
+
6
+ require 'cuba'
7
+ ENV["MT_NO_EXPECTATIONS"] = "true"
8
+
9
+ require 'mustard'
10
+
11
+ module Mustard
12
+ class Failure < MiniTest::Assertion
13
+ def initialize( *args )
14
+ super
15
+ begin
16
+ raise
17
+ rescue => e
18
+ @result = e.backtrace.detect { |l| nil == ( l =~ /lib\/mustard/ || l =~ /spec\/spec_helper.rb/ ) }
19
+ end
20
+ end
21
+
22
+ def backtrace
23
+ [@result]
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,29 +1,205 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ixtlan-configuration
3
3
  version: !ruby/object:Gem::Version
4
+ version: 0.2.1
4
5
  prerelease:
5
- version: 0.2.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Christian Meier
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-11 00:00:00.000000000 Z
12
+ date: 2013-10-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: slf4r
15
+ name: cuba-api
16
16
  version_requirements: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 0.4.2
20
+ version: '0.5'
21
21
  none: false
22
22
  requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 0.4.2
26
+ version: '0.5'
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ~>
35
+ - !ruby/object:Gem::Version
36
+ version: '10.1'
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '10.1'
43
+ none: false
44
+ prerelease: false
45
+ type: :development
46
+ - !ruby/object:Gem::Dependency
47
+ name: minitest
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ~>
51
+ - !ruby/object:Gem::Version
52
+ version: '5.0'
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ~>
57
+ - !ruby/object:Gem::Version
58
+ version: '5.0'
59
+ none: false
60
+ prerelease: false
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ name: ixtlan-audit
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ none: false
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ none: false
76
+ prerelease: false
77
+ type: :development
78
+ - !ruby/object:Gem::Dependency
79
+ name: ixtlan-error-handler
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ none: false
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ none: false
92
+ prerelease: false
93
+ type: :development
94
+ - !ruby/object:Gem::Dependency
95
+ name: ixtlan-remote
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '0'
101
+ none: false
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - '>='
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
107
+ none: false
108
+ prerelease: false
109
+ type: :development
110
+ - !ruby/object:Gem::Dependency
111
+ name: ixtlan-gettext
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ none: false
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ none: false
124
+ prerelease: false
125
+ type: :development
126
+ - !ruby/object:Gem::Dependency
127
+ name: ixtlan-user-management
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ none: false
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ none: false
140
+ prerelease: false
141
+ type: :development
142
+ - !ruby/object:Gem::Dependency
143
+ name: dm-timestamps
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ~>
147
+ - !ruby/object:Gem::Version
148
+ version: '1.2'
149
+ none: false
150
+ requirement: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ version: '1.2'
155
+ none: false
156
+ prerelease: false
157
+ type: :development
158
+ - !ruby/object:Gem::Dependency
159
+ name: dm-migrations
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ~>
163
+ - !ruby/object:Gem::Version
164
+ version: '1.2'
165
+ none: false
166
+ requirement: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ~>
169
+ - !ruby/object:Gem::Version
170
+ version: '1.2'
171
+ none: false
172
+ prerelease: false
173
+ type: :development
174
+ - !ruby/object:Gem::Dependency
175
+ name: dm-validations
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: '1.2'
181
+ none: false
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ~>
185
+ - !ruby/object:Gem::Version
186
+ version: '1.2'
187
+ none: false
188
+ prerelease: false
189
+ type: :development
190
+ - !ruby/object:Gem::Dependency
191
+ name: dm-sqlite-adapter
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ~>
195
+ - !ruby/object:Gem::Version
196
+ version: '1.2'
197
+ none: false
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - ~>
201
+ - !ruby/object:Gem::Version
202
+ version: '1.2'
27
203
  none: false
28
204
  prerelease: false
29
205
  type: :development
@@ -35,40 +211,42 @@ extensions: []
35
211
  extra_rdoc_files: []
36
212
  files:
37
213
  - README.md
38
- - lib/ixtlan-configuration.rb~
39
214
  - lib/ixtlan-configuration.rb
40
- - lib/ixtlan/core.rb~
41
- - lib/ixtlan/configuration.rb~
215
+ - lib/ixtlan-configuration.rb~
42
216
  - lib/ixtlan/configuration.rb
43
- - lib/ixtlan/configuration/filter.rb~
217
+ - lib/ixtlan/configuration.rb~
218
+ - lib/ixtlan/core.rb~
44
219
  - lib/ixtlan/configuration/resource.rb
220
+ - lib/ixtlan/configuration/cuba.rb~
45
221
  - lib/ixtlan/configuration/resource.rb~
222
+ - lib/ixtlan/configuration/filter.rb~
223
+ - lib/ixtlan/configuration/filter.rb
46
224
  - lib/ixtlan/configuration/cuba.rb
47
225
  - lib/ixtlan/configuration/serializer.rb
48
- - lib/ixtlan/configuration/cuba.rb~
49
- - lib/ixtlan/configuration/filter.rb
226
+ - spec/configaration_serializer_spec.rb
227
+ - spec/configaration_serializer_spec.rb~
228
+ - spec/spec_helper.rb~
229
+ - spec/spec_helper.rb
50
230
  homepage: http://github.com/mkristian/ixtlan-configuration
51
231
  licenses:
52
232
  - MIT
53
233
  post_install_message:
54
234
  rdoc_options:
55
- - "--main"
235
+ - --main
56
236
  - README.md
57
237
  require_paths:
58
238
  - lib
59
239
  required_ruby_version: !ruby/object:Gem::Requirement
60
240
  requirements:
61
- - - ">="
241
+ - - '>='
62
242
  - !ruby/object:Gem::Version
63
- version: !binary |-
64
- MA==
243
+ version: '0'
65
244
  none: false
66
245
  required_rubygems_version: !ruby/object:Gem::Requirement
67
246
  requirements:
68
- - - ">="
247
+ - - '>='
69
248
  - !ruby/object:Gem::Version
70
- version: !binary |-
71
- MA==
249
+ version: '0'
72
250
  none: false
73
251
  requirements: []
74
252
  rubyforge_project:
@@ -76,4 +254,5 @@ rubygems_version: 1.8.24
76
254
  signing_key:
77
255
  specification_version: 3
78
256
  summary: configuration for other ixtlan-xyz wth serializer, input-filter and cuba definition
79
- test_files: []
257
+ test_files:
258
+ - spec/configaration_serializer_spec.rb