File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -291,7 +291,7 @@ def join(self, suffix):
291291 else :
292292 suffix_parts = suffix
293293 try :
294- return JsonPointer .from_parts (chain (self .parts , suffix_parts ))
294+ return self . __class__ .from_parts (chain (self .parts , suffix_parts ))
295295 except : # noqa E722
296296 raise JsonPointerException ("Invalid suffix" )
297297
Original file line number Diff line number Diff line change @@ -192,6 +192,31 @@ def test_join_magic(self):
192192 ptr12e = self .ptr1 / ["a" , "b" ]
193193 self .assertEqual (ptr12e .path , "/a/b/c/a/b" )
194194
195+ def test_join_subclass (self ):
196+ class Pointer (JsonPointer ):
197+ pass
198+
199+ class OtherPointer (JsonPointer ):
200+ pass
201+
202+ ptr = Pointer ("/a~1b" )
203+ suffixes = [JsonPointer ("/m~0n" ), Pointer ("/m~0n" ),
204+ OtherPointer ("/m~0n" ), "/m~0n" , ["m~n" ]]
205+ for suffix in suffixes :
206+ with self .subTest (suffix = suffix ):
207+ joined = ptr .join (suffix )
208+ self .assertIs (type (joined ), Pointer )
209+ self .assertEqual (joined .path , "/a~1b/m~0n" )
210+ self .assertEqual (ptr .path , "/a~1b" )
211+
212+ def test_join_magic_subclass (self ):
213+ class Pointer (JsonPointer ):
214+ pass
215+
216+ ptr = Pointer ("/a" ) / JsonPointer ("/b" ) / ["c" ]
217+ self .assertIs (type (ptr ), Pointer )
218+ self .assertEqual (ptr .path , "/a/b/c" )
219+
195220
196221class WrongInputTests (unittest .TestCase ):
197222
You can’t perform that action at this time.
0 commit comments