Skip to content

Commit

Permalink
removed try/catch
Browse files Browse the repository at this point in the history
  • Loading branch information
vishvamsinh28 committed Oct 23, 2024
1 parent 6804d6e commit fd0bb07
Showing 1 changed file with 14 additions and 66 deletions.
80 changes: 14 additions & 66 deletions tests/build-rss.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,8 @@ describe('rssFeed', () => {
it('should generate RSS feed and write to file', async () => {
jest.doMock('../config/posts.json', () => mockRssData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()
} catch (err) {
error = err;
}
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()

expect(error).toBeUndefined();
const filePath = path.join(__dirname, '..', 'public', outputPath);
expect(fs.existsSync(filePath)).toBe(true);
const fileContent = fs.readFileSync(filePath, 'utf8');
Expand All @@ -46,19 +40,14 @@ describe('rssFeed', () => {
it('should prioritize featured posts over non-featured ones', async () => {
jest.doMock('../config/posts.json', () => mockRssData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()
} catch (err) {
error = err
}
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()


const filePath = path.join(__dirname, '..', 'public', outputPath);
const fileContent = fs.readFileSync(filePath, 'utf8');

const itemTitles = fileContent.match(/<title>(.*?)<\/title>/g);

expect(error).toBeUndefined();
expect(itemTitles[1]).toContain('Test Post 1');
expect(itemTitles[2]).toContain('Another Featured Post');
expect(itemTitles[3]).toContain('Non-Featured Post 1');
Expand All @@ -67,19 +56,13 @@ describe('rssFeed', () => {
it('should sort posts by date in descending order', async () => {
jest.doMock('../config/posts.json', () => mockRssData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()
} catch (err) {
error = err
}
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()

const filePath = path.join(__dirname, '..', 'public', outputPath);
const fileContent = fs.readFileSync(filePath, 'utf8');

const itemTitles = fileContent.match(/<title>(.*?)<\/title>/g);

expect(error).toBeUndefined();
expect(itemTitles[1]).toContain('Test Post 1');
expect(itemTitles[2]).toContain('Another Featured Post');
expect(itemTitles[3]).toContain('Non-Featured Post 1');
Expand All @@ -90,17 +73,11 @@ describe('rssFeed', () => {
it('should set correct enclosure type based on image extension', async () => {
jest.doMock('../config/posts.json', () => mockRssData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()
} catch (err) {
error = err
}
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()

const filePath = path.join(__dirname, '..', 'public', outputPath);
const fileContent = fs.readFileSync(filePath, 'utf8');

expect(error).toBeUndefined();
expect(fileContent).toContain('<enclosure url="https://www.asyncapi.com/img/test-cover.png"');
expect(fileContent).toContain('type="image/png"');
expect(fileContent).toContain('<enclosure url="https://www.asyncapi.com/img/test-cover.svg"');
Expand All @@ -114,42 +91,25 @@ describe('rssFeed', () => {

const invalidOutputPath = "invalid/path";

let error;
try {
await expect(rssFeed(type, title, desc, invalidOutputPath)).rejects.toThrow(/ENOENT|EACCES/);
} catch (err) {
error = err;
expect(error.message).toMatch(/ENOENT|EACCES/);
}
await expect(rssFeed(type, title, desc, invalidOutputPath)).rejects.toThrow(/ENOENT|EACCES/);

});

it('should throw an error when posts.json is malformed', async () => {
jest.doMock('../config/posts.json', () => {
return { invalidKey: [] };
}, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).rejects.toThrow('Failed to generate RSS feed');
} catch (err) {
error = err;
expect(error).toBeDefined();
expect(error.message).toContain('Failed to generate RSS feed');
}
await expect(rssFeed(type, title, desc, outputPath)).rejects.toThrow('Failed to generate RSS feed');

});

it('should handle empty posts array', async () => {
const emptyMockData = { blog: [] };
jest.doMock('../config/posts.json', () => emptyMockData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()
} catch (err) {
error = err;
}
await expect(rssFeed(type, title, desc, outputPath)).resolves.toBeUndefined()

expect(error).toBeUndefined();
const filePath = path.join(__dirname, '..', 'public', outputPath);
const fileContent = fs.readFileSync(filePath, 'utf8');
expect(fileContent).toContain('<rss version="2.0"');
Expand All @@ -160,27 +120,15 @@ describe('rssFeed', () => {

jest.doMock('../config/posts.json', () => incompletePostMockData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).rejects.toThrow('Missing required fields');
} catch (err) {
error = err;
expect(error).toBeDefined();
expect(error.message).toContain('Missing required fields');
}
await expect(rssFeed(type, title, desc, outputPath)).rejects.toThrow('Missing required fields');

});

it('should throw an error when a post is missing a date field during sorting', async () => {

jest.doMock('../config/posts.json', () => missingDateMockData, { virtual: true });

let error;
try {
await expect(rssFeed(type, title, desc, outputPath)).rejects.toThrow('Missing date in post data');
} catch (err) {
error = err;
expect(error).toBeDefined();
expect(error.message).toContain('Missing date in post data');
}
await expect(rssFeed(type, title, desc, outputPath)).rejects.toThrow('Missing date in post data');

});
});

0 comments on commit fd0bb07

Please sign in to comment.