ixtlan-configuration 0.2.0 → 0.2.1

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,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