Exemple #1
0
    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)
Exemple #2
0
    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"])
Exemple #3
0
    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"])
Exemple #4
0
    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"])
Exemple #5
0
    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)
Exemple #6
0
 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)
Exemple #7
0
 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)
Exemple #8
0
 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')
Exemple #9
0
 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)
Exemple #10
0
 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)
Exemple #11
0
 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)
Exemple #12
0
 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)
Exemple #13
0
 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)
Exemple #14
0
 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)
Exemple #15
0
 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)
Exemple #16
0
 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)
Exemple #17
0
 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)
Exemple #18
0
 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)
Exemple #19
0
    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)
Exemple #20
0
 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)
Exemple #21
0
    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"])
Exemple #22
0
 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)
Exemple #23
0
    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"])
Exemple #24
0
 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)
Exemple #25
0
    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"])
Exemple #26
0
 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)
Exemple #27
0
    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)
Exemple #28
0
    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"])