@@ -58,6 +58,10 @@ import {
5858import { GitCore , type GitCoreShape } from "./git/Services/GitCore.ts" ;
5959import { GitManager , type GitManagerShape } from "./git/Services/GitManager.ts" ;
6060import { GitStatusBroadcasterLive } from "./git/Layers/GitStatusBroadcaster.ts" ;
61+ import {
62+ GitStatusBroadcaster ,
63+ type GitStatusBroadcasterShape ,
64+ } from "./git/Services/GitStatusBroadcaster.ts" ;
6165import { Keybindings , type KeybindingsShape } from "./keybindings.ts" ;
6266import { Open , type OpenShape } from "./open.ts" ;
6367import {
@@ -293,6 +297,7 @@ const buildAppUnderTest = (options?: {
293297 open ?: Partial < OpenShape > ;
294298 gitCore ?: Partial < GitCoreShape > ;
295299 gitManager ?: Partial < GitManagerShape > ;
300+ gitStatusBroadcaster ?: Partial < GitStatusBroadcasterShape > ;
296301 projectSetupScriptRunner ?: Partial < ProjectSetupScriptRunnerShape > ;
297302 terminalManager ?: Partial < TerminalManagerShape > ;
298303 orchestrationEngine ?: Partial < OrchestrationEngineShape > ;
@@ -341,7 +346,11 @@ const buildAppUnderTest = (options?: {
341346 const gitManagerLayer = Layer . mock ( GitManager ) ( {
342347 ...options ?. layers ?. gitManager ,
343348 } ) ;
344- const gitStatusBroadcasterLayer = GitStatusBroadcasterLive . pipe ( Layer . provide ( gitManagerLayer ) ) ;
349+ const gitStatusBroadcasterLayer = options ?. layers ?. gitStatusBroadcaster
350+ ? Layer . mock ( GitStatusBroadcaster ) ( {
351+ ...options . layers . gitStatusBroadcaster ,
352+ } )
353+ : GitStatusBroadcasterLive . pipe ( Layer . provide ( gitManagerLayer ) ) ;
345354
346355 const servedRoutesLayer = HttpRouter . serve ( makeRoutesLayer , {
347356 disableListenLog : true ,
@@ -2913,6 +2922,24 @@ it.layer(NodeServices.layer)("server router seam", (it) => {
29132922 ( ) =>
29142923 Effect . gen ( function * ( ) {
29152924 const dispatchedCommands : Array < OrchestrationCommand > = [ ] ;
2925+ const refreshStatus = vi . fn ( ( _ : string ) =>
2926+ Effect . succeed ( {
2927+ isRepo : true ,
2928+ hasOriginRemote : true ,
2929+ isDefaultBranch : false ,
2930+ branch : "t3code/bootstrap-branch" ,
2931+ hasWorkingTreeChanges : false ,
2932+ workingTree : {
2933+ files : [ ] ,
2934+ insertions : 0 ,
2935+ deletions : 0 ,
2936+ } ,
2937+ hasUpstream : true ,
2938+ aheadCount : 0 ,
2939+ behindCount : 0 ,
2940+ pr : null ,
2941+ } ) ,
2942+ ) ;
29162943 const createWorktree = vi . fn ( ( _ : Parameters < GitCoreShape [ "createWorktree" ] > [ 0 ] ) =>
29172944 Effect . succeed ( {
29182945 worktree : {
@@ -2937,6 +2964,9 @@ it.layer(NodeServices.layer)("server router seam", (it) => {
29372964 gitCore : {
29382965 createWorktree,
29392966 } ,
2967+ gitStatusBroadcaster : {
2968+ refreshStatus,
2969+ } ,
29402970 orchestrationEngine : {
29412971 dispatch : ( command ) =>
29422972 Effect . sync ( ( ) => {
@@ -3014,6 +3044,7 @@ it.layer(NodeServices.layer)("server router seam", (it) => {
30143044 projectCwd : "/tmp/project" ,
30153045 worktreePath : "/tmp/bootstrap-worktree" ,
30163046 } ) ;
3047+ assert . deepEqual ( refreshStatus . mock . calls [ 0 ] ?. [ 0 ] , "/tmp/bootstrap-worktree" ) ;
30173048
30183049 const setupActivities = dispatchedCommands . filter (
30193050 ( command ) : command is Extract < OrchestrationCommand , { type : "thread.activity.append" } > =>
0 commit comments