@@ -77,4 +77,35 @@ class LockTest < GemTestCase
7777
7878 assert_equal ( expected , actual )
7979 end
80+
81+ test 'current_advisory_locks returns empty array outside an advisory lock request' do
82+ assert_equal ( [ ] , Tag . current_advisory_locks )
83+ end
84+
85+ test 'current_advisory_locks returns an array with names of the acquired locks' do
86+ Tag . with_advisory_lock ( @lock_name ) do
87+ locks = Tag . current_advisory_locks
88+ assert_equal ( 1 , locks . size )
89+ assert_match ( /#{ @lock_name } / , locks . first )
90+ end
91+ end
92+
93+ test 'current_advisory_locks returns array of all nested lock names' do
94+ first_lock = 'outer lock'
95+ second_lock = 'inner lock'
96+
97+ Tag . with_advisory_lock ( first_lock ) do
98+ Tag . with_advisory_lock ( second_lock ) do
99+ locks = Tag . current_advisory_locks
100+ assert_equal ( 2 , locks . size )
101+ assert_match ( /#{ first_lock } / , locks . first )
102+ assert_match ( /#{ second_lock } / , locks . last )
103+ end
104+
105+ locks = Tag . current_advisory_locks
106+ assert_equal ( 1 , locks . size )
107+ assert_match ( /#{ first_lock } / , locks . first )
108+ end
109+ assert_equal ( [ ] , Tag . current_advisory_locks )
110+ end
80111end
0 commit comments