@knpkv/jira-clockify 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +10 -10
  2. package/dist/package.json +1 -1
  3. package/dist/src/bin.js +1 -15
  4. package/dist/src/bin.js.map +1 -1
  5. package/dist/src/cli/fetchTicket.js +12 -0
  6. package/dist/src/cli/fetchTicket.js.map +1 -1
  7. package/dist/src/cli/layers.js +7 -2
  8. package/dist/src/cli/layers.js.map +1 -1
  9. package/dist/src/cli/list.js +1 -0
  10. package/dist/src/cli/list.js.map +1 -1
  11. package/dist/src/cli/reconcile.js +131 -0
  12. package/dist/src/cli/reconcile.js.map +1 -0
  13. package/dist/src/cli/root.js +25 -0
  14. package/dist/src/cli/root.js.map +1 -0
  15. package/dist/src/cli/setup.js +1 -1
  16. package/dist/src/cli/setup.js.map +1 -1
  17. package/dist/src/cli/timer/log.js +5 -1
  18. package/dist/src/cli/timer/log.js.map +1 -1
  19. package/dist/src/cli/timer/start.js +6 -2
  20. package/dist/src/cli/timer/start.js.map +1 -1
  21. package/dist/src/cli/timer/stop.js +36 -2
  22. package/dist/src/cli/timer/stop.js.map +1 -1
  23. package/dist/src/cli/timer.js +4 -0
  24. package/dist/src/cli/timer.js.map +1 -1
  25. package/dist/src/services/ReconcileService.js +0 -0
  26. package/dist/src/services/ReconcileService.js.map +1 -0
  27. package/dist/src/services/TimerService.js +52 -21
  28. package/dist/src/services/TimerService.js.map +1 -1
  29. package/dist/src/tui/App.js +66 -11
  30. package/dist/src/tui/App.js.map +1 -1
  31. package/dist/src/tui/atoms/timer.js +5 -0
  32. package/dist/src/tui/atoms/timer.js.map +1 -1
  33. package/dist/src/tui/components/PopupMessage.js +7 -2
  34. package/dist/src/tui/components/PopupMessage.js.map +1 -1
  35. package/dist/test/ReconcileService.test.js +146 -0
  36. package/dist/test/ReconcileService.test.js.map +1 -0
  37. package/dist/test/TimerService.test.js +106 -4
  38. package/dist/test/TimerService.test.js.map +1 -1
  39. package/dist/test/commandSurface.test.js +42 -0
  40. package/dist/test/commandSurface.test.js.map +1 -0
  41. package/dist/test/fetchTicket.test.js +30 -3
  42. package/dist/test/fetchTicket.test.js.map +1 -1
  43. package/dist/tsconfig.tsbuildinfo +1 -1
  44. package/nvim/lua/jcf/init.lua +8 -8
  45. package/nvim/lua/jcf/state.lua +3 -3
  46. package/nvim/lua/jcf/telescope.lua +3 -3
  47. package/package.json +3 -3
  48. package/skills/jcf/SKILL.md +17 -17
  49. package/skills/jcf/agents/openai.yaml +1 -1
@@ -0,0 +1,146 @@
1
+ import { describe, expect, it } from "@effect/vitest";
2
+ import { deltaToApply, resolvePeriod } from "../src/cli/reconcile.js";
3
+ import { buildReconcileRows, combineDescriptions, localDay, parseTicketKey, stripTicketPrefix } from "../src/services/ReconcileService.js";
4
+ describe("parseTicketKey", () => {
5
+ it("parses the bracket form `[KEY] summary`", () => {
6
+ expect(parseTicketKey("[PROJ-12] Fix the widget")).toBe("PROJ-12");
7
+ });
8
+ it("parses the colon form `KEY: summary`", () => {
9
+ expect(parseTicketKey("PROJ-12: Fix the widget")).toBe("PROJ-12");
10
+ });
11
+ // A bare colon prefix that isn't a ticket key must not be mistaken for one.
12
+ it("does not treat arbitrary `word:` prefixes as a key", () => {
13
+ expect(parseTicketKey("Meeting: standup")).toBeNull();
14
+ });
15
+ it("returns null for empty / missing descriptions", () => {
16
+ expect(parseTicketKey("")).toBeNull();
17
+ expect(parseTicketKey(null)).toBeNull();
18
+ expect(parseTicketKey(undefined)).toBeNull();
19
+ });
20
+ });
21
+ describe("localDay", () => {
22
+ it("formats a date as local YYYY-MM-DD", () => {
23
+ // Construct from local components to stay timezone-independent.
24
+ expect(localDay(new Date(2026, 5, 23, 9, 30))).toBe("2026-06-23");
25
+ expect(localDay(new Date(2026, 0, 1, 0, 0))).toBe("2026-01-01");
26
+ });
27
+ });
28
+ describe("buildReconcileRows", () => {
29
+ // Multiple entries on the same (ticket, day) on one side must sum, not duplicate.
30
+ it("sums per (ticket, day) bucket across both sides", () => {
31
+ const rows = buildReconcileRows([
32
+ { ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600 },
33
+ { ticketKey: "PROJ-1", day: "2026-06-23", seconds: 1800 }
34
+ ], [{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600 }]);
35
+ expect(rows).toHaveLength(1);
36
+ expect(rows[0]).toMatchObject({ ticketKey: "PROJ-1", day: "2026-06-23", clockifySeconds: 5400, jiraSeconds: 3600 });
37
+ });
38
+ // A bucket present on only one side still appears, with 0 on the other.
39
+ it("includes one-sided buckets with zero on the missing side", () => {
40
+ const rows = buildReconcileRows([{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600 }], [{ ticketKey: "PROJ-2", day: "2026-06-24", seconds: 1800 }]);
41
+ expect(rows).toEqual([
42
+ { ticketKey: "PROJ-1", day: "2026-06-23", clockifySeconds: 3600, jiraSeconds: 0, clockifyDescription: null },
43
+ { ticketKey: "PROJ-2", day: "2026-06-24", clockifySeconds: 0, jiraSeconds: 1800, clockifyDescription: null }
44
+ ]);
45
+ });
46
+ it("sorts by day then ticket for stable output", () => {
47
+ const rows = buildReconcileRows([
48
+ { ticketKey: "PROJ-9", day: "2026-06-24", seconds: 60 },
49
+ { ticketKey: "PROJ-2", day: "2026-06-23", seconds: 60 },
50
+ { ticketKey: "PROJ-1", day: "2026-06-23", seconds: 60 }
51
+ ], []);
52
+ expect(rows.map((r) => `${r.day} ${r.ticketKey}`)).toEqual([
53
+ "2026-06-23 PROJ-1",
54
+ "2026-06-23 PROJ-2",
55
+ "2026-06-24 PROJ-9"
56
+ ]);
57
+ });
58
+ it("returns an empty list when both sides are empty", () => {
59
+ expect(buildReconcileRows([], [])).toEqual([]);
60
+ });
61
+ // The Clockify description becomes the worklog comment, prefix stripped and deduped.
62
+ it("combines Clockify descriptions per bucket into clockifyDescription", () => {
63
+ const rows = buildReconcileRows([
64
+ { ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600, description: "[PROJ-1] Fix the widget" },
65
+ { ticketKey: "PROJ-1", day: "2026-06-23", seconds: 1800, description: "[PROJ-1] Write tests" },
66
+ { ticketKey: "PROJ-1", day: "2026-06-23", seconds: 600, description: "[PROJ-1] Fix the widget" }
67
+ ], []);
68
+ expect(rows[0]?.clockifyDescription).toBe("Fix the widget; Write tests");
69
+ });
70
+ it("yields a null clockifyDescription when descriptions are only the ticket prefix", () => {
71
+ const rows = buildReconcileRows([{ ticketKey: "PROJ-1", day: "2026-06-23", seconds: 3600, description: "[PROJ-1]" }], []);
72
+ expect(rows[0]?.clockifyDescription).toBeNull();
73
+ });
74
+ });
75
+ describe("stripTicketPrefix", () => {
76
+ it("strips the bracket and colon ticket markers", () => {
77
+ expect(stripTicketPrefix("[PROJ-12] Fix the widget")).toBe("Fix the widget");
78
+ expect(stripTicketPrefix("PROJ-12: Fix the widget")).toBe("Fix the widget");
79
+ });
80
+ it("keeps the prefix appended after a Clockify stop comment", () => {
81
+ expect(stripTicketPrefix("[PROJ-12] Fix the widget | extra note")).toBe("Fix the widget | extra note");
82
+ });
83
+ it("returns empty when only the marker is present", () => {
84
+ expect(stripTicketPrefix("[PROJ-12]")).toBe("");
85
+ });
86
+ });
87
+ describe("combineDescriptions", () => {
88
+ it("strips prefixes, dedupes, and joins with '; '", () => {
89
+ expect(combineDescriptions(["[A-1] one", "[A-1] two", "[A-1] one"])).toBe("one; two");
90
+ });
91
+ it("returns null when nothing meaningful remains", () => {
92
+ expect(combineDescriptions([null, undefined, "[A-1]", " "])).toBeNull();
93
+ });
94
+ });
95
+ describe("deltaToApply", () => {
96
+ const row = (clockifySeconds, jiraSeconds) => ({
97
+ ticketKey: "PROJ-1",
98
+ day: "2026-06-23",
99
+ clockifySeconds,
100
+ jiraSeconds,
101
+ clockifyDescription: null
102
+ });
103
+ it("returns the gap the target is short in the chosen direction", () => {
104
+ expect(deltaToApply(row(7200, 3600), "clockify-to-jira")).toBe(3600);
105
+ expect(deltaToApply(row(3600, 7200), "jira-to-clockify")).toBe(3600);
106
+ });
107
+ // Reconciling clockify->jira never proposes shrinking Jira when Jira already has more.
108
+ it("returns 0 when the target already has at least as much", () => {
109
+ expect(deltaToApply(row(3600, 7200), "clockify-to-jira")).toBe(0);
110
+ expect(deltaToApply(row(7200, 3600), "jira-to-clockify")).toBe(0);
111
+ });
112
+ // Sub-minute differences are noise (Jira floors to 60s) and must not be flagged.
113
+ it("ignores differences under the 60s tolerance", () => {
114
+ expect(deltaToApply(row(3630, 3600), "clockify-to-jira")).toBe(0);
115
+ expect(deltaToApply(row(3660, 3600), "clockify-to-jira")).toBe(60);
116
+ });
117
+ });
118
+ describe("resolvePeriod", () => {
119
+ // A custom window is inclusive of both days → half-open [from 00:00, until+1 00:00).
120
+ it("builds an inclusive custom window from --since/--until", () => {
121
+ const period = resolvePeriod({ week: false, since: "2026-06-01", until: "2026-06-07" });
122
+ expect("error" in period).toBe(false);
123
+ if ("error" in period)
124
+ return;
125
+ expect(localDay(period.from)).toBe("2026-06-01");
126
+ // `to` is exclusive: the instant just before it is still 2026-06-07.
127
+ expect(localDay(new Date(period.to.getTime() - 1))).toBe("2026-06-07");
128
+ });
129
+ it("spans 7 local days for --week (inclusive of today)", () => {
130
+ const period = resolvePeriod({ week: true, since: undefined, until: undefined });
131
+ expect("error" in period).toBe(false);
132
+ if ("error" in period)
133
+ return;
134
+ const days = Math.round((period.to.getTime() - period.from.getTime()) / (24 * 60 * 60 * 1000));
135
+ expect(days).toBe(7);
136
+ });
137
+ it("rejects a reversed custom window", () => {
138
+ const period = resolvePeriod({ week: false, since: "2026-06-07", until: "2026-06-01" });
139
+ expect("error" in period).toBe(true);
140
+ });
141
+ it("rejects a malformed date", () => {
142
+ const period = resolvePeriod({ week: false, since: "june 1", until: undefined });
143
+ expect("error" in period).toBe(true);
144
+ });
145
+ });
146
+ //# sourceMappingURL=ReconcileService.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReconcileService.test.js","sourceRoot":"","sources":["../../test/ReconcileService.test.ts"],"names":[],"mappings":"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"}
@@ -143,6 +143,18 @@ const MockJiraAuthLayer = Layer.succeed(JiraAuth, {
143
143
  getCurrentUser: () => Effect.succeed(null),
144
144
  isLoggedIn: () => Effect.succeed(true)
145
145
  });
146
+ // JiraAuth with no usable token — postJiraWorklog short-circuits to NotLoggedIn.
147
+ const MockJiraAuthLoggedOutLayer = Layer.succeed(JiraAuth, {
148
+ configure: () => Effect.void,
149
+ isConfigured: () => Effect.succeed(false),
150
+ login: () => Effect.void,
151
+ logout: () => Effect.void,
152
+ getAccessToken: () => Effect.succeed(Redacted.make("")),
153
+ getCloudId: () => Effect.succeed(""),
154
+ getSiteUrl: () => Effect.succeed(""),
155
+ getCurrentUser: () => Effect.succeed(null),
156
+ isLoggedIn: () => Effect.succeed(false)
157
+ });
146
158
  // Mock HttpClient that returns 201 for Jira worklog POST
147
159
  const MockHttpClientLayer = Layer.succeed(HttpClient.HttpClient, HttpClient.make((request) => Effect.succeed(HttpClientResponse.fromWeb(request, new Response(JSON.stringify({ id: "wl-1" }), {
148
160
  status: 201,
@@ -153,9 +165,23 @@ const MockHttpClientFailLayer = Layer.succeed(HttpClient.HttpClient, HttpClient.
153
165
  status: 400,
154
166
  headers: { "content-type": "application/json" }
155
167
  })))));
168
+ // HttpClient that fails the Jira worklog POST `failures` times, then succeeds —
169
+ // models a transient Jira outage so a retry can recover.
170
+ const makeFlakyHttpClientLayer = (failures) => {
171
+ let calls = 0;
172
+ return Layer.succeed(HttpClient.HttpClient, HttpClient.make((request) => Effect.succeed(HttpClientResponse.fromWeb(request, calls++ < failures
173
+ ? new Response(JSON.stringify({ errorMessages: ["nope"] }), {
174
+ status: 400,
175
+ headers: { "content-type": "application/json" }
176
+ })
177
+ : new Response(JSON.stringify({ id: "wl-1" }), {
178
+ status: 201,
179
+ headers: { "content-type": "application/json" }
180
+ })))));
181
+ };
156
182
  const TestLayer = timerLayer.pipe(Layer.provide(MockClockifyLayer), Layer.provide(MockJiraApiClientLayer), Layer.provide(MockClockifyAuthLayer), Layer.provide(MockConfigLayer), Layer.provide(MockStateWriterLayer), Layer.provide(MockJiraAuthLayer), Layer.provide(MockHttpClientLayer));
157
- // Build a TimerService layer with overridden Clockify / HttpClient mocks.
158
- const makeTestLayer = (clockify = mockClockify, httpLayer = MockHttpClientLayer) => timerLayer.pipe(Layer.provide(Layer.succeed(ClockifyApiClient, clockify)), Layer.provide(MockJiraApiClientLayer), Layer.provide(MockClockifyAuthLayer), Layer.provide(MockConfigLayer), Layer.provide(MockStateWriterLayer), Layer.provide(MockJiraAuthLayer), Layer.provide(httpLayer));
183
+ // Build a TimerService layer with overridden Clockify / HttpClient / JiraAuth mocks.
184
+ const makeTestLayer = (clockify = mockClockify, httpLayer = MockHttpClientLayer, jiraAuthLayer = MockJiraAuthLayer) => timerLayer.pipe(Layer.provide(Layer.succeed(ClockifyApiClient, clockify)), Layer.provide(MockJiraApiClientLayer), Layer.provide(MockClockifyAuthLayer), Layer.provide(MockConfigLayer), Layer.provide(MockStateWriterLayer), Layer.provide(jiraAuthLayer), Layer.provide(httpLayer));
159
185
  // ---------------------------------------------------------------------------
160
186
  // Tests
161
187
  // ---------------------------------------------------------------------------
@@ -196,7 +222,7 @@ describe("TimerService", () => {
196
222
  yield* svc.start(makeTicket());
197
223
  const result = yield* svc.stop();
198
224
  expect(result.clockifyLogged).toBe(true);
199
- expect(result.jiraWorklogLogged).toBe(true);
225
+ expect(result.jiraWorklog?._tag).toBe("Posted");
200
226
  const state = yield* SubscriptionRef.get(svc.state);
201
227
  expect(state.active).toBe(false);
202
228
  expect(state.ticketKey).toBeNull();
@@ -240,7 +266,7 @@ describe("TimerService", () => {
240
266
  yield* svc.start(makeTicket());
241
267
  // Stop immediately — elapsed ~0ms, should still log with 60s floor
242
268
  const result = yield* svc.stop();
243
- expect(result.jiraWorklogLogged).toBe(true);
269
+ expect(result.jiraWorklog?._tag).toBe("Posted");
244
270
  expect(result.clockifyLogged).toBe(true);
245
271
  }).pipe(Effect.provide(TestLayer)));
246
272
  });
@@ -468,6 +494,82 @@ describe("TimerService", () => {
468
494
  expect(createdEntries).toHaveLength(0);
469
495
  }).pipe(Effect.provide(TestLayer)));
470
496
  });
497
+ describe("worklog retry", () => {
498
+ // A successful stop leaves nothing to retry — outcome Posted, no retry params.
499
+ it.effect("stop reports Posted with no retry params when Jira succeeds", () => Effect.gen(function* () {
500
+ resetCaptures();
501
+ const svc = yield* TimerService;
502
+ yield* svc.start(makeTicket());
503
+ const result = yield* svc.stop({ comment: "done" });
504
+ expect(result.jiraWorklog?._tag).toBe("Posted");
505
+ expect(result.worklog).toBeNull();
506
+ }).pipe(Effect.provide(TestLayer)));
507
+ // A transient Jira failure (4xx) must report Failed with a message and surface retry params.
508
+ it.effect("stop reports Failed with a message and retry params when Jira rejects", () => Effect.gen(function* () {
509
+ resetCaptures();
510
+ const svc = yield* TimerService;
511
+ yield* svc.start(makeTicket());
512
+ const result = yield* svc.stop({ comment: "done" });
513
+ expect(result.clockifyLogged).toBe(true);
514
+ expect(result.jiraWorklog?._tag).toBe("Failed");
515
+ if (result.jiraWorklog?._tag === "Failed") {
516
+ // The Jira error body is summarised into the message.
517
+ expect(result.jiraWorklog.message).toContain("400");
518
+ expect(result.jiraWorklog.message).toContain("nope");
519
+ }
520
+ expect(result.worklog).not.toBeNull();
521
+ expect(result.worklog?.ticketKey).toBe("PROJ-123");
522
+ expect(result.worklog?.comment).toBe("done");
523
+ }).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientFailLayer))));
524
+ // Not logged in must report NotLoggedIn (unrecoverable) and expose NO retry params.
525
+ it.effect("stop reports NotLoggedIn and no retry params when there is no token", () => Effect.gen(function* () {
526
+ resetCaptures();
527
+ const svc = yield* TimerService;
528
+ yield* svc.start(makeTicket());
529
+ const result = yield* svc.stop({ comment: "done" });
530
+ expect(result.clockifyLogged).toBe(true);
531
+ expect(result.jiraWorklog?._tag).toBe("NotLoggedIn");
532
+ // NotLoggedIn can't be fixed by retrying, so the retry payload is withheld.
533
+ expect(result.worklog).toBeNull();
534
+ }).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientLayer, MockJiraAuthLoggedOutLayer))));
535
+ // logWorklog reposts in isolation and succeeds once Jira recovers — the retry round-trip.
536
+ it.effect("logWorklog recovers after a transient Jira failure", () => Effect.gen(function* () {
537
+ resetCaptures();
538
+ const svc = yield* TimerService;
539
+ yield* svc.start(makeTicket());
540
+ const result = yield* svc.stop({ comment: "done" });
541
+ expect(result.jiraWorklog?._tag).toBe("Failed");
542
+ expect(result.worklog).not.toBeNull();
543
+ // Jira was flaky on the first POST (during stop) but recovers on retry.
544
+ const retried = yield* svc.logWorklog(result.worklog);
545
+ expect(retried._tag).toBe("Posted");
546
+ }).pipe(Effect.provide(makeTestLayer(mockClockify, makeFlakyHttpClientLayer(1)))));
547
+ // A retry against a still-down Jira reports Failed (with reason) rather than crashing.
548
+ it.effect("logWorklog reports Failed while Jira is still failing", () => Effect.gen(function* () {
549
+ resetCaptures();
550
+ const svc = yield* TimerService;
551
+ const retried = yield* svc.logWorklog({
552
+ ticketKey: "PROJ-123",
553
+ startedAt: new Date("2025-01-01T09:00:00.000Z"),
554
+ durationSeconds: 600,
555
+ comment: "done"
556
+ });
557
+ expect(retried._tag).toBe("Failed");
558
+ if (retried._tag === "Failed")
559
+ expect(retried.message).toContain("400");
560
+ }).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientFailLayer))));
561
+ // logWorklog reports NotLoggedIn when there is no token, so callers can skip retrying.
562
+ it.effect("logWorklog reports NotLoggedIn when there is no token", () => Effect.gen(function* () {
563
+ resetCaptures();
564
+ const svc = yield* TimerService;
565
+ const retried = yield* svc.logWorklog({
566
+ ticketKey: "PROJ-123",
567
+ startedAt: new Date("2025-01-01T09:00:00.000Z"),
568
+ durationSeconds: 600
569
+ });
570
+ expect(retried._tag).toBe("NotLoggedIn");
571
+ }).pipe(Effect.provide(makeTestLayer(mockClockify, MockHttpClientLayer, MockJiraAuthLoggedOutLayer))));
572
+ });
471
573
  describe("start backdating", () => {
472
574
  // A backdated start records the corrected start time on the Clockify entry and state
473
575
  it.effect("uses the provided startedAt instead of now", () => Effect.gen(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"TimerService.test.js","sourceRoot":"","sources":["../../test/TimerService.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TimerService.test.js","sourceRoot":"","sources":["../../test/TimerService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { describe, expect, it } from "@effect/vitest";
2
+ import * as Effect from "effect/Effect";
3
+ import { Command } from "effect/unstable/cli";
4
+ import { HeadlessLayer } from "../src/cli/layers.js";
5
+ import { root } from "../src/cli/root.js";
6
+ const run = (args) => Command.runWith(root, { version: "0.0.0-test" })(args).pipe(Effect.provide(HeadlessLayer), Effect.exit);
7
+ describe("jcf command surface", () => {
8
+ const canonicalCommands = [
9
+ ["timer"],
10
+ ["timer", "start", "--help"],
11
+ ["timer", "stop", "--help"],
12
+ ["timer", "discard", "--help"],
13
+ ["timer", "status", "--help"],
14
+ ["timer", "log", "--help"],
15
+ ["timer", "edit", "--help"],
16
+ ["issue", "list", "--help"],
17
+ ["sync", "reconcile", "--help"]
18
+ ];
19
+ for (const args of canonicalCommands) {
20
+ it.effect(`accepts canonical command: jcf ${args.join(" ")}`, () => Effect.gen(function* () {
21
+ const exit = yield* run(args);
22
+ expect(exit._tag).toBe("Success");
23
+ }));
24
+ }
25
+ const legacyCommands = [
26
+ ["start"],
27
+ ["stop"],
28
+ ["discard"],
29
+ ["status"],
30
+ ["log"],
31
+ ["edit"],
32
+ ["list"],
33
+ ["reconcile"]
34
+ ];
35
+ for (const args of legacyCommands) {
36
+ it.effect(`rejects removed legacy command: jcf ${args.join(" ")}`, () => Effect.gen(function* () {
37
+ const exit = yield* run(args);
38
+ expect(exit._tag).toBe("Failure");
39
+ }));
40
+ }
41
+ });
42
+ //# sourceMappingURL=commandSurface.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandSurface.test.js","sourceRoot":"","sources":["../../test/commandSurface.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEzC,MAAM,GAAG,GAAG,CAAC,IAA2B,EAAE,EAAE,CAC1C,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CACzD,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAC7B,MAAM,CAAC,IAAI,CACZ,CAAA;AAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,MAAM,iBAAiB,GAAG;QACxB,CAAC,OAAO,CAAC;QACT,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;QAC5B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3B,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC;QAC9B,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAC7B,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC;QAC1B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;QAC3B,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC;KACvB,CAAA;IAEV,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,kCAAkC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CACjE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAE7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;IAED,MAAM,cAAc,GAAG;QACrB,CAAC,OAAO,CAAC;QACT,CAAC,MAAM,CAAC;QACR,CAAC,SAAS,CAAC;QACX,CAAC,QAAQ,CAAC;QACV,CAAC,KAAK,CAAC;QACP,CAAC,MAAM,CAAC;QACR,CAAC,MAAM,CAAC;QACR,CAAC,WAAW,CAAC;KACL,CAAA;IAEV,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,EAAE,CAAC,MAAM,CAAC,uCAAuC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CACtE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAE7B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC,CAAC,CAAC,CAAA;IACP,CAAC;AACH,CAAC,CAAC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { describe, expect, it } from "@effect/vitest";
2
2
  import { JiraApiClient } from "@knpkv/jira-api-client";
3
+ import { JiraAuth } from "@knpkv/jira-cli/JiraAuth";
3
4
  import * as Effect from "effect/Effect";
4
5
  import * as Layer from "effect/Layer";
5
6
  import { fetchTicketByKey } from "../src/cli/fetchTicket.js";
@@ -17,6 +18,15 @@ const makeJiraLayer = (resolve) => Layer.succeed(JiraApiClient, {
17
18
  }
18
19
  }
19
20
  });
21
+ // JiraAuth mock — only `isLoggedIn` matters for fetchTicketByKey.
22
+ const makeAuthLayer = (loggedIn) => Layer.succeed(JiraAuth, {
23
+ isLoggedIn: () => Effect.succeed(loggedIn)
24
+ });
25
+ // JiraAuth whose isLoggedIn fails with a platform error (e.g. unreadable token file).
26
+ const makeAuthFailLayer = (message) => Layer.succeed(JiraAuth, {
27
+ isLoggedIn: () => Effect.fail({ message })
28
+ });
29
+ const LoggedIn = makeAuthLayer(true);
20
30
  const issueFixture = {
21
31
  key: "PROJ-7",
22
32
  fields: {
@@ -46,17 +56,34 @@ describe("fetchTicketByKey", () => {
46
56
  expect(result.ticket.assignee).toBe("Dev");
47
57
  expect(result.ticket.type).toBe("Story");
48
58
  expect(result.ticket.labels).toEqual(["backend", "api"]);
49
- }).pipe(Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } })))));
59
+ }).pipe(Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } }))), Effect.provide(LoggedIn)));
50
60
  // A 404 must map to NotFound (genuine "no such issue")
51
61
  it.effect("returns NotFound on a 404", () => Effect.gen(function* () {
52
62
  const result = yield* fetchTicketByKey("PROJ-404");
53
63
  expect(result._tag).toBe("NotFound");
54
- }).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["not found"] }, response: { ok: false, status: 404 } })))));
64
+ }).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["not found"] }, response: { ok: false, status: 404 } }))), Effect.provide(LoggedIn)));
55
65
  // A non-404 failure (auth/network) must map to FetchError, NOT NotFound —
56
66
  // so a 401 is never reported to the user as "Ticket not found".
57
67
  it.effect("returns FetchError on a 401 (distinct from NotFound)", () => Effect.gen(function* () {
58
68
  const result = yield* fetchTicketByKey("PROJ-1");
59
69
  expect(result._tag).toBe("FetchError");
60
- }).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["unauthorized"] }, response: { ok: false, status: 401 } })))));
70
+ }).pipe(Effect.provide(makeJiraLayer(() => ({ error: { errorMessages: ["unauthorized"] }, response: { ok: false, status: 401 } }))), Effect.provide(LoggedIn)));
71
+ // Not logged in must short-circuit to NotLoggedIn — an unauthenticated request
72
+ // 404s on a malformed URL and would otherwise masquerade as "ticket not found".
73
+ it.effect("returns NotLoggedIn when not authenticated", () => Effect.gen(function* () {
74
+ const result = yield* fetchTicketByKey("PROJ-7");
75
+ expect(result._tag).toBe("NotLoggedIn");
76
+ }).pipe(
77
+ // The Jira client would succeed, but the login check must short-circuit first.
78
+ Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } }))), Effect.provide(makeAuthLayer(false))));
79
+ // A genuine platform error reading the token must NOT masquerade as NotLoggedIn —
80
+ // it is a real failure and should route to FetchError (only a clean absent token is NotLoggedIn).
81
+ it.effect("returns FetchError when the login check fails with a platform error", () => Effect.gen(function* () {
82
+ const result = yield* fetchTicketByKey("PROJ-7");
83
+ expect(result._tag).toBe("FetchError");
84
+ if (result._tag !== "FetchError")
85
+ return;
86
+ expect(result.message).toBe("token file unreadable");
87
+ }).pipe(Effect.provide(makeJiraLayer(() => ({ data: issueFixture, response: { ok: true, status: 200 } }))), Effect.provide(makeAuthFailLayer("token file unreadable"))));
61
88
  });
62
89
  //# sourceMappingURL=fetchTicket.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetchTicket.test.js","sourceRoot":"","sources":["../../test/fetchTicket.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetchTicket.test.js","sourceRoot":"","sources":["../../test/fetchTicket.test.ts"],"names":[],"mappings":"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"}