Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ workbox*

/node_modules

yarn.lock

.tmp
.idea
.idea/
Expand Down
28 changes: 28 additions & 0 deletions packages/client/components/molecules/OfferTile/OfferTile.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { render, screen } from '@testing-library/react';
import React from 'react';
import { OfferTile } from './OfferTile';
import { addCommasToNumber } from '../../../lib/utils/functions';

it('display correct information about offer', () => {
const fakeOffer = {
id: '1',
title: 'title',
city: 'city',
company_name: 'company',
salary: 1000,
};

render(
<OfferTile
title={fakeOffer.title}
city={fakeOffer.city}
company_name={fakeOffer.company_name}
salary={fakeOffer.salary}
key={fakeOffer.id}
id={fakeOffer.id}
/>,
);
expect(screen.getByText(fakeOffer.title)).toBeInTheDocument();
expect(screen.getByText(fakeOffer.city)).toBeInTheDocument();
expect(screen.getByText(fakeOffer.company_name)).toBeInTheDocument();
});
64 changes: 64 additions & 0 deletions packages/client/components/organisms/LoginForm/LoginForm.test.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import { render, screen, act } from '@testing-library/react';
import { LoginForm } from './LoginForm';
import userEvent from '@testing-library/user-event';

describe('email validation', () => {
const mockedLogInFunc = jest.spyOn(auth, 'signInWithEmailAndPassword');
it('if email field is empty error message should be displayed', async () => {
render(<LoginForm />);
await act(async () => {
userEvent.click(screen.getByRole('button', { name: /sign in/i }));
});
expect(screen.getByText(/email is required/i)).toBeInTheDocument();
expect(mockedLogInFunc).not.toHaveBeenCalled();
});

it("if email field doesn't contain valid email error message should be displayed", async () => {
render(<LoginForm />);
userEvent.type(screen.getByLabelText(/email/i), 'email');
await act(async () => {
userEvent.click(screen.getByRole('button', { name: /sign in/i }));
});
expect(screen.getByText(/mail must be a valid email/i)).toBeInTheDocument();
expect(mockedLogInFunc).not.toHaveBeenCalled();
});
});

describe('password validation', () => {
const mockedLogInFunc = jest.spyOn(auth, 'signInWithEmailAndPassword');
it('if password field is empty error message should be displayed', async () => {
render(<LoginForm />);
await act(async () => {
userEvent.click(screen.getByRole('button', { name: /sign in/i }));
});
expect(screen.getByText(/password is required/i)).toBeInTheDocument();
expect(mockedLogInFunc).not.toHaveBeenCalled();
});

it("if password field doesn't contain valid password error message should be displayed", async () => {
render(<LoginForm />);
userEvent.type(screen.getByLabelText(/password/i), 'password');
await act(async () => {
userEvent.click(screen.getByRole('button', { name: /sign in/i }));
});
expect(
screen.getByText(
/password must contain an uppercase letter, a special character, a number and must be at least 8 characters long/i,
),
).toBeInTheDocument();
expect(mockedLogInFunc).not.toHaveBeenCalled();
});
});

test('when email and password are valid callback to log in should be called', async () => {
const mockedLogInFunc = jest.spyOn(auth, 'signInWithEmailAndPassword');
render(<LoginForm />);
userEvent.type(screen.getByLabelText(/email/i), 'email@email.com');
userEvent.type(screen.getByLabelText(/password/i), 'Te$$t1ng');
await act(async () => {
userEvent.click(screen.getByRole('button', { name: /sign in/i }));
});

expect(mockedLogInFunc).toHaveBeenCalled();
expect(mockedLogInFunc).toHaveBeenCalledWith('email@email.com', 'Te$$t1ng');
});
43 changes: 43 additions & 0 deletions packages/server/fly.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# fly.toml file generated for offers-server on 2021-10-24T21:36:36+02:00

app = "offers-server"

kill_signal = "SIGINT"
kill_timeout = 5
processes = []

[build]
builder = "heroku/buildpacks:20"

[env]
PORT = "8080"

[experimental]
allowed_public_ports = []
auto_rollback = true

[[services]]
http_checks = []
internal_port = 8080
processes = ["app"]
protocol = "tcp"
script_checks = []

[services.concurrency]
hard_limit = 25
soft_limit = 20
type = "connections"

[[services.ports]]
handlers = ["http"]
port = 80

[[services.ports]]
handlers = ["tls", "http"]
port = 443

[[services.tcp_checks]]
grace_period = "1s"
interval = "15s"
restart_limit = 0
timeout = "2s"
Loading