Skip to content

Commit

Permalink
Merge pull request #4622 from luke-h1/feat/add-new-job
Browse files Browse the repository at this point in the history
feat(frontend): add new job
  • Loading branch information
luke-h1 authored Jan 5, 2025
2 parents 0c3098b + 2353c34 commit 266f90a
Show file tree
Hide file tree
Showing 3 changed files with 123 additions and 9 deletions.
48 changes: 40 additions & 8 deletions src/components/ExperienceItem/ExperienceItem.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ const skyBet = companies.find(
company => company.title === 'Sky Betting & Gaming',
) as Company;

const flutter = companies.find(
company => company.title === 'Flutter UKI',
) as Company;

describe('ExperienceItem', () => {
test.each(companies)('should render title for %s', company => {
const { container } = render(<ExperienceItem company={company} />);
Expand All @@ -21,7 +25,7 @@ describe('ExperienceItem', () => {
test('renders all jobs', () => {
render(<ExperienceItem company={hive} />);

const list = screen.getByTestId(`ExperienceItem-list-HiveIT`);
const list = screen.getByTestId('ExperienceItem-list-HiveIT');
const items = within(list).getAllByRole('listitem');

expect(items).toHaveLength(3);
Expand All @@ -30,7 +34,7 @@ describe('ExperienceItem', () => {
test('renders in desc order', () => {
render(<ExperienceItem company={hive} />);

const list = screen.getByTestId(`ExperienceItem-list-HiveIT`);
const list = screen.getByTestId('ExperienceItem-list-HiveIT');
const items = within(list).getAllByRole('listitem');

expect(items[0]).toHaveTextContent('Software Engineer');
Expand All @@ -41,7 +45,7 @@ describe('ExperienceItem', () => {
test('renders correct dates', () => {
render(<ExperienceItem company={hive} />);

const list = screen.getByTestId(`ExperienceItem-list-HiveIT`);
const list = screen.getByTestId('ExperienceItem-list-HiveIT');
const items = within(list).getAllByRole('listitem');

expect(items[0]).toHaveTextContent('May 2022 — Aug 2023');
Expand Down Expand Up @@ -70,25 +74,25 @@ describe('ExperienceItem', () => {

expect(
screen.getByTestId(`HiveIT-${toCamelCase(job.title)}-description`),
).toHaveTextContent(job.description);
).toHaveTextContent(job.description as string);
});
});

describe('SkyBet', () => {
test('renders all jobs', () => {
render(<ExperienceItem company={skyBet} />);

const list = screen.getByTestId(`ExperienceItem-list-SkyBetting&Gaming`);
const list = screen.getByTestId('ExperienceItem-list-SkyBetting&Gaming');
const items = within(list).getAllByRole('listitem');
expect(items).toHaveLength(1);

expect(items[0]).toHaveTextContent('Software Engineer');
});

test('renders correct dates', () => {
test('renders correct date range', () => {
render(<ExperienceItem company={skyBet} />);

const list = screen.getByTestId(`ExperienceItem-list-SkyBetting&Gaming`);
const list = screen.getByTestId('ExperienceItem-list-SkyBetting&Gaming');
const items = within(list).getAllByRole('listitem');

expect(items[0]).toHaveTextContent('Aug 2023 — Nov 2024');
Expand All @@ -107,7 +111,35 @@ describe('ExperienceItem', () => {

expect(
screen.getByTestId('SkyBetting&Gaming-SoftwareEngineer-description'),
).toHaveTextContent(skyBet.jobs[0].description);
).toHaveTextContent(skyBet.jobs[0].description as string);
});
});

describe('Flutter', () => {
test('renders all jobs', () => {
render(<ExperienceItem company={flutter} />);
const list = screen.getByTestId('ExperienceItem-list-FlutterUKI');
const items = within(list).getAllByRole('listitem');
expect(items).toHaveLength(1);

expect(items[0]).toHaveTextContent('Software Developer');
});

test('renders correct date range', () => {
render(<ExperienceItem company={flutter} />);

const list = screen.getByTestId('ExperienceItem-list-FlutterUKI');
const items = within(list).getAllByRole('listitem');

expect(items[0]).toHaveTextContent('Jan 2025 — Now');
});

test('renders description', () => {
render(<ExperienceItem company={flutter} />);

expect(
screen.getByTestId('FlutterUKI-SoftwareDeveloper-description'),
).toHaveTextContent('No description yet');
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -231,3 +231,73 @@ exports[`ExperienceItem should render title for { id: 2, title: 'Sky Betting & G
</div>
</div>
`;
exports[`ExperienceItem should render title for { id: 3, title: 'Flutter UKI', jobs: [Array] } 1`] = `
<div>
<script
nonce=""
>
((e,s,n,m,o,l,u,h)=&gt;{let a=document.documentElement,v=["light","dark"];function p(c){(Array.isArray(e)?e:[e]).forEach(y=&gt;{let k=y==="class",S=k&&l?o.map(f=&gt;l[f]||f):o;k?(a.classList.remove(...S),a.classList.add(c)):a.setAttribute(y,c)}),C(c)}function C(c){h&&v.includes(c)&&(a.style.colorScheme=c)}function d(){return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}if(m)p(m);else try{let c=localStorage.getItem(s)||n,y=u&&c==="system"?d():c;p(y)}catch(c){}})("class","theme","system",null,["light","dark"],null,true,true)
</script>
<div
class=""
>
<h2
class="Heading_root__xkw1cf0 Heading_tracking_h2__xkw1cf2 sprinkles_fontSize_md_xs__1fx8prsj8 sprinkles_color_foreground__1fx8prsm5"
>
Flutter UKI
</h2>
<ul
class="List_list__3nqhft0"
data-testid="ExperienceItem-list-FlutterUKI"
>
<li
class="List_item__3nqhft1"
>
<div
class="Grid_container__1otflmc0 sprinkles_columnGap_xxxl_xs__1fx8prsfo sprinkles_rowGap_md_xs__1fx8prse4 sprinkles_alignItems_baseline_xs__1fx8prs2s"
>
<div
class="sprinkles_gridColumnStart_1_xs__1fx8prsjw sprinkles_gridColumnEnd_-1_xs__1fx8prskw sprinkles_gridColumnEnd_1_md__1fx8prski"
>
<h3
class="Heading_root__xkw1cf0 Heading_tracking_h3__xkw1cf3 sprinkles_fontSize_md_xs__1fx8prsj8 sprinkles_color_foregroundNeutral__1fx8prsm6"
>
Software Developer
</h3>
<p
class="sprinkles_maxWidth_prose_xs__1fx8prsfw sprinkles_fontSize_sm_xs__1fx8prsj4 sprinkles_fontWeight_normal__1fx8prsn0 sprinkles_color_foregroundNeutral__1fx8prsm6"
>
Leeds, UK
</p>
</div>
<div
class="sprinkles_gridColumnStart_1_xs__1fx8prsjw sprinkles_gridColumnStart_2_md__1fx8prsk2 sprinkles_gridColumnEnd_-1_xs__1fx8prskw sprinkles_gridColumnEnd_4_md__1fx8prsku"
>
<p
class="sprinkles_maxWidth_prose_xs__1fx8prsfw sprinkles_fontSize_md_xs__1fx8prsj8 sprinkles_fontWeight_normal__1fx8prsn0 sprinkles_color_foreground__1fx8prsm5"
data-testid="FlutterUKI-SoftwareDeveloper-description"
>
No description yet
</p>
</div>
<div
class="sprinkles_gridColumnStart_1_xs__1fx8prsjw sprinkles_gridColumnStart_4_md__1fx8prska sprinkles_gridColumnEnd_-1_xs__1fx8prskw sprinkles_gridColumnEnd_4_md__1fx8prsku"
>
<p
class="sprinkles_maxWidth_prose_xs__1fx8prsfw sprinkles_fontSize_sm_xs__1fx8prsj4 sprinkles_fontWeight_normal__1fx8prsn0 sprinkles_color_foregroundNeutral__1fx8prsm6"
data-testid="FlutterUKI-SoftwareDeveloper-date-range"
>
Jan 2025
Now
<br />
</p>
</div>
</div>
</li>
</ul>
</div>
</div>
`;
14 changes: 13 additions & 1 deletion src/config/jobs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ interface Job {
location: string;
startDate: string;
endDate?: string;
description: string;
description?: string;
}

export interface Company {
Expand Down Expand Up @@ -58,5 +58,17 @@ const companies: Company[] = [
},
],
},
{
id: 3,
title: 'Flutter UKI',
jobs: [
{
id: 5,
title: 'Software Developer',
location: 'Leeds, UK',
startDate: '06/01/2025',
},
],
},
];
export default companies;

0 comments on commit 266f90a

Please sign in to comment.