Skip to content

Commit 84da5c8

Browse files
committed
fix: make test coverage 100 and fix test case
1 parent dd85381 commit 84da5c8

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

src/index.test.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,19 @@ describe("referenceResolver", () => {
9090

9191

9292
describe("refs with hash fragment / internal reference component", () => {
93-
it("works with file paths", async () => {
94-
expect(await referenceResolver("./src/test-obj.json#/type", {})).toBe("string");
93+
describe("files", () => {
94+
it("works in simple case", async () => {
95+
expect(await referenceResolver("./src/test-obj.json#/type", {})).toBe("string");
96+
});
97+
98+
it("errors when the json pointer is invalid", async () => {
99+
expect.assertions(1);
100+
try {
101+
await referenceResolver("./src/test-obj.json#balony", {});
102+
} catch (e) {
103+
expect(e).toBeInstanceOf(InvalidJsonPointerRefError);
104+
}
105+
});
95106
});
96107

97108
describe("urls", () => {
@@ -107,7 +118,7 @@ describe("refs with hash fragment / internal reference component", () => {
107118
try {
108119
await referenceResolver("https://meta.open-rpc.org/#type", {});
109120
} catch (e) {
110-
expect(e).toBeInstanceOf(InvalidRemoteURLError);
121+
expect(e).toBeInstanceOf(InvalidJsonPointerRefError);
111122
}
112123
});
113124

@@ -116,7 +127,7 @@ describe("refs with hash fragment / internal reference component", () => {
116127
try {
117128
await referenceResolver("https://meta.open-rpc.org/#properties/#openrpc", {});
118129
} catch (e) {
119-
expect(e).toBeInstanceOf(InvalidRemoteURLError);
130+
expect(e).toBeInstanceOf(InvalidJsonPointerRefError);
120131
}
121132
});
122133
});

src/reference-resolver.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,6 @@ export default (fetch: any, fs: any) => {
136136
}
137137
}
138138

139-
// copy hash fragment from the filepath / url
140139
const hashFragmentSplit = ref.split("#");
141140
let hashFragment;
142141
if (hashFragmentSplit.length > 1) {
@@ -149,7 +148,6 @@ export default (fetch: any, fs: any) => {
149148
}
150149

151150
if (await fileExistsAndReadable(hashlessRef) === true) {
152-
// pull off the hash fragment first
153151
const fileContents = await readFile(hashlessRef);
154152
let reffedSchema;
155153
try {
@@ -172,22 +170,23 @@ export default (fetch: any, fs: any) => {
172170
throw new InvalidFileSystemPathError(ref);
173171
}
174172

173+
let result;
175174
try {
176-
// leave the hash fragment on
177-
// but evaluate the result after
178-
const result = await fetch(ref).then((r: any) => r.json());
179-
if (hashFragment) {
180-
try {
181-
const pointer = Ptr.parse(hashFragment);
182-
return Promise.resolve(pointer.eval(result));
183-
} catch (e) {
184-
throw new InvalidJsonPointerRefError({ $ref: ref });
185-
}
186-
}
187-
return result;
175+
result = await fetch(ref).then((r: any) => r.json());
188176
} catch (e) {
189177
throw new InvalidRemoteURLError(ref);
190178
}
179+
180+
if (hashFragment) {
181+
try {
182+
const pointer = Ptr.parse(hashFragment);
183+
return Promise.resolve(pointer.eval(result));
184+
} catch (e) {
185+
throw new InvalidJsonPointerRefError({ $ref: ref });
186+
}
187+
}
188+
189+
return result;
191190
};
192191

193192
return resolveReference;

0 commit comments

Comments
 (0)