ixtlan 0.4.0.pre5 → 0.4.0
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/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
|