File tree 8 files changed +101
-3
lines changed 8 files changed +101
-3
lines changed Original file line number Diff line number Diff line change
8000
1
1
from flask_restful import Resource , reqparse
2
- from flask_jwt import jwt_required
3
2
from models .item import ItemModel
4
3
5
4
@@ -10,7 +9,6 @@ class Item(Resource):
10
9
required = True ,
11
10
help = "This field cannot be left blank!" )
12
11
13
- @jwt_required ()
14
12
def get (self , name ):
15
13
item = ItemModel .find_by_name (name )
16
14
if item :
Original file line number Diff line number Diff line change 3
3
from flask import Flask
4
4
from flask_restful import Api
5
5
6
- from resources .item import Item , ItemList
6
+ from resources .item import Item
7
7
8
8
app = Flask (__name__ )
9
9
Original file line number Diff line number Diff line change
1
+ from flask_restful import Resource , reqparse
2
+ from models .item import ItemModel
3
+
4
+
5
+ class Item (Resource ):
6
+ parser = reqparse .RequestParser ()
7
+ parser .add_argument ('price' ,
8
+ type = float ,
9
+ required = True ,
10
+ help = "This field cannot be left blank!" )
11
+
12
+ def get (self , name ):
13
+ item = ItemModel .find_by_name (name )
14
+ if item :
15
+ return item .json ()
16
+ return {'message' : 'Item not found' }, 404
17
+
18
+ def post (self , name ):
19
+ if ItemModel .find_by_name (name ):
20
+ return {'message' : "An item with name '{}' already exists." .format (name )}, 400
21
+
22
+ data = Item .parser .parse_args ()
23
+
24
+ item = ItemModel (name , ** data )
25
+
26
+ try :
27
+ item .save_to_db ()
28
+ except :
29
+ return {"message" : "An error occurred inserting the item." }, 500
30
+
31
+ return item .json (), 201
32
+
33
+ def delete (self , name ):
34
+ item = ItemModel .find_by_name (name )
35
+ if item :
36
+ item .delete_from_db ()
37
+
38
+ return {'message' : 'Item deleted' }
39
+
40
+ def put (self , name ):
41
+ data = Item .parser .parse_args ()
42
+
43
+ item = ItemModel .find_by_name (name )
44
+
45
+ if item is None :
46
+ item = ItemModel (name , ** data )
47
+ else :
48
+ item .price = data ['price' ]
49
+
50
+ item .save_to_db ()
51
+
52
+ return item .json ()
Original file line number Diff line number Diff line change
1
+ """
2
+ BaseTest
3
+
4
+ This class should be the parent class to each non-unit test.
5
+ It allows for instantiation of the database dynamically
6
+ and makes sure that it is a new, blank database each time.
7
+ """
8
+
9
+ from unittest import TestCase
10
+ from app import app
11
+ from db import db
12
+
13
+
14
+ class BaseTest (TestCase ):
15
+ def setUp (self ):
16
+ # Make sure database exists
17
+ app .config ['SQLALCHEMY_DATABASE_URI' ] = 'sqlite:///'
18
+ with app .app_context ():
19
+ db .init_app (app )
20
+ db .create_all ()
21
+ # Get a test client
22
+ self .app = app .test_client ()
23
+ self .app_context = app .app_context
24
+
25
+ def tearDown (self ):
26
+ # Database is blank
27
+ with app .app_context ():
28
+ db .session .remove ()
29
+ db .drop_all ()
Original file line number Diff line number Diff line change
1
+ from models .item import ItemModel
2
+ from tests .base_test import BaseTest
3
+
4
+
5
+ class ItemTest (BaseTest ):
6
+ def test_crud (self ):
7
+ with self .app_context ():
8
+ item = ItemModel ('test' , 19.99 )
9
+
10
+ self .assertIsNone (ItemModel .find_by_name ('test' ),
11
+ "Found an item with name {}, but expected not to." .format (item .name ))
12
+
13
+ item .save_to_db ()
14
+
15
+ self .assertIsNotNone (ItemModel .find_by_name ('test' ))
16
+
17
+ item .delete_from_db ()
18
+
19
+ self .assertIsNone (ItemModel .find_by_name ('test' ))
You can’t perform that action at this time.
0 commit comments