@@ -137,4 +137,81 @@ describe('PullRequestOverview', function () {
137137 assert . strictEqual ( panel0 ! . getCurrentTitle ( ) , 'Pull Request #2000' ) ;
138138 } ) ;
139139 } ) ;
140+
141+ describe ( 'PR overview sync' , function ( ) {
142+ it ( 'emits event when PR overview becomes active' , async function ( ) {
143+ // Set up PR model
144+ repo . addGraphQLPullRequest ( builder => {
145+ builder . pullRequest ( response => {
146+ response . repository ( r => {
147+ r . pullRequest ( pr => pr . number ( 1000 ) ) ;
148+ } ) ;
149+ } ) ;
150+ } ) ;
151+
152+ const prItem = convertRESTPullRequestToRawPullRequest ( new PullRequestBuilder ( ) . number ( 1000 ) . build ( ) , repo ) ;
153+ const prModel = new PullRequestModel ( credentialStore , telemetry , repo , remote , prItem ) ;
154+
155+ // Listen for the event
156+ let eventFired = false ;
157+ let eventPR : PullRequestModel | undefined ;
158+ const disposable = PullRequestOverviewPanel . onDidChangeActivePullRequest ( pr => {
159+ eventFired = true ;
160+ eventPR = pr ;
161+ } ) ;
162+
163+ try {
164+ // Create and show the panel - this should trigger the event
165+ await PullRequestOverviewPanel . createOrShow ( telemetry , EXTENSION_URI , pullRequestManager , prModel ) ;
166+
167+ // Verify event was fired with correct PR
168+ assert . strictEqual ( eventFired , true , 'Event should have been fired when PR overview became active' ) ;
169+ assert . strictEqual ( eventPR ?. number , 1000 , 'Event should contain the correct PR model' ) ;
170+ } finally {
171+ disposable . dispose ( ) ;
172+ }
173+ } ) ;
174+
175+ it ( 'emits event when panel visibility changes' , async function ( ) {
176+ // Set up PR model
177+ repo . addGraphQLPullRequest ( builder => {
178+ builder . pullRequest ( response => {
179+ response . repository ( r => {
180+ r . pullRequest ( pr => pr . number ( 2000 ) ) ;
181+ } ) ;
182+ } ) ;
183+ } ) ;
184+
185+ const prItem = convertRESTPullRequestToRawPullRequest ( new PullRequestBuilder ( ) . number ( 2000 ) . build ( ) , repo ) ;
186+ const prModel = new PullRequestModel ( credentialStore , telemetry , repo , remote , prItem ) ;
187+
188+ // Create panel first
189+ await PullRequestOverviewPanel . createOrShow ( telemetry , EXTENSION_URI , pullRequestManager , prModel ) ;
190+ const panel = PullRequestOverviewPanel . currentPanel ;
191+ assert . notStrictEqual ( panel , undefined ) ;
192+
193+ // Listen for the event
194+ let eventCount = 0 ;
195+ let lastEventPR : PullRequestModel | undefined ;
196+ const disposable = PullRequestOverviewPanel . onDidChangeActivePullRequest ( pr => {
197+ eventCount ++ ;
198+ lastEventPR = pr ;
199+ } ) ;
200+
201+ try {
202+ // Reset event count to track only visibility changes
203+ eventCount = 0 ;
204+
205+ // Simulate panel becoming visible - this should trigger the event
206+ // We simulate this by calling the method directly since testing webview visibility is complex
207+ ( panel as any ) . onDidChangeViewState ( { webviewPanel : { visible : true } } ) ;
208+
209+ // Verify event was fired
210+ assert . strictEqual ( eventCount , 1 , 'Event should have been fired when panel became visible' ) ;
211+ assert . strictEqual ( lastEventPR ?. number , 2000 , 'Event should contain the correct PR model' ) ;
212+ } finally {
213+ disposable . dispose ( ) ;
214+ }
215+ } ) ;
216+ } ) ;
140217} ) ;
0 commit comments