Deployment and lifecycle management for Nix
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor: extract process_hello_reply into Garden.Socket.State

SOW-74

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

+25 -1
+4 -1
apps/garden/lib/garden/socket.ex
··· 235 235 Logger.debug(msg: "Received hello reply", garden: reply) 236 236 storage = Garden.Storage.read() 237 237 238 - if storage.garden_sid != garden_sid do 238 + {:join, garden_sid, persist?: persist?} = 239 + State.process_hello_reply(garden_sid, storage.garden_sid) 240 + 241 + if persist? do 239 242 storage |> Map.put(:garden_sid, garden_sid) |> Garden.Storage.write() 240 243 end 241 244
+4
apps/garden/lib/garden/socket/state.ex
··· 83 83 end 84 84 end 85 85 86 + def process_hello_reply(garden_sid, stored_garden_sid) do 87 + {:join, garden_sid, persist?: garden_sid != stored_garden_sid} 88 + end 89 + 86 90 def should_reload?(active_deployments, pending_reload) do 87 91 map_size(active_deployments) == 0 and pending_reload 88 92 end
+17
apps/garden/test/garden/socket/state_test.exs
··· 255 255 refute State.should_reload?(%{}, false) 256 256 end 257 257 end 258 + 259 + describe "process_hello_reply/2" do 260 + test "returns persist true when garden_sid differs from stored" do 261 + assert {:join, "garden_new", persist?: true} = 262 + State.process_hello_reply("garden_new", "garden_old") 263 + end 264 + 265 + test "returns persist false when garden_sid matches stored" do 266 + assert {:join, "garden_same", persist?: false} = 267 + State.process_hello_reply("garden_same", "garden_same") 268 + end 269 + 270 + test "returns persist true when stored is nil" do 271 + assert {:join, "garden_new", persist?: true} = 272 + State.process_hello_reply("garden_new", nil) 273 + end 274 + end 258 275 end