ixtlan 0.4.0.pre5 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +49 -0
- data/MIT-LICENSE +20 -0
- data/README.txt +86 -0
- data/Rakefile +59 -0
- data/lib/dm-serializer/to_xml.rb +10 -4
- data/lib/ixtlan/controllers/audits_controller.rb +6 -1
- data/lib/ixtlan/controllers/authentications_controller.rb +5 -1
- data/lib/ixtlan/controllers/domains_controller.rb +11 -7
- data/lib/ixtlan/controllers/groups_controller.rb +28 -7
- data/lib/ixtlan/controllers/locales_controller.rb +11 -7
- data/lib/ixtlan/controllers/search_query.rb +28 -12
- data/lib/ixtlan/controllers/users_controller.rb +1 -1
- data/lib/ixtlan/controllers/word_bundles_controller.rb +9 -3
- data/lib/ixtlan/guard.rb +17 -4
- data/lib/ixtlan/models/authentication.rb +8 -2
- data/lib/ixtlan/models/configuration.rb +14 -1
- data/lib/ixtlan/models/group.rb +14 -1
- data/lib/ixtlan/models/i18n_text.rb +6 -2
- data/lib/ixtlan/models/phrase.rb +11 -6
- data/lib/ixtlan/models/translation.rb +6 -2
- data/lib/ixtlan/models/user.rb +29 -2
- data/lib/ixtlan/modified_by.rb +1 -2
- data/lib/ixtlan/rails/error_handling.rb +1 -1
- data/lib/ixtlan/version.rb +1 -1
- data/lib/ixtlan/version.rb.errors +0 -0
- data/spec/authentication_spec.rb +16 -9
- data/spec/guard_spec.rb +8 -7
- data/spec/modified_by_spec.rb +9 -8
- data/spec/optimistic_persistence_spec.rb +2 -2
- data/spec/phrase_spec.rb +45 -49
- data/spec/session_timeout_spec.rb +1 -1
- data/spec/spec_helper.rb +66 -24
- data/spec/text_collection_spec.rb +23 -25
- data/spec/text_spec.rb +8 -8
- data/spec/unrestful_authentication_spec.rb +2 -2
- data/spec/user_logger_spec.rb +1 -0
- data/spec/user_spec.rb +5 -8
- metadata +37 -19
@@ -52,7 +52,20 @@ module Ixtlan
|
|
52
52
|
alias :to_x :to_xml_document
|
53
53
|
def to_xml_document(opts, doc = nil)
|
54
54
|
unless(opts[:methods] || opts[:exclude])
|
55
|
-
opts.merge!({
|
55
|
+
opts.merge!({
|
56
|
+
:skip_types => true,
|
57
|
+
:skip_empty_tags => true,
|
58
|
+
:methods => [:updated_by, :locales],
|
59
|
+
:updated_by => {
|
60
|
+
:methods => [],
|
61
|
+
:exclude => [:created_at, :updated_at, :hashed_password, :created_by_id, :updated_by_id, :language]
|
62
|
+
},
|
63
|
+
:locales => {
|
64
|
+
:methods => [],
|
65
|
+
:exclude => [:created_at]
|
66
|
+
},
|
67
|
+
:exclude => [:updated_by_id, :id]
|
68
|
+
})
|
56
69
|
end
|
57
70
|
to_x(opts, doc)
|
58
71
|
end
|
data/lib/ixtlan/models/group.rb
CHANGED
@@ -27,7 +27,20 @@ module Ixtlan
|
|
27
27
|
|
28
28
|
alias :to_x :to_xml_document
|
29
29
|
def to_xml_document(opts, doc = nil)
|
30
|
-
opts
|
30
|
+
unless(opts[:methods])
|
31
|
+
opts.merge!({
|
32
|
+
:skip_types => true,
|
33
|
+
:skip_empty_tags => true,
|
34
|
+
:methods => [:created_by],
|
35
|
+
:created_by => {
|
36
|
+
:methods => [],
|
37
|
+
:exclude => [:created_at, :updated_at, :hashed_password, :created_by_id, :updated_by_id, :language]
|
38
|
+
}
|
39
|
+
})
|
40
|
+
end
|
41
|
+
unless(opts[:exclude])
|
42
|
+
opts.merge!({:exclude => [:created_by_id]})
|
43
|
+
end
|
31
44
|
to_x(opts, doc)
|
32
45
|
end
|
33
46
|
end
|
@@ -3,6 +3,10 @@ module Ixtlan
|
|
3
3
|
module Models
|
4
4
|
module I18nText
|
5
5
|
|
6
|
+
unless const_defined? "TEXT_LOCALE"
|
7
|
+
TEXT_LOCALE = Object.full_const_get(Models::LOCALE)
|
8
|
+
end
|
9
|
+
|
6
10
|
def invariant
|
7
11
|
no_version = original_attributes[:version].nil? && attribute_get(:version).nil?
|
8
12
|
if no_version
|
@@ -38,9 +42,9 @@ module Ixtlan
|
|
38
42
|
size =
|
39
43
|
case locale.code.size
|
40
44
|
when 2
|
41
|
-
self.model.latest_approved(:code => code, :locale =>
|
45
|
+
self.model.latest_approved(:code => code, :locale => TEXT_LOCALE.default).size
|
42
46
|
when 5
|
43
|
-
self.model.latest_approved(:code => code, :locale =>
|
47
|
+
self.model.latest_approved(:code => code, :locale => TEXT_LOCALE.first(:code => locale.code[0,1])).size
|
44
48
|
else
|
45
49
|
1
|
46
50
|
end
|
data/lib/ixtlan/models/phrase.rb
CHANGED
@@ -8,6 +8,11 @@ module Ixtlan
|
|
8
8
|
"Phrase"
|
9
9
|
end
|
10
10
|
|
11
|
+
unless const_defined? "LOCALE"
|
12
|
+
LOCALE = Object.full_const_get(Models::LOCALE)
|
13
|
+
TEXT = Object.full_const_get(Models::TEXT)
|
14
|
+
end
|
15
|
+
|
11
16
|
property :id, Serial
|
12
17
|
|
13
18
|
property :code, String, :required => true, :length => 64
|
@@ -22,9 +27,9 @@ module Ixtlan
|
|
22
27
|
|
23
28
|
belongs_to :locale, :model => Models::LOCALE
|
24
29
|
|
25
|
-
belongs_to :default_translation, :model =>
|
30
|
+
belongs_to :default_translation, :model => Translation, :required => false
|
26
31
|
|
27
|
-
belongs_to :parent_translation, :model =>
|
32
|
+
belongs_to :parent_translation, :model => Translation, :required => false
|
28
33
|
|
29
34
|
alias :to_x :to_xml_document
|
30
35
|
def to_xml_document(opts = {}, doc = nil)
|
@@ -35,12 +40,12 @@ module Ixtlan
|
|
35
40
|
def self.all(args = {})
|
36
41
|
phrases = ::DataMapper::Collection.new(::DataMapper::Query.new(self.repository, Ixtlan::Models::Phrase), [])
|
37
42
|
map = {}
|
38
|
-
locale =
|
39
|
-
|
43
|
+
locale = args[:locale] || LOCALE.default
|
44
|
+
TEXT.not_approved(args.dup).each do |text|
|
40
45
|
phrase = Phrase.new(:code => text.code, :text => text.text, :current_text => text.text, :locale => locale, :updated_at => text.updated_at, :updated_by => text.updated_by)
|
41
46
|
map[phrase.code] = phrase
|
42
47
|
end
|
43
|
-
|
48
|
+
TEXT.latest_approved(args.dup).each do |text|
|
44
49
|
if (phrase = map[text.code])
|
45
50
|
phrase.current_text = text.text
|
46
51
|
else
|
@@ -51,7 +56,7 @@ module Ixtlan
|
|
51
56
|
case locale.code.size
|
52
57
|
when 2
|
53
58
|
params = args.dup
|
54
|
-
params[:locale] =
|
59
|
+
params[:locale] = LOCALE.default
|
55
60
|
Translation.map_for(params).each do |code, trans|
|
56
61
|
ph = map[code]
|
57
62
|
if(ph.nil?)
|
@@ -18,12 +18,16 @@ module Ixtlan
|
|
18
18
|
|
19
19
|
belongs_to :approved_by, :model => Models::USER
|
20
20
|
|
21
|
+
unless const_defined? "TEXT"
|
22
|
+
TEXT = Object.full_const_get(Models::TEXT)
|
23
|
+
end
|
24
|
+
|
21
25
|
def self.map_for(args = {})
|
22
26
|
map = {}
|
23
|
-
|
27
|
+
TEXT.latest_approved(args.dup).each do |text|
|
24
28
|
map[text.code] = Translation.create(:text => text.text, :approved_at => text.approved_at, :approved_by => text.approved_by)
|
25
29
|
end
|
26
|
-
|
30
|
+
TEXT.second_latest_approved(args.dup).each do |text|
|
27
31
|
translation = map[text.code]
|
28
32
|
translation.previous_text = text.text
|
29
33
|
end
|
data/lib/ixtlan/models/user.rb
CHANGED
@@ -194,8 +194,35 @@ module Ixtlan
|
|
194
194
|
protected
|
195
195
|
|
196
196
|
def to_xml_document(opts={}, doc = nil)
|
197
|
-
unless(opts[:methods]
|
198
|
-
opts.merge!({
|
197
|
+
unless(opts[:methods])
|
198
|
+
opts.merge!({
|
199
|
+
:skip_types => true,
|
200
|
+
:skip_empty_tags => true,
|
201
|
+
:methods => [:groups, :created_by, :updated_by],
|
202
|
+
:groups => {
|
203
|
+
:exclude => [:created_at, :created_by_id],
|
204
|
+
:methods => [:locales, :domains],
|
205
|
+
:locales => {
|
206
|
+
:methods => [],
|
207
|
+
:exclude => [:created_at]
|
208
|
+
},
|
209
|
+
:domains => {
|
210
|
+
:methods => [],
|
211
|
+
:exclude => [:created_at]
|
212
|
+
}
|
213
|
+
},
|
214
|
+
:created_by => {
|
215
|
+
:methods => [],
|
216
|
+
:exclude => [:created_at, :updated_at, :hashed_password, :created_by_id, :updated_by_id, :language]
|
217
|
+
},
|
218
|
+
:updated_by => {
|
219
|
+
:methods => [],
|
220
|
+
:exclude => [:created_at, :updated_at, :hashed_password, :created_by_id, :updated_by_id, :language]
|
221
|
+
}
|
222
|
+
})
|
223
|
+
end
|
224
|
+
unless(opts[:exclude])
|
225
|
+
opts.merge!({:exclude => [:hashed_password, :created_by_id, :updated_by_id]})
|
199
226
|
end
|
200
227
|
to_x(opts, doc)
|
201
228
|
end
|
data/lib/ixtlan/modified_by.rb
CHANGED
@@ -6,8 +6,7 @@ module Ixtlan
|
|
6
6
|
|
7
7
|
MODIFIED_BY_PROPERTIES = {
|
8
8
|
:updated_by => lambda {|r, u| r.updated_by = u},
|
9
|
-
:created_by => lambda {|r, u| r.created_by = u
|
10
|
-
}
|
9
|
+
:created_by => lambda {|r, u| r.created_by = u if r.new? }
|
11
10
|
}.freeze
|
12
11
|
|
13
12
|
def self.included(model)
|
data/lib/ixtlan/version.rb
CHANGED
File without changes
|
data/spec/authentication_spec.rb
CHANGED
@@ -3,28 +3,35 @@ require 'pathname'
|
|
3
3
|
require Pathname(__FILE__).dirname + 'spec_helper.rb'
|
4
4
|
|
5
5
|
|
6
|
-
require 'ixtlan
|
6
|
+
require 'ixtlan/models/authentication'
|
7
|
+
|
8
|
+
class Authentication
|
9
|
+
include Ixtlan::Models::Authentication
|
10
|
+
end
|
7
11
|
|
8
12
|
describe Ixtlan::Models::Authentication do
|
9
13
|
|
10
14
|
before :each do
|
11
15
|
#Ixtlan::Models::Group.all.destroy!
|
12
16
|
#Ixtlan::Models::User.all.destroy!
|
13
|
-
user =
|
14
|
-
user.
|
15
|
-
user.
|
17
|
+
user = User.new(:login => "marvin2", :name => 'marvin the robot', :email=> "marvin@universe.example.com", :language => "xx", :id => 1356, :created_at => DateTime.now, :updated_at => DateTime.now)
|
18
|
+
user.created_by = user #_id = 1356
|
19
|
+
user.updated_by = user #_id = 1356
|
16
20
|
user.save!
|
17
|
-
group =
|
21
|
+
group = Group.create(:id => 1356, :name => 'marvin2_root', :current_user => user)
|
18
22
|
user.groups << group
|
19
23
|
group.save
|
20
|
-
|
21
|
-
group.locales <<
|
22
|
-
|
24
|
+
|
25
|
+
group.locales << Locale.default
|
26
|
+
group.locales << (Locale.first(:code => "en") || Locale.create(:code => "en", :current_user => User.first))
|
27
|
+
@authentication = Authentication.create(:login => user.login, :user => user)
|
28
|
+
|
29
|
+
Ixtlan::Guard.load( Slf4r::LoggerFacade.new(:root), :root, (Pathname(__FILE__).dirname + 'guards').expand_path )
|
23
30
|
end
|
24
31
|
|
25
32
|
it "should" do
|
26
33
|
xml = @authentication.to_xml
|
27
|
-
xml.gsub!(/[0-9-]{10}T[0-9+-:]{14}/, "").gsub!(
|
34
|
+
xml.gsub!(/[0-9-]{10}T[0-9+-:]{14}/, "").gsub!(/<created_at><\/created_at>/, "<created_at/>").gsub!(/<locale><id>[0-9]*<\/id>/, "<locale>").gsub!(/<permission>.*<\/permission>/, '').gsub(/id>[0-9]+<\//,'id></').should == "<authentication><login>marvin2</login><user><id></id><login>marvin2</login><name>marvin the robot</name><email>marvin@universe.example.com</email><language>xx</language><created_at/><updated_at></updated_at><groups><group><id></id><name>marvin2_root</name><locales><locale><code>DEFAULT</code><created_by_id></created_by_id></locale><locale><code>en</code><created_by_id></created_by_id></locale></locales></group></groups><created_by><id></id><login>marvin2</login><name>marvin the robot</name><email>marvin@universe.example.com</email></created_by><updated_by><id></id><login>marvin2</login><name>marvin the robot</name><email>marvin@universe.example.com</email></updated_by></user><permissions></permissions></authentication>"
|
28
35
|
end
|
29
36
|
|
30
37
|
end
|
data/spec/guard_spec.rb
CHANGED
@@ -50,6 +50,7 @@ describe Ixtlan::Guard do
|
|
50
50
|
@controller = Controller.new
|
51
51
|
@widget = Erector::Widget.new
|
52
52
|
@widget.controller = @controller
|
53
|
+
Locale.first(:code => "en") || Locale.create(:code => "en", :current_user => User.first)
|
53
54
|
end
|
54
55
|
|
55
56
|
it 'should export permissions' do
|
@@ -65,11 +66,11 @@ describe Ixtlan::Guard do
|
|
65
66
|
end
|
66
67
|
|
67
68
|
it 'should allow with locale' do
|
68
|
-
Ixtlan::Guard.check(@controller, :permissions, :update,
|
69
|
+
Ixtlan::Guard.check(@controller, :permissions, :update, Locale.first_or_create(:code => "en")).should be_true
|
69
70
|
end
|
70
71
|
|
71
72
|
it 'should disallow with locale' do
|
72
|
-
Ixtlan::Guard.check(@controller, :configurations, :update,
|
73
|
+
Ixtlan::Guard.check(@controller, :configurations, :update, Locale.first_or_create(:code => "en")).should be_false
|
73
74
|
end
|
74
75
|
|
75
76
|
it 'should raise GuardException on unknown controller' do
|
@@ -98,28 +99,28 @@ describe Ixtlan::Guard do
|
|
98
99
|
@controller.params[:action] = :update
|
99
100
|
@controller.params[:controller] = :permissions
|
100
101
|
|
101
|
-
@controller.send(:guard,
|
102
|
+
@controller.send(:guard, Locale.first_or_create(:code => "en")).should be_true
|
102
103
|
end
|
103
104
|
|
104
105
|
it 'should deny permission with right locale' do
|
105
106
|
@controller.params[:action] = :update
|
106
107
|
@controller.params[:controller] = :configurations
|
107
108
|
|
108
|
-
lambda {@controller.send(:guard,
|
109
|
+
lambda {@controller.send(:guard, Locale.first_or_create(:code => "en"))}.should raise_error( Ixtlan::PermissionDenied)
|
109
110
|
end
|
110
111
|
|
111
112
|
it 'should deny permission with wrong locale' do
|
112
113
|
@controller.params[:action] = :update
|
113
114
|
@controller.params[:controller] = :permissions
|
114
115
|
|
115
|
-
lambda {@controller.send(:guard,
|
116
|
+
lambda {@controller.send(:guard, Locale.first(:code => "de")||Locale.create(:code => "de", :current_user => User.first))}.should raise_error( Ixtlan::PermissionDenied)
|
116
117
|
end
|
117
118
|
|
118
119
|
it 'should allow with locale' do
|
119
|
-
@widget.send(:allowed, :permissions, :update,
|
120
|
+
@widget.send(:allowed, :permissions, :update, Locale.first_or_create(:code => "en")).should be_true
|
120
121
|
end
|
121
122
|
|
122
123
|
it 'should deny permission with locale' do
|
123
|
-
@widget.send(:allowed, :configurations, :update,
|
124
|
+
@widget.send(:allowed, :configurations, :update, Locale.first_or_create(:code => "en")).should be_false
|
124
125
|
end
|
125
126
|
end
|
data/spec/modified_by_spec.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'pathname'
|
2
2
|
require Pathname(__FILE__).dirname + 'spec_helper.rb'
|
3
|
-
require 'ixtlan
|
3
|
+
require 'ixtlan/modified_by'
|
4
4
|
|
5
|
-
class
|
5
|
+
class Crew
|
6
6
|
include DataMapper::Resource
|
7
7
|
|
8
8
|
property :login, String, :key => true
|
@@ -15,14 +15,14 @@ class AuditedName
|
|
15
15
|
property :id, Serial
|
16
16
|
property :name, String, :length => 2..255#, :key => true
|
17
17
|
|
18
|
-
modified_by
|
18
|
+
modified_by Crew
|
19
19
|
end
|
20
20
|
|
21
21
|
describe Ixtlan::ModifiedBy do
|
22
22
|
|
23
23
|
before :each do
|
24
|
-
@user =
|
25
|
-
@second =
|
24
|
+
@user = Crew.create(:login => 'spock')
|
25
|
+
@second = Crew.create(:login => 'dr pille')
|
26
26
|
@name = AuditedName.create(:name => 'kirk', :current_user => @user)
|
27
27
|
end
|
28
28
|
|
@@ -42,10 +42,11 @@ describe Ixtlan::ModifiedBy do
|
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'should modify updated_by on change' do
|
45
|
+
created_by = @name.created_by
|
45
46
|
@name.current_user = @second
|
46
47
|
@name.name = "scotty"
|
47
48
|
@name.save.should be_true
|
48
|
-
@name.created_by.should ==
|
49
|
+
@name.created_by.should == created_by
|
49
50
|
@name.updated_by.should == @second
|
50
51
|
end
|
51
52
|
|
@@ -56,8 +57,8 @@ describe Ixtlan::ModifiedBy do
|
|
56
57
|
end
|
57
58
|
|
58
59
|
it 'should not modify updated_by on update without change' do
|
59
|
-
@name.update(:name => "kirk", :current_user => @second)
|
60
|
-
@name.updated_by.should == @
|
60
|
+
@name.update(:name => "kirk updated", :current_user => @second)
|
61
|
+
@name.updated_by.should == @second
|
61
62
|
@name.instance_variable_get(:@current_user).should be_nil
|
62
63
|
end
|
63
64
|
|
@@ -38,7 +38,7 @@ describe "Ixtlan::OptimisticPersistence" do
|
|
38
38
|
sleep 1
|
39
39
|
@name.save.should be_true
|
40
40
|
@second.name = "saroman"
|
41
|
-
lambda { @second.save }.should raise_error(
|
41
|
+
lambda { @second.save }.should raise_error(Ixtlan::StaleResourceError)
|
42
42
|
end
|
43
43
|
|
44
44
|
it 'should fail on key change' do
|
@@ -46,7 +46,7 @@ describe "Ixtlan::OptimisticPersistence" do
|
|
46
46
|
@name.id = 11
|
47
47
|
@name.save.should be_true
|
48
48
|
@second.id = 111
|
49
|
-
lambda { @second.save }.should raise_error(
|
49
|
+
lambda { @second.save }.should raise_error(Ixtlan::StaleResourceError)
|
50
50
|
end
|
51
51
|
|
52
52
|
it 'should treat non optimistic resources as usual' do
|
data/spec/phrase_spec.rb
CHANGED
@@ -3,9 +3,6 @@ require Pathname(__FILE__).dirname + 'spec_helper.rb'
|
|
3
3
|
|
4
4
|
require Pathname(__FILE__).dirname + '../lib/dm-serializer/to_xml'
|
5
5
|
|
6
|
-
|
7
|
-
require 'ixtlan/controllers/texts_controller'
|
8
|
-
|
9
6
|
require 'ixtlan/models/i18n_text'
|
10
7
|
require 'ixtlan/models/word'
|
11
8
|
require 'ixtlan/models/translation'
|
@@ -13,23 +10,22 @@ require 'ixtlan/models/phrase'
|
|
13
10
|
|
14
11
|
def setup(code)
|
15
12
|
len = 6
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
@
|
21
|
-
@
|
22
|
-
@en_in = Ixtlan::Models::Locale.first_or_create(:id => 2000, :code => "en_IN")
|
13
|
+
@current_user = User.first
|
14
|
+
I18nText.all.destroy!
|
15
|
+
Locale.all.destroy!
|
16
|
+
Locale.create(:id => 1, :code => "DEFAULT", :current_user => @current_user)
|
17
|
+
@en = Locale.create(:id => 1000, :code => "en", :current_user => @current_user)
|
18
|
+
@en_in = Locale.create(:id => 2000, :code => "en_IN", :current_user => @current_user)
|
23
19
|
(1..len).each do |j|
|
24
|
-
text =
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
text.approve(:current_user => @
|
20
|
+
text = I18nText.create(:id => j,
|
21
|
+
:code => code,
|
22
|
+
:text => "text_#{j}",
|
23
|
+
:current_user => @current_user,
|
24
|
+
:locale => Locale.default,
|
25
|
+
:updated_at => DateTime.now,
|
26
|
+
:updated_by => @current_user)
|
27
|
+
|
28
|
+
text.approve(:current_user => @current_user)
|
33
29
|
end
|
34
30
|
end
|
35
31
|
|
@@ -42,7 +38,7 @@ describe "with default locale" do
|
|
42
38
|
end
|
43
39
|
it "should xml-serialize" do
|
44
40
|
#Ixtlan::Models::I18nText.all.each {|t| p t}
|
45
|
-
Ixtlan::Models::Phrase.all(:code => "cccc_1").to_xml.cleanup.should == "<phrases><phrase><code>cccc_1</code><text>text_6</text><current_text>text_6</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><locale><id>1</id><code>DEFAULT</code><created_at>date</created_at></locale></phrase></phrases>"
|
41
|
+
Ixtlan::Models::Phrase.all(:code => "cccc_1").to_xml.cleanup.should == "<phrases><phrase><code>cccc_1</code><text>text_6</text><current_text>text_6</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><locale><id>1</id><code>DEFAULT</code><created_at>date</created_at><created_by_id>1</created_by_id></locale></phrase></phrases>"
|
46
42
|
end
|
47
43
|
end
|
48
44
|
|
@@ -51,32 +47,32 @@ describe "with default locale" do
|
|
51
47
|
setup("cccc_2")
|
52
48
|
end
|
53
49
|
it "should xml-serialize with edited text" do
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
50
|
+
I18nText.create(:code => "cccc_2",
|
51
|
+
:text => "text_edited",
|
52
|
+
:current_user => @current_user,
|
53
|
+
:locale => Locale.default,
|
54
|
+
:updated_at => DateTime.now,
|
55
|
+
:updated_by => @current_user)
|
60
56
|
# Ixtlan::Models::I18nText.all.each {|t| p t}
|
61
|
-
Ixtlan::Models::Phrase.all(:code => "cccc_2").to_xml.cleanup.should == "<phrases><phrase><code>cccc_2</code><text>text_edited</text><current_text>text_6</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><locale><id>1</id><code>DEFAULT</code><created_at>date</created_at></locale></phrase></phrases>"
|
57
|
+
Ixtlan::Models::Phrase.all(:code => "cccc_2").to_xml.cleanup.should == "<phrases><phrase><code>cccc_2</code><text>text_edited</text><current_text>text_6</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><locale><id>1</id><code>DEFAULT</code><created_at>date</created_at><created_by_id>1</created_by_id></locale></phrase></phrases>"
|
62
58
|
end
|
63
59
|
|
64
60
|
end
|
65
61
|
describe "with default locale" do
|
66
62
|
before(:each) do
|
67
63
|
setup("cccc_3")
|
68
|
-
|
64
|
+
I18nText.all.destroy!
|
69
65
|
end
|
70
66
|
|
71
67
|
it "should xml-serialize with edited text and not approved" do
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
68
|
+
I18nText.create(:code => "cccc_3",
|
69
|
+
:text => "text_edited",
|
70
|
+
:current_user => @current_user,
|
71
|
+
:locale => Locale.default,
|
72
|
+
:updated_at => DateTime.now,
|
73
|
+
:updated_by => @current_user)
|
78
74
|
#Ixtlan::Models::I18nText.all.each {|t| p t}
|
79
|
-
Ixtlan::Models::Phrase.all(:code => "cccc_3").to_xml.cleanup.should == "<phrases><phrase><code>cccc_3</code><text>text_edited</text><current_text>text_edited</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><locale><id>1</id><code>DEFAULT</code><created_at>date</created_at></locale></phrase></phrases>"
|
75
|
+
Ixtlan::Models::Phrase.all(:code => "cccc_3").to_xml.cleanup.should == "<phrases><phrase><code>cccc_3</code><text>text_edited</text><current_text>text_edited</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><locale><id>1</id><code>DEFAULT</code><created_at>date</created_at><created_by_id>1</created_by_id></locale></phrase></phrases>"
|
80
76
|
end
|
81
77
|
end
|
82
78
|
|
@@ -86,7 +82,7 @@ describe "with 'de' locale" do
|
|
86
82
|
end
|
87
83
|
it "should xml-serialize" do
|
88
84
|
#Ixtlan::Models::I18nText.all.each {|t| p t}
|
89
|
-
Ixtlan::Models::Phrase.all(:code => "de_code", :locale =>
|
85
|
+
Ixtlan::Models::Phrase.all(:code => "de_code", :locale => Locale.first(:id => 3000, :code => 'de') || Locale.create(:id => 3000, :code => 'de', :current_user => @current_user)).to_xml.cleanup.should == "<phrases><phrase><code>de_code</code><text>text_6</text><current_text>text_6</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><default_translation><text>text_6</text><previous_text>text_5</previous_text><approved_at>date</approved_at><approved_by_id>1</approved_by_id></default_translation><locale><id>3000</id><code>de</code><created_at>date</created_at><created_by_id>1</created_by_id></locale></phrase></phrases>"
|
90
86
|
end
|
91
87
|
end
|
92
88
|
|
@@ -94,23 +90,23 @@ describe "with 'en' locale" do
|
|
94
90
|
before(:each) do
|
95
91
|
setup("en_code")
|
96
92
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
93
|
+
I18nText.create(:code => "en_code",
|
94
|
+
:text => "en_text_edited",
|
95
|
+
:current_user => @current_user,
|
96
|
+
:locale => @en,
|
97
|
+
:updated_at => DateTime.now,
|
98
|
+
:updated_by => @current_user)
|
99
|
+
I18nText.create(:code => "en_code",
|
100
|
+
:text => "en_in_text_edited",
|
101
|
+
:current_user => @current_user,
|
102
|
+
:locale => @en_in,
|
103
|
+
:updated_at => DateTime.now,
|
104
|
+
:updated_by => @current_user)
|
109
105
|
end
|
110
106
|
|
111
107
|
it "should xml-serialize with edited text" do
|
112
108
|
#Ixtlan::Models::I18nText.all(:code => "en_code").each {|t| puts "code=#{t.code} locale=#{t.locale.code} version=#{t.version} current=#{t.current} previous=#{t.previous}"}
|
113
|
-
Ixtlan::Models::Phrase.all(:code => "en_code", :locale => @en).to_xml.cleanup.should == "<phrases><phrase><code>en_code</code><text>en_text_edited</text><current_text>en_text_edited</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><default_translation><text>text_6</text><previous_text>text_5</previous_text><approved_at>date</approved_at><approved_by_id>1</approved_by_id></default_translation><locale><id>1000</id><code>en</code><created_at>date</created_at></locale></phrase></phrases>"
|
109
|
+
Ixtlan::Models::Phrase.all(:code => "en_code", :locale => @en).to_xml.cleanup.should == "<phrases><phrase><code>en_code</code><text>en_text_edited</text><current_text>en_text_edited</current_text><updated_at>date</updated_at><updated_by_id>1</updated_by_id><default_translation><text>text_6</text><previous_text>text_5</previous_text><approved_at>date</approved_at><approved_by_id>1</approved_by_id></default_translation><locale><id>1000</id><code>en</code><created_at>date</created_at><created_by_id>1</created_by_id></locale></phrase></phrases>"
|
114
110
|
end
|
115
111
|
|
116
112
|
end
|