def test_get_all_requests_lender(self): add_category("Eletrodomésticos") add_request( "Jogo da vida", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um jogo da vida emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, lender="*****@*****.**", ) add_request( "War", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um war emprestado para jogar com meus amigos neste fim de semana!", "*****@*****.**", 1, lender="*****@*****.**", ) with self.client: response = self.client.get( f"{REQUEST_BASE_URL}[email protected]") data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn("success", data["status"]) self.assertEqual(len(data["data"]["requests"]), 1)
def test_get_requests_filtered_by_category(self): add_category("Jogos") add_request( "Jogo da vida", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um jogo da vida emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) add_request( "War", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um war emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) with self.client: response = self.client.get( f"{REQUEST_BASE_URL}/available/1?usermail={FAKE_EMAIL}") data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn("success", data["status"]) self.assertIn("Jogo da vida", data["data"]["requests"][0]["productname"]) self.assertIn("War", data["data"]["requests"][1]["productname"])
def test_edit_request(self): add_category("Eletrodomésticos") request = add_request( "Uno", FAKE_STARTDATE, FAKE_ENDDATE, FAKE_DESCRIPTION, FAKE_EMAIL, 1, ) with self.client: response = self.client.put( f"{REQUEST_BASE_URL}/{request.requestid}", data=json.dumps({ "productname": "Uno", "startdate": FAKE_STARTDATE, "enddate": FAKE_ENDDATE, "description": FAKE_DESCRIPTION, "requester": FAKE_EMAIL, "productcategoryid": 1, "lender": None, }), content_type="application/json", ) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 201) self.assertIn("Update completed!", data["data"]["update_status"]) self.assertIn("success", data["status"])
def test_not_available_requests(self): add_category("Eletrodomésticos") add_request( "Banco Imobiliario", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um banco imobiliário emprestado para jogar com meus amigos neste fim de semana!", "*****@*****.**", 1, ) add_request( "Jogo da vida", FAKE_STARTDATE, "2021-01-30 00:00:00.000", "Queria um jogo da vida emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) add_request( "War", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um war emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, lender="*****@*****.**", ) with self.client: response = self.client.get( f"{REQUEST_BASE_URL}/available?usermail={FAKE_EMAIL}") data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 404) self.assertIn("fail", data["status"])
def test_get_all_requests(self): add_category("Eletrodomésticos") add_request( "Banco Imobiliario", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um banco imobiliário emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) add_request( "Jogo da vida", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um jogo da vida emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) add_request( "War", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um war emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) with self.client: response = self.client.get(REQUEST_BASE_URL) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn("success", data["status"]) self.assertEqual(len(data["data"]["requests"]), 3)
def test_get_single_category_invalid_id(self): add_category('category-one') add_category('category-two') response = self.client.get('/categories/jianxin') data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload.') self.assertEqual(response.status_code, 400)
def test_delete_category_without_user(self): add_category('category-one') add_category('category-two') response = self.client.delete('/categories/jianxin') data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertIn('Invalid payload. Please log in again.', data['message']) self.assertEqual(response.status_code, 403)
def test_get_all_categories(self): add_category('category-one') add_category('category-two') response = self.client.get('/categories') data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(len(data['data']), 2) self.assertEqual(data['data'][0]['name'], 'category-one')
def test_get_single_category(self): add_category('category-one') add_category('category-two') response = self.client.get('/categories/1') data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(data['data']['id'], 1) self.assertEqual(data['data']['name'], 'category-one') self.assertEqual(response.status_code, 200)
def test_delete_category_incorrect_id(self): add_category('category-one') add_category('category-two') token = get_token(self.client) response = self.client.delete( '/categories/3', headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertIn('Invalid payload.', data['message']) self.assertEqual(response.status_code, 404)
def test_delete_category(self): add_category('category-one') add_category('category-two') token = get_token(self.client) response = self.client.delete( '/categories/1', headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'success') self.assertIn('category-one is already deleted.', data['message']) self.assertEqual(response.status_code, 202)
def test_add_article_no_category(self): add_category('default') token = get_token(self.client) response = self.client.post( '/articles', json={ 'title': 'test title', 'body': 'test body' }, headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(data['message'], 'article: test title was added.') self.assertEqual(response.status_code, 201)
def test_add_article_no_body(self): add_category('default') token = get_token(self.client) response = self.client.post( '/articles', json={ 'title': 'test title', 'category': 1 }, headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload.') self.assertEqual(response.status_code, 400)
def test_add_article_without_user(self): add_category('default') response = self.client.post( '/articles', json={ 'title': 'test title', 'body': 'test body.', 'category': 1 }, ) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload. Please log in again.') self.assertEqual(response.status_code, 403)
def test_udpate_single_article_no_title(self): cate1 = add_category('default') cate2 = add_category('test') article = add_article('title', 'body', cate1) token = get_token(self.client) response = self.client.put( '/articles', json={ 'aid': f'{article.id}', 'body': 'new body', 'category': f'{cate2.id}' }, headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload.') self.assertEqual(response.status_code, 400)
def test_get_single_article_invalid_id(self): cate1 = add_category('default') add_article('test title', 'test body', cate1) response = self.client.get(f'/articles/jianxin') data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid path params.') self.assertEqual(response.status_code, 404)
def test_update_single_article_without_user(self): cate1 = add_category('default') cate2 = add_category('test') article = add_article('title', 'body', cate1) response = self.client.put( '/articles', json={ 'aid': f'{article.id}', 'title': 'new title', 'body': 'new body', 'category': f'{cate2.id}' }, ) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload. Please log in again.') self.assertEqual(response.status_code, 403)
def test_delete_single_article_without_user(self): cate = add_category('default') article = add_article('default title', 'default body', cate) response = self.client.delete(f'/articles/{article.id}', ) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid payload. Please log in again.') self.assertEqual(response.status_code, 403)
def test_finalize_request(self): add_category("Eletrodomésticos") product = add_request( "Banco Imobiliario", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um banco imobiliário emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) with self.client: response = self.client.patch( f"{REQUEST_BASE_URL}/{product.requestid}/finalize", content_type="application/json", ) data = json.loads(response.data.decode()) self.assertEqual(data["request"]["finalized"], True)
def test_update_single_article_no_category(self): add_category('default') cate2 = add_category('test') article = add_article('title', 'body', cate2) token = get_token(self.client) response = self.client.put( '/articles', json={ 'aid': f'{article.id}', 'title': 'new title', 'body': 'new body', }, headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(data['message'], f'{article.id}: article is already updated.') self.assertEqual(response.status_code, 200) self.assertEqual(Article.query.get(article.id).category.id, 1)
def test_delete_request(self): add_category("Eletrodomésticos") request = add_request( "Uno", FAKE_STARTDATE, FAKE_ENDDATE, FAKE_DESCRIPTION, FAKE_EMAIL, 1, ) with self.client: response = self.client.delete( f"{REQUEST_BASE_URL}/{request.requestid}") data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn("Request deleted!", data["data"]["message"]) self.assertIn("success", data["status"])
def test_delete_single_article_incorrect_id(self): cate = add_category('default') article = add_article('default title', 'default body', cate) token = get_token(self.client, admin=True) response = self.client.delete( f'/articles/{article.id + 1}', headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'fail') self.assertEqual(data['message'], 'Invalid path params.') self.assertEqual(response.status_code, 404)
def test_update_lender_request(self): add_category("Eletrodomésticos") product = add_request( "Banco Imobiliario", FAKE_STARTDATE, FAKE_ENDDATE, "Queria um banco imobiliário emprestado para jogar com meus amigos neste fim de semana!", FAKE_REQUESTER, 1, ) with self.client: response = self.client.patch( f"{REQUEST_BASE_URL}/{product.requestid}", data=json.dumps({"lender": "*****@*****.**"}), content_type="application/json", ) data = json.loads(response.data.decode()) self.assertIn("*****@*****.**", data["request"]["lender"])
def test_delete_single_article(self): cate = add_category('default') article = add_article('default title', 'default body', cate) token = get_token(self.client, admin=True) response = self.client.delete( f'/articles/{article.id}', headers={'Authorization': f'Bearer {token}'}) data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(data['message'], f'{article.id}: {article.title} is already deleted.') self.assertEqual(response.status_code, 202)
def test_create_request(self): add_category("Eletrodomésticos") with self.client: response = self.client.post( REQUEST_BASE_URL, data=json.dumps({ "productname": "Batedeira", "startdate": FAKE_STARTDATE, "enddate": FAKE_ENDDATE, "description": "Preciso de uma batedeira para fazer meu bolo de aniversario.", "requester": "*****@*****.**", "productcategoryid": 1, "lender": None, }), content_type="application/json", ) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 201) self.assertIn("success", data["status"])
def test_get_single_article(self): cate1 = add_category('default') article = add_article('test title', 'test body', cate1) response = self.client.get(f'/articles/{article.id}') data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(data['data']['id'], article.id) self.assertEqual(data['data']['title'], article.title) self.assertEqual(data['data']['body'], article.body) self.assertTrue(data['data']['timestamp']) self.assertEqual(data['data']['category'][0], cate1.id) self.assertEqual(data['data']['category'][1], cate1.name) self.assertEqual(response.status_code, 200)
def test_get_all_article(self): cate1 = add_category('default') cate2 = add_category('test') add_article('default title', 'default body', cate1) add_article('test title', 'test body', cate2) response = self.client.get('/articles') data = response.get_json() self.assertEqual(data['status'], 'success') self.assertEqual(len(data['data']), 2) self.assertEqual(data['data'][0]['title'], 'default title') self.assertEqual(data['data'][0]['body'], 'default body') self.assertIsInstance(data['data'][0]['id'], int) self.assertIsInstance(data['data'][0]['category'][0], int) self.assertEqual(data['data'][0]['category'][1], 'default') self.assertTrue(data['data'][0]['timestamp']) self.assertEqual(data['data'][1]['title'], 'test title') self.assertEqual(data['data'][1]['body'], 'test body') self.assertIsInstance(data['data'][1]['id'], int) self.assertIsInstance(data['data'][1]['category'][0], int) self.assertEqual(data['data'][1]['category'][1], 'test') self.assertTrue(data['data'][1]['timestamp']) self.assertEqual(response.status_code, 200)
def test_get_all_category(self): add_category("Eletrodomésticos") add_category("Livros e revistas") add_category("Eletrônicos") with self.client: response = self.client.get(PRODUCT_CATEGORY_BASE_URL) data = json.loads(response.data.decode()) self.assertEqual(response.status_code, 200) self.assertIn("success", data["status"]) self.assertIn("Eletrodomésticos", data["data"]["categories"][0]["name"]) self.assertIn("Livros e revistas", data["data"]["categories"][1]["name"]) self.assertIn("Eletrônicos", data["data"]["categories"][2]["name"])