@@ -16,6 +16,7 @@ def setUp(self):
16
16
-thing = { $article ->
17
17
*[definite] the thing
18
18
[indefinite] a thing
19
+ [none] thing
19
20
}
20
21
thing-no-arg = { -thing }
21
22
thing-no-arg-alt = { -thing() }
@@ -56,6 +57,11 @@ def test_no_implicit_access_to_external_args(self):
56
57
self .assertEqual (val , 'the thing' )
57
58
self .assertEqual (errs , [])
58
59
60
+ def test_no_implicit_access_to_external_args_but_term_args_still_passed (self ):
61
+ val , errs = self .ctx .format ('thing-with-arg' , {'article' : 'none' })
62
+ self .assertEqual (val , 'a thing' )
63
+ self .assertEqual (errs , [])
64
+
59
65
def test_bad_term (self ):
60
66
val , errs = self .ctx .format ('bad-term' , {})
61
67
self .assertEqual (val , '-missing' )
@@ -138,7 +144,53 @@ def test_inner_arg(self):
138
144
self .assertEqual (val , 'The thing.' )
139
145
self .assertEqual (errs , [])
140
146
147
+ def test_inner_arg_with_external_args (self ):
148
+ val , errs = self .ctx .format ('inner-arg' , {'article' : 'indefinite' })
149
+ self .assertEqual (val , 'The thing.' )
150
+ self .assertEqual (errs , [])
151
+
141
152
def test_neither_arg (self ):
142
153
val , errs = self .ctx .format ('neither-arg' , {})
143
154
self .assertEqual (val , 'the thing.' )
144
155
self .assertEqual (errs , [])
156
+
157
+
158
+ class TestTermsCalledFromTerms (unittest .TestCase ):
159
+
160
+ def setUp (self ):
161
+ self .ctx = FluentBundle (['en-US' ], use_isolating = False )
162
+ self .ctx .add_messages (dedent_ftl ("""
163
+ -foo = {$a} {$b}
164
+ -bar = {-foo(b: 2)}
165
+ -baz = {-foo}
166
+ ref-bar = {-bar(a: 1)}
167
+ ref-baz = {-baz(a: 1)}
168
+ """ ))
169
+
170
+ def test_term_args_isolated_with_call_syntax (self ):
171
+ val , errs = self .ctx .format ('ref-bar' , {})
172
+ self .assertEqual (val , 'a 2' )
173
+ self .assertEqual (errs , [])
174
+
175
+ def test_term_args_isolated_without_call_syntax (self ):
176
+ val , errs = self .ctx .format ('ref-baz' , {})
177
+ self .assertEqual (val , 'a b' )
178
+ self .assertEqual (errs , [])
179
+
180
+
181
+ class TestMessagesCalledFromTerms (unittest .TestCase ):
182
+
183
+ def setUp (self ):
184
+ self .ctx = FluentBundle (['en-US' ], use_isolating = False )
185
+ self .ctx .add_messages (dedent_ftl ("""
186
+ msg = Msg is {$arg}
187
+ -foo = {msg}
188
+ ref-foo = {-foo(arg: 1)}
189
+ """ ))
190
+
191
+ def test_messages_inherit_term_args (self ):
192
+ # This behaviour may change in future, message calls might be
193
+ # disallowed from inside terms
194
+ val , errs = self .ctx .format ('ref-foo' , {'arg' : 2 })
195
+ self .assertEqual (val , 'Msg is 1' )
196
+ self .assertEqual (errs , [])
0 commit comments