@@ -77,4 +77,35 @@ class LockTest < GemTestCase
77
77
78
78
assert_equal ( expected , actual )
79
79
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
80
111
end
0 commit comments