Skip to content

Commit

Permalink
Merge pull request #24 from alexlee-dev/v1.0.0
Browse files Browse the repository at this point in the history
📦 v1.0.0
  • Loading branch information
Alex Lee authored Jul 19, 2020
2 parents 4aadfed + 64402d8 commit be26490
Show file tree
Hide file tree
Showing 22 changed files with 1,247 additions and 107 deletions.
29 changes: 29 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module.exports = {
env: {
browser: true,
es2020: true,
node: true,
},
extends: [
"eslint:recommended",
"plugin:react/recommended",
"plugin:@typescript-eslint/recommended",
],
parser: "@typescript-eslint/parser",
parserOptions: {
ecmaFeatures: {
jsx: true,
},
ecmaVersion: 11,
sourceType: "module",
},
plugins: ["react", "@typescript-eslint"],
rules: {
"no-async-promise-executor": 1,
},
settings: {
react: {
version: "detect",
},
},
};
26 changes: 26 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.0.0] - 2020-07-19

### 🚀 Initial Release

### Added

- `prettier`
- `eslint`
- Stubs for `optionsPanel.spec.js`
- Stubs for `search.spec.js`
- Test for `<Details />`

### Changed

- `<LoadingIndicator />` color better reflects theme
- The `<Header />` is now clickable, and will send you to the Search page
- `<JobCard />` won't display alert if image is missing

### Removed

### Fixed

- ESLint Errors
- Text in "How To Apply" section spilling over the container if a long url was present
- Clicking "Full Time" actually does filter by "Full Time" positions now. GitHub Jobs API for `full_time` does not work.

## [0.26.0] - 2020-07-17

### 🔧 Tweaks that Make Em Squeaks
Expand Down
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,27 @@

## 📝 Table of Contents

- [About](#about)
- [Built Using](#built_using)
- [Authors](#authors)

## 📝 About <a name = "about"></a>

This application was originally created as a submission to a [DevChallenges](https://devchallenges.io/challenges) challenge. The [challenge](https://devchallenges.io/challenges/TtUjDt19eIHxNQ4n5jps) was to build an application to complete the following prompt

> Challenge: Create a job search using an API. Use Front-end libraries like React or Vue. Don’t look at the existing solution. Fulfill user stories below:
- [x] User story: I can see a list of jobs in a city by default
- [x] User story: I can search for jobs with a given keyword
- [x] User story: I can search for jobs with a city name, zip code or other location
- [x] User story: I can select one option from at least 4 pre-defined options
- [x] User story: I can search for a full-time job only
- [x] User story: I can see a list of jobs with their logo, company name, location, and posted time.
- [x] User story: When I select a job, I can see job descriptions and how to apply like the given design.
- [x] User story: When I am on the job details page, I can go back to the search page
- [x] User story (optional): I can see a list of jobs in the closest city from my location by default
- [x] User story (optional): I can see jobs in different pages, 5 items each page

## ⛏️ Built Using <a name = "built_using"></a>

### Dependencies
Expand All @@ -42,7 +60,10 @@
- [css-loader](https://github.com/webpack-contrib/css-loader) - CSS Loader.
- [cypress](https://www.cypress.io/) - Fast, easy and reliable testing for anything that runs in a browser.
- [env-cmd](https://github.com/toddbluhm/env-cmd) - Setting the environment from a file.
- [eslint](https://eslint.org/) - Find and fix problems in your JavaScript code.
- [eslint-plugin-react](https://github.com/yannickcr/eslint-plugin-react) - React specific linting rules for ESLint.
- [html-webpack-plugin](https://github.com/jantimon/html-webpack-plugin) - Simplifies creation of HTML files to serve your webpack bundles.
- [prettier](https://prettier.io/) - Prettier is an opinionated code formatter.
- [rimraf](https://github.com/isaacs/rimraf) - A `rm -rf` util for nodejs.
- [source-map-loader](https://webpack.js.org/loaders/source-map-loader/) - Source map loader.
- [start-server-and-test](https://github.com/bahmutov/start-server-and-test) - Starts server, waits for URL, then runs test command; when the tests end, shuts down server.
Expand Down
93 changes: 93 additions & 0 deletions cypress/fixtures/jobsSearch1.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
[
{
"id": 1,
"type": "Contract",
"url": "http://nbcnews.com/id/justo.html?ante=tellus&vestibulum=in&ante=sagittis&ipsum=dui&primis=vel&in=nisl&faucibus=duis&orci=ac&luctus=nibh&et=fusce&ultrices=lacus&posuere=purus&cubilia=aliquet&curae=at&duis=feugiat&faucibus=non&accumsan=pretium&odio=quis&curabitur=lectus&convallis=suspendisse&duis=potenti&consequat=in&dui=eleifend&nec=quam&nisi=a&volutpat=odio&eleifend=in&donec=hac&ut=habitasse&dolor=platea&morbi=dictumst&vel=maecenas&lectus=ut&in=massa&quam=quis&fringilla=augue&rhoncus=luctus&mauris=tincidunt&enim=nulla&leo=mollis",
"created_at": "2009-12-26T17:13:11Z",
"company": "Anderson LLC",
"company_url": "https://deliciousdays.com/consequat/lectus/in.png?nisl=nibh&aenean=fusce&lectus=lacus&pellentesque=purus&eget=aliquet&nunc=at&donec=feugiat&quis=non&orci=pretium&eget=quis&orci=lectus&vehicula=suspendisse&condimentum=potenti&curabitur=in&in=eleifend&libero=quam&ut=a&massa=odio&volutpat=in&convallis=hac&morbi=habitasse&odio=platea&odio=dictumst&elementum=maecenas&eu=ut&interdum=massa&eu=quis&tincidunt=augue&in=luctus&leo=tincidunt&maecenas=nulla&pulvinar=mollis&lobortis=molestie&est=lorem&phasellus=quisque&sit=ut",
"location": "Pennsylvania",
"title": "Analog Circuit Design manager",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/155x185.png/cc0000/ffffff"
},
{
"id": 2,
"type": "Contract",
"url": "https://posterous.com/et/ultrices/posuere/cubilia/curae/duis.json?nunc=non&purus=velit&phasellus=donec&in=diam&felis=neque&donec=vestibulum&semper=eget&sapien=vulputate&a=ut&libero=ultrices&nam=vel&dui=augue&proin=vestibulum&leo=ante&odio=ipsum&porttitor=primis&id=in&consequat=faucibus&in=orci&consequat=luctus&ut=et&nulla=ultrices&sed=posuere&accumsan=cubilia&felis=curae&ut=donec&at=pharetra&dolor=magna&quis=vestibulum&odio=aliquet&consequat=ultrices&varius=erat",
"created_at": "2019-10-01T13:09:54Z",
"company": "Herman-Kuhic",
"company_url": "http://weather.com/eleifend/donec/ut/dolor/morbi.json?tellus=augue&nisi=aliquam&eu=erat&orci=volutpat&mauris=in&lacinia=congue&sapien=etiam&quis=justo&libero=etiam&nullam=pretium&sit=iaculis&amet=justo&turpis=in&elementum=hac&ligula=habitasse&vehicula=platea&consequat=dictumst&morbi=etiam&a=faucibus&ipsum=cursus&integer=urna&a=ut&nibh=tellus&in=nulla&quis=ut&justo=erat&maecenas=id&rhoncus=mauris&aliquam=vulputate&lacus=elementum&morbi=nullam&quis=varius&tortor=nulla&id=facilisi&nulla=cras&ultrices=non&aliquet=velit&maecenas=nec&leo=nisi&odio=vulputate&condimentum=nonummy&id=maecenas&luctus=tincidunt&nec=lacus&molestie=at&sed=velit&justo=vivamus&pellentesque=vel&viverra=nulla&pede=eget&ac=eros&diam=elementum&cras=pellentesque&pellentesque=quisque&volutpat=porta&dui=volutpat&maecenas=erat&tristique=quisque&est=erat&et=eros&tempus=viverra&semper=eget&est=congue&quam=eget&pharetra=semper&magna=rutrum&ac=nulla&consequat=nunc&metus=purus&sapien=phasellus&ut=in&nunc=felis&vestibulum=donec&ante=semper&ipsum=sapien&primis=a&in=libero&faucibus=nam&orci=dui&luctus=proin&et=leo&ultrices=odio&posuere=porttitor&cubilia=id&curae=consequat&mauris=in&viverra=consequat&diam=ut",
"location": "California",
"title": "Operator",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/185x224.jpg/cc0000/ffffff"
},
{
"id": 3,
"type": "Contract",
"url": "https://craigslist.org/luctus/rutrum.png?vestibulum=elit&rutrum=proin&rutrum=risus&neque=praesent&aenean=lectus&auctor=vestibulum&gravida=quam&sem=sapien&praesent=varius&id=ut&massa=blandit&id=non&nisl=interdum&venenatis=in&lacinia=ante&aenean=vestibulum&sit=ante&amet=ipsum&justo=primis&morbi=in&ut=faucibus&odio=orci&cras=luctus&mi=et&pede=ultrices&malesuada=posuere&in=cubilia&imperdiet=curae&et=duis&commodo=faucibus&vulputate=accumsan&justo=odio&in=curabitur&blandit=convallis&ultrices=duis&enim=consequat&lorem=dui&ipsum=nec&dolor=nisi&sit=volutpat&amet=eleifend&consectetuer=donec&adipiscing=ut&elit=dolor&proin=morbi&interdum=vel&mauris=lectus&non=in&ligula=quam&pellentesque=fringilla&ultrices=rhoncus&phasellus=mauris&id=enim&sapien=leo&in=rhoncus&sapien=sed&iaculis=vestibulum&congue=sit&vivamus=amet&metus=cursus&arcu=id&adipiscing=turpis&molestie=integer&hendrerit=aliquet&at=massa&vulputate=id&vitae=lobortis&nisl=convallis&aenean=tortor&lectus=risus&pellentesque=dapibus&eget=augue&nunc=vel&donec=accumsan&quis=tellus&orci=nisi&eget=eu&orci=orci&vehicula=mauris&condimentum=lacinia&curabitur=sapien&in=quis&libero=libero&ut=nullam&massa=sit&volutpat=amet&convallis=turpis&morbi=elementum&odio=ligula&odio=vehicula&elementum=consequat&eu=morbi&interdum=a",
"created_at": "2013-03-11T15:13:15Z",
"company": "Howe-Becker",
"company_url": "https://boston.com/orci/luctus/et/ultrices.jpg?condimentum=semper&neque=est&sapien=quam&placerat=pharetra&ante=magna&nulla=ac&justo=consequat&aliquam=metus&quis=sapien&turpis=ut&eget=nunc&elit=vestibulum&sodales=ante&scelerisque=ipsum&mauris=primis&sit=in&amet=faucibus&eros=orci&suspendisse=luctus&accumsan=et&tortor=ultrices&quis=posuere&turpis=cubilia&sed=curae&ante=mauris&vivamus=viverra&tortor=diam&duis=vitae&mattis=quam&egestas=suspendisse&metus=potenti&aenean=nullam&fermentum=porttitor&donec=lacus&ut=at&mauris=turpis&eget=donec&massa=posuere&tempor=metus&convallis=vitae&nulla=ipsum&neque=aliquam&libero=non&convallis=mauris&eget=morbi&eleifend=non&luctus=lectus&ultricies=aliquam&eu=sit&nibh=amet&quisque=diam&id=in&justo=magna&sit=bibendum&amet=imperdiet&sapien=nullam&dignissim=orci&vestibulum=pede&vestibulum=venenatis&ante=non&ipsum=sodales&primis=sed&in=tincidunt&faucibus=eu&orci=felis&luctus=fusce&et=posuere&ultrices=felis&posuere=sed&cubilia=lacus&curae=morbi&nulla=sem&dapibus=mauris&dolor=laoreet&vel=ut&est=rhoncus&donec=aliquet&odio=pulvinar&justo=sed&sollicitudin=nisl&ut=nunc&suscipit=rhoncus&a=dui&feugiat=vel&et=sem&eros=sed&vestibulum=sagittis&ac=nam&est=congue&lacinia=risus&nisi=semper&venenatis=porta&tristique=volutpat&fusce=quam",
"location": "Oregon",
"title": "Software Test Engineer I",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/111x130.bmp/5fa2dd/ffffff"
},
{
"id": 4,
"type": "Full Time",
"url": "http://usa.gov/at/diam/nam/tristique/tortor/eu/pede.jsp?in=turpis&blandit=adipiscing&ultrices=lorem&enim=vitae&lorem=mattis&ipsum=nibh&dolor=ligula&sit=nec&amet=sem&consectetuer=duis&adipiscing=aliquam&elit=convallis&proin=nunc",
"created_at": "2000-12-20T22:53:44Z",
"company": "Wolff LLC",
"company_url": "http://time.com/congue.jsp?pretium=turpis&iaculis=enim&justo=blandit&in=mi&hac=in&habitasse=porttitor&platea=pede&dictumst=justo&etiam=eu&faucibus=massa&cursus=donec&urna=dapibus&ut=duis&tellus=at&nulla=velit&ut=eu&erat=est&id=congue",
"location": "Texas",
"title": "Staff Scientist",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/122x234.bmp/5fa2dd/ffffff"
},
{
"id": 5,
"type": "Contract",
"url": "http://yelp.com/lectus/aliquam/sit/amet/diam.png?orci=ante&mauris=vel&lacinia=ipsum&sapien=praesent&quis=blandit&libero=lacinia&nullam=erat&sit=vestibulum&amet=sed&turpis=magna&elementum=at&ligula=nunc&vehicula=commodo&consequat=placerat&morbi=praesent&a=blandit&ipsum=nam&integer=nulla&a=integer&nibh=pede&in=justo&quis=lacinia&justo=eget&maecenas=tincidunt&rhoncus=eget&aliquam=tempus&lacus=vel&morbi=pede&quis=morbi&tortor=porttitor&id=lorem&nulla=id&ultrices=ligula&aliquet=suspendisse&maecenas=ornare&leo=consequat&odio=lectus&condimentum=in&id=est&luctus=risus&nec=auctor&molestie=sed&sed=tristique&justo=in&pellentesque=tempus&viverra=sit&pede=amet&ac=sem&diam=fusce&cras=consequat&pellentesque=nulla&volutpat=nisl&dui=nunc&maecenas=nisl&tristique=duis&est=bibendum&et=felis&tempus=sed&semper=interdum&est=venenatis&quam=turpis&pharetra=enim&magna=blandit&ac=mi&consequat=in&metus=porttitor&sapien=pede&ut=justo&nunc=eu&vestibulum=massa&ante=donec&ipsum=dapibus&primis=duis&in=at&faucibus=velit&orci=eu&luctus=est&et=congue&ultrices=elementum&posuere=in&cubilia=hac&curae=habitasse",
"created_at": "2000-08-30T22:51:20Z",
"company": "Senger-Gerhold",
"company_url": "http://yellowbook.com/nisl/nunc/rhoncus/dui.html?ipsum=cras&integer=non&a=velit&nibh=nec&in=nisi&quis=vulputate&justo=nonummy&maecenas=maecenas&rhoncus=tincidunt&aliquam=lacus&lacus=at&morbi=velit&quis=vivamus&tortor=vel&id=nulla&nulla=eget&ultrices=eros&aliquet=elementum&maecenas=pellentesque&leo=quisque&odio=porta&condimentum=volutpat&id=erat&luctus=quisque&nec=erat&molestie=eros&sed=viverra&justo=eget&pellentesque=congue&viverra=eget&pede=semper&ac=rutrum&diam=nulla&cras=nunc&pellentesque=purus&volutpat=phasellus&dui=in&maecenas=felis&tristique=donec&est=semper&et=sapien&tempus=a&semper=libero&est=nam&quam=dui&pharetra=proin&magna=leo&ac=odio&consequat=porttitor&metus=id&sapien=consequat&ut=in&nunc=consequat&vestibulum=ut&ante=nulla&ipsum=sed&primis=accumsan&in=felis&faucibus=ut&orci=at&luctus=dolor&et=quis&ultrices=odio&posuere=consequat&cubilia=varius&curae=integer&mauris=ac&viverra=leo&diam=pellentesque&vitae=ultrices",
"location": "Texas",
"title": "Environmental Tech",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/162x190.png/cc0000/ffffff"
},
{
"id": 6,
"type": "Contract",
"url": "http://shinystat.com/ultricies/eu/nibh/quisque/id/justo.xml?at=nisl&turpis=duis&a=bibendum&pede=felis&posuere=sed&nonummy=interdum&integer=venenatis&non=turpis&velit=enim&donec=blandit&diam=mi&neque=in&vestibulum=porttitor&eget=pede&vulputate=justo&ut=eu&ultrices=massa&vel=donec&augue=dapibus&vestibulum=duis&ante=at&ipsum=velit&primis=eu&in=est&faucibus=congue&orci=elementum&luctus=in&et=hac&ultrices=habitasse&posuere=platea&cubilia=dictumst&curae=morbi&donec=vestibulum&pharetra=velit&magna=id&vestibulum=pretium&aliquet=iaculis&ultrices=diam&erat=erat&tortor=fermentum",
"created_at": "2017-12-17T08:44:18Z",
"company": "Zulauf, Reynolds and Green",
"company_url": "http://cyberchimps.com/fusce/congue/diam/id.json?aliquam=nulla&non=tempus&mauris=vivamus&morbi=in&non=felis&lectus=eu&aliquam=sapien&sit=cursus&amet=vestibulum&diam=proin&in=eu&magna=mi&bibendum=nulla&imperdiet=ac&nullam=enim&orci=in&pede=tempor&venenatis=turpis&non=nec&sodales=euismod&sed=scelerisque&tincidunt=quam&eu=turpis&felis=adipiscing&fusce=lorem&posuere=vitae&felis=mattis&sed=nibh&lacus=ligula&morbi=nec&sem=sem&mauris=duis&laoreet=aliquam&ut=convallis&rhoncus=nunc&aliquet=proin&pulvinar=at&sed=turpis&nisl=a&nunc=pede&rhoncus=posuere&dui=nonummy&vel=integer&sem=non&sed=velit&sagittis=donec&nam=diam&congue=neque&risus=vestibulum&semper=eget&porta=vulputate&volutpat=ut&quam=ultrices&pede=vel&lobortis=augue&ligula=vestibulum&sit=ante&amet=ipsum&eleifend=primis&pede=in&libero=faucibus&quis=orci&orci=luctus&nullam=et&molestie=ultrices&nibh=posuere",
"location": "New York",
"title": "Director of Sales",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/225x233.jpg/5fa2dd/ffffff"
},
{
"id": 7,
"type": "Full Time",
"url": "http://reverbnation.com/luctus.js?viverra=eu&diam=magna&vitae=vulputate&quam=luctus&suspendisse=cum&potenti=sociis&nullam=natoque&porttitor=penatibus&lacus=et&at=magnis&turpis=dis&donec=parturient&posuere=montes&metus=nascetur&vitae=ridiculus&ipsum=mus&aliquam=vivamus&non=vestibulum&mauris=sagittis&morbi=sapien&non=cum&lectus=sociis&aliquam=natoque&sit=penatibus&amet=et&diam=magnis&in=dis&magna=parturient&bibendum=montes&imperdiet=nascetur&nullam=ridiculus&orci=mus&pede=etiam&venenatis=vel&non=augue&sodales=vestibulum&sed=rutrum&tincidunt=rutrum&eu=neque&felis=aenean&fusce=auctor&posuere=gravida&felis=sem&sed=praesent&lacus=id&morbi=massa&sem=id&mauris=nisl&laoreet=venenatis&ut=lacinia&rhoncus=aenean&aliquet=sit&pulvinar=amet&sed=justo&nisl=morbi&nunc=ut&rhoncus=odio&dui=cras&vel=mi",
"created_at": "2007-09-30T09:39:32Z",
"company": "VonRueden and Sons",
"company_url": "http://wix.com/ante/vestibulum/ante/ipsum/primis/in.aspx?vivamus=habitasse&tortor=platea&duis=dictumst&mattis=etiam&egestas=faucibus&metus=cursus&aenean=urna&fermentum=ut&donec=tellus&ut=nulla&mauris=ut&eget=erat&massa=id&tempor=mauris&convallis=vulputate&nulla=elementum&neque=nullam&libero=varius&convallis=nulla&eget=facilisi&eleifend=cras&luctus=non&ultricies=velit&eu=nec&nibh=nisi&quisque=vulputate&id=nonummy&justo=maecenas&sit=tincidunt&amet=lacus&sapien=at&dignissim=velit&vestibulum=vivamus&vestibulum=vel&ante=nulla&ipsum=eget&primis=eros&in=elementum&faucibus=pellentesque&orci=quisque&luctus=porta&et=volutpat&ultrices=erat&posuere=quisque&cubilia=erat&curae=eros&nulla=viverra&dapibus=eget&dolor=congue&vel=eget&est=semper&donec=rutrum&odio=nulla&justo=nunc&sollicitudin=purus&ut=phasellus&suscipit=in&a=felis&feugiat=donec&et=semper&eros=sapien&vestibulum=a&ac=libero&est=nam&lacinia=dui&nisi=proin&venenatis=leo&tristique=odio&fusce=porttitor",
"location": "California",
"title": "Legal Assistant",
"description": "",
"how_to_apply": "",
"company_logo": "http://dummyimage.com/186x179.png/5fa2dd/ffffff"
}
]
53 changes: 53 additions & 0 deletions cypress/integration/details.spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/// <reference types="cypress" />

context("Search", () => {
beforeEach(() => {
cy.fixture("jobs50").then((jobsJson) => {
cy.server();
cy.route({
method: "GET",
url: "/jobs",
status: 200,
response: jobsJson,
delay: 1000,
});
});
cy.visit("http://localhost:3000");
cy.wait(1000);
cy.get(
"#app > div.search__container > div.jobs__container > div:nth-child(1) > div.jobcard__container__left > div.jobcard__container__middle > a > p"
).click();
});

it("Should display '<Details />' correctly", () => {
cy.get(
"#app > div.details__container > div.details__side__container > div > span"
).should("have.text", "How to Apply");
cy.get(
"#app > div.details__container > div.details__main__container > div.details__container__title > div.details__container__title__inner > h2"
).should("have.text", "Cloud DevOps Engineer");
cy.get(
"#app > div.details__container > div.details__main__container > div.details__container__title > div.details__container__title__inner > p"
).should("have.text", "Full Time");
cy.get(
"#app > div.details__container > div.details__main__container > div.details__container__company > div.details__company__right > a"
).should("have.text", "Cool Company");
});

it("Should be able to return to '<Search />'", () => {
cy.get("#search").should("not.be.visible");

cy.get(
"#app > div.details__container > div.details__side__container > a > span"
).click();
cy.get("#search").should("be.visible");

cy.get(
"#app > div.search__container > div.jobs__container > div:nth-child(1) > div.jobcard__container__left > div.jobcard__container__middle > a > p"
).click();
cy.get("#search").should("not.be.visible");

cy.get("header").click();
cy.get("#search").should("be.visible");
});
});
Loading

0 comments on commit be26490

Please sign in to comment.