def test_it_returns_conflict_error_if_new_technology_name_exist(client): python_data = { 'name': 'Python', 'description': 'Object oriented programming language', } elixir_data = { 'name': 'Elixir', 'description': 'Functional programming language', } create_resp = client.post( '/technologies', json=python_data, headers=auth_header_with_all_permissions ) create_resp_data = create_resp.get_json() client.post( '/technologies', json=elixir_data, headers=auth_header_with_all_permissions ) edited_data = { 'name': 'Elixir', } edited_resp = client.patch( create_resp_data['href'], json=edited_data, headers=auth_header_with_all_permissions ) edited_resp_data = edited_resp.get_json() assert '409' in edited_resp.status assert edited_resp_data['error'] == 409 assert 'Entity already exists' in edited_resp_data['message']
def test_it_indexes_authors(client): first_author = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', } second_author = { 'name': 'Gal', 'surname': 'Anonim', 'email': '*****@*****.**', } client.post( '/authors', json=first_author, headers=auth_header_with_all_permissions ) client.post( '/authors', json=second_author, headers=auth_header_with_all_permissions ) resp = client.get('/authors') resp_data = resp.get_json()['data'] assert '200' in resp.status assert len(resp_data) == 2
def test_it_creates_author_with_technology(client): technology_data = { 'name': 'Python', 'description': 'Programming language', } resp = client.post( '/technologies', json=technology_data, headers=auth_header_with_all_permissions ).get_json() technology = client.get(resp['href']).get_json()['data'] data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'description': 'Pasionate programmer.', 'technologies': [technology['id']], } resp = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ) authors = Author.query.filter(Author.surname == 'Niesiołowski').all() assert '201' in resp.status assert len(authors) == 1 assert authors[0].technologies[0].name == 'Python'
def test_id_delete_technology(client): python_data = { 'name': 'Python', 'description': 'Object oriented programming language', } elixir_data = { 'name': 'Elixir', 'description': 'Functional programming language', } client.post( '/technologies', json=python_data, headers=auth_header_with_all_permissions ) create_resp = client.post( '/technologies', json=elixir_data, headers=auth_header_with_all_permissions ) create_resp_data = create_resp.get_json() resp = client.delete( create_resp_data['href'], headers=auth_header_with_all_permissions ) assert '204' in resp.status assert len(Technology.query.all()) == 1
def test_it_indexes_reviewers(client): technology_id = create_technology_and_return_id(client, 'Python') first_reviewer = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'technologies': [technology_id], } second_reviewer = { 'name': 'Gal', 'surname': 'Anonim', 'email': '*****@*****.**', 'technologies': [technology_id], } client.post( '/reviewers', json=first_reviewer, headers=auth_header_with_all_permissions ) client.post( '/reviewers', json=second_reviewer, headers=auth_header_with_all_permissions ) resp = client.get('/reviewers') resp_data = resp.get_json()['data'] assert '200' in resp.status assert len(resp_data) == 2
def test_it_gets_author(client): technology_data = { 'name': 'Python', 'description': 'Programming language.', } create_technology_resp_data = client.post( '/technologies', json=technology_data, headers=auth_header_with_all_permissions ).get_json() technology = client.get( create_technology_resp_data['href'] ).get_json()['data'] data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'description': 'Pasionate programmer.', 'technologies': [technology['id']], } create_author_resp_data = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ).get_json() resp = client.get(create_author_resp_data['href']) author = resp.get_json()['data'] assert '200' in resp.status assert author['name'] == 'Paweł' assert author['surname'] == 'Niesiołowski' assert author['email'] == '*****@*****.**' assert author['description'] == 'Pasionate programmer.' assert len(author['technologies']) == 1 assert author['technologies'][0]['name'] == 'Python' assert author['technologies'][0]['description'] == 'Programming language.'
def test_it_edits_reviewer(client): python_id = create_technology_and_return_id(client, 'Python') elixir_id = create_technology_and_return_id(client, 'Elixir') new_reviewer_data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'description': 'Experienced programmer.', 'technologies': [python_id], } reviewer_href = client.post( '/reviewers', json=new_reviewer_data, headers=auth_header_with_all_permissions ).get_json()['href'] edited_reviewer_data = { 'description': 'Very experienced programmer.', 'technologies': [python_id, elixir_id], } resp = client.patch( reviewer_href, json=edited_reviewer_data, headers=auth_header_with_all_permissions ) reviewers = Reviewer.query.filter( Reviewer.description == 'Very experienced programmer.' ).all() assert '204' in resp.status assert len(reviewers) == 1 assert len(reviewers[0].technologies) == 2
def test_it_edits_given_authors_data(client): data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', } author_href = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ).get_json()['href'] edited_data = { 'email': '*****@*****.**', } resp = client.patch( author_href, json=edited_data, headers=auth_header_with_all_permissions ) authors = Author.query.filter(Author.email == '*****@*****.**').all() assert '204' in resp.status assert len(authors) == 1 author = authors[0] assert author.name == 'Paweł' assert author.surname == 'Niesiołowski'
def test_it_changes_technologies_for_author(client): python_data = { 'name': 'Python', 'description': 'Programming language', } elixir_data = { 'name': 'Elixir', 'description': 'Programming language', } python_resp = client.post( '/technologies', json=python_data, headers=auth_header_with_all_permissions ).get_json() elixir_resp = client.post( '/technologies', json=elixir_data, headers=auth_header_with_all_permissions ).get_json() python_technology = client.get(python_resp['href']).get_json()['data'] elixir_technology = client.get(elixir_resp['href']).get_json()['data'] data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'technologies': [python_technology['id']], } author_href = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ).get_json()['href'] edited_data = { 'technologies': [elixir_technology['id']], } resp = client.patch( author_href, json=edited_data, headers=auth_header_with_all_permissions ) authors = Author.query.filter(Author.surname == 'Niesiołowski').all() assert '204' in resp.status assert len(authors) == 1 assert len(authors[0].technologies) == 1 assert authors[0].technologies[0].name == 'Elixir'
def test_index_technologies(client): python_data = { 'name': 'Python', 'description': 'Object oriented programming language', } elixir_data = { 'name': 'Elixir', 'description': 'Functional programming language', } client.post( '/technologies', json=python_data, headers=auth_header_with_all_permissions ) client.post( '/technologies', json=elixir_data, headers=auth_header_with_all_permissions ) resp = client.get('/technologies') resp_data = resp.get_json() assert '200' in resp.status assert len(resp_data['data']) == 2
def test_it_returns_validation_error_when_technology_data_is_invalid(client): data = { 'name': '', 'description': 'Description for empty name' } resp = client.post( '/technologies', json=data, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() assert '422' in resp.status assert 422 == resp_data['error'] assert 'Validation error' in resp_data['message']
def test_it_returns_conflict_error_when_technology_name_already_exists(client): data = { 'name': 'Python', 'description': '''An interpreted, high-level, general-purpose programming language''', } data_with_already_added_name = { 'name': 'Python', 'description': 'Programming language', } client.post( '/technologies', json=data, headers=auth_header_with_all_permissions ) resp = client.post( '/technologies', json=data_with_already_added_name, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() assert '409' in resp.status assert 409 == resp_data['error'] assert 'Entity already exists' in resp_data['message']
def test_it_creates_author_without_technologies_and_projects(client): data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'description': 'Pasionate programmer.', } resp = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() authors = Author.query.filter(Author.surname == 'Niesiołowski').all() assert '201' in resp.status assert len(authors) == 1 assert resp_data['href'] == f'/authors/{authors[0].id}'
def test_it_creates_technology(client): data = { 'name': 'Python', 'description': '''An interpreted, high-level, general-purpose programming language''', } resp = client.post( '/technologies', json=data, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() assert '201' in resp.status technologies = Technology.query.filter(Technology.name == 'Python').all() assert len(technologies) == 1 assert resp_data['href'] == f'/technologies/{technologies[0].id}'
def test_it_returns_404_if_author_data_is_invalid(client): data = { 'name': 'Paweł', 'surname': '', 'email': '*****@*****.**', 'description': 'Pasionate programmer.', } resp = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() authors = Author.query.filter(Author.surname == 'Niesiołowski').all() assert '422' in resp.status assert len(authors) == 0 assert resp_data['error'] == 422 assert 'Validation error' in resp_data['message']
def test_it_gets_technology(client): description = '''An interpreted, high-level, general-purpose programming language''' data = { 'name': 'Python', 'description': description } post_resp = client.post( '/technologies', json=data, headers=auth_header_with_all_permissions ) post_resp_data = post_resp.get_json() get_resp = client.get(post_resp_data['href']) get_resp_data = get_resp.get_json() assert '200' in get_resp.status assert get_resp_data['data']['name'] == 'Python' assert get_resp_data['data']['description'] == description
def test_it_creates_reviewer(client): technology_id = create_technology_and_return_id(client, 'Python') reviewer_data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'technologies': [technology_id], } resp = client.post( '/reviewers', json=reviewer_data, headers=auth_header_with_all_permissions ) reviewer_href = resp.get_json()['href'] reviewers = Reviewer.query.filter(Reviewer.surname == 'Niesiołowski').all() assert '201' in resp.status assert len(reviewers) == 1 assert reviewer_href == f'/reviewers/{reviewers[0].id}'
def test_it_returns_404_if_technology_name_is_empty_string(client): data = { 'name': 'Python', 'description': 'Object oriented programming language', } href = client.post( '/technologies', json=data, headers=auth_header_with_all_permissions ).get_json()['href'] resp = client.patch( href, json={'name': ''}, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() assert '422' in resp.status assert resp_data['error'] == 422 assert 'Validation error' in resp_data['message']
def test_it_returns_422_if_reviewer_does_not_have_any_technology(client): technology_id = create_technology_and_return_id(client, 'Python') reviewer_data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'technologies': '', } resp = client.post( '/reviewers', json=reviewer_data, headers=auth_header_with_all_permissions ) resp_data = resp.get_json() reviewers = Reviewer.query.filter(Reviewer.surname == 'Niesiołowski').all() assert '422' in resp.status assert len(reviewers) == 0 assert resp_data['error'] == 422 assert 'Validation error' in resp_data['message']
def test_it_deletes_author(client): technology_id = create_technology_and_return_id(client, 'Python') data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'technologies': [technology_id], } created_author_data = client.post( '/authors', json=data, headers=auth_header_with_all_permissions ).get_json() authors_before_delete = Author.query.all() resp = client.delete( created_author_data['href'], headers=auth_header_with_all_permissions ) authors_after_delete = Author.query.all() assert '204' in resp.status assert len(authors_before_delete) == 1 assert len(authors_after_delete) == 0
def test_it_gets_reviewer(client): technology_id = create_technology_and_return_id(client, 'Python') reviewer_data = { 'name': 'Paweł', 'surname': 'Niesiołowski', 'email': '*****@*****.**', 'technologies': [technology_id], } reviewer_href = client.post( '/reviewers', json=reviewer_data, headers=auth_header_with_all_permissions ).get_json()['href'] resp = client.get(reviewer_href) resp_data = resp.get_json()['data'] assert '200' in resp.status assert resp_data['name'] == 'Paweł' assert resp_data['surname'] == 'Niesiołowski' assert resp_data['email'] == '*****@*****.**' assert len(resp_data['technologies']) == 1 assert resp_data['technologies'][0]['name'] == 'Python'
def test_it_edits_technology(client): data = { 'name': 'Python 3', 'description': 'Programming language', } create_resp = client.post( '/technologies', json=data, headers=auth_header_with_all_permissions ) create_resp_data = create_resp.get_json() get_resp = client.get(create_resp_data['href']) get_resp_data = get_resp.get_json() edited_data = { 'name': 'Python', } edit_resp = client.patch( create_resp_data['href'], json=edited_data, headers=auth_header_with_all_permissions ) assert '204' in edit_resp.status technologies = Technology.query.filter(Technology.name == 'Python').all() assert len(technologies) == 1