def test_count_amenity(self):
     """test count with an argument"""
     test_len = len(storage.all("Amenity"))
     a = Amenity(name="test_amenity_2")
     a.save()
     self.assertEqual(test_len + 1, storage.count("Amenity"))
     storage.delete(a)
     self.assertEqual(test_len, storage.count("Amenity"))
 def test_delete_amenity_wrong(self):
     """the id does not match a amenity"""
     amenity_args = {"name": "quokka", "id": "QO"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.delete('{}/amenities/{}/'.format(self.path, "noID"),
                          follow_redirects=True)
     self.assertEqual(rv.status_code, 404)
     storage.delete(amenity)
 def test_save(self):
     test_len = len(storage.all())
     a = Amenity(name="another")
     a.save()
     self.assertEqual(len(storage.all()), test_len + 1)
     b = State(name="california")
     self.assertNotEqual(len(storage.all()), test_len + 2)
     b.save()
     self.assertEqual(len(storage.all()), test_len + 2)
 def test_new(self):
     # note: we cannot assume order of test is order written
     test_len = len(storage.all())
     # self.assertEqual(len(storage.all()), self.test_len)
     self.model.save()
     self.assertEqual(len(storage.all()), test_len + 1)
     a = Amenity(name="thing")
     a.save()
     self.assertEqual(len(storage.all()), test_len + 2)
 def test_link_bad_amenity_place(self):
     """test linking a non existing amenity to a place"""
     amenity_args = {"name": "bear", "id": "BA"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.post('{}/places/{}/amenities/{}/'.format(
         self.path, self.place.id, "noID"),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 404)
     storage.delete(amenity)
 def test_count(self):
     """test count all"""
     test_len = len(storage.all())
     a = Amenity(name="test_amenity")
     a.save()
     self.assertEqual(test_len + 1, storage.count())
     b = State(name="State test count")
     b.save()
     self.assertEqual(test_len + 2, storage.count())
     storage.delete(b)
     self.assertEqual(test_len + 1, storage.count())
 def test_delete_amenity_not_in_place(self):
     """test remove an amenity from a place without this amenity"""
     amenity_args = {"name": "bear", "id": "BA"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     # self.place.save()
     rv = self.app.delete('{}/places/{}/amenities/{}/'.format(
         self.path, self.place.id, amenity.id),
                          follow_redirects=True)
     self.assertEqual(rv.status_code, 404)
     storage.delete(amenity)
 def test_update_amenity_bad_id(self):
     """test update with no matching id"""
     amenity_args = {"name": "quokka", "id": "QO"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.put('{}/amenities/{}/'.format(self.path, "noID"),
                       content_type="application/json",
                       data=json.dumps({"id": "Z"}),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 404)
     storage.delete(amenity)
 def test_update_amenity_bad_json(self):
     """test update with ill formed json"""
     amenity_args = {"name": "quokka", "id": "QO2"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.put('{}/amenities/{}/'.format(self.path, amenity.id),
                       content_type="application/json",
                       data={"id": "Z"},
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 400)
     self.assertEqual(rv.get_data(), b"Not a JSON")
     storage.delete(amenity)
示例#10
0
 def test_delete_amenity(self):
     """test delete a amenity"""
     amenity_args = {"name": "quokka", "id": "QO"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.delete('{}/amenities/{}/'.format(
         self.path, amenity_args["id"]),
                                follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertEqual(json_format, {})
     self.assertIsNone(storage.get("Amenity", amenity_args["id"]))
示例#11
0
 def test_view_one_amenity(self):
     """test retrieving one amenity"""
     amenity_args = {"name": "quokka", "id": "QO2"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.get('{}/amenities/{}'.format(
         self.path, amenity_args["id"]), follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertEqual(json_format.get("name"), amenity_args["name"])
     self.assertEqual(json_format.get("id"), amenity_args["id"])
     storage.delete(amenity)
示例#12
0
def post_amenity(amenity_id=None):
    """state"""
    try:
        willy = request.get_json()
    except:
        abort(400, 'Not a JSON')
    if willy is None:
        abort(400, 'Not a JSON')
    elif "name" not in willy.keys():
        abort(400, 'Missing name')
    else:
        new_amenity = Amenity(name=willy['name'])
        new_amenity.save()
        return jsonify(new_amenity.to_dict()), 201
示例#13
0
def post_amenities():
    """
    Creates a Amenity
    """
    content = request.get_json()
    if content is None:
        return (jsonify({"error": "Not a JSON"}), 400)
    name = content.get("name")
    if name is None:
        return (jsonify({"error": "Missing name"}), 400)
    new_amenity = Amenity(**content)
    new_amenity.save()

    return (jsonify(new_amenity.to_dict()), 201)
示例#14
0
    def post(self):
        """Creates an Amenity
        """
        req_data = request.get_json()

        if not req_data:
            abort(400, 'Not a JSON')

        if 'name' not in req_data:
            abort(400, 'Missing name')

        amenity = Amenity(**req_data)
        amenity.save()
        return jsonify(amenity.to_dict()), 201
示例#15
0
    def test_file(self):
        """ test storege """

        self.assertTrue(os.path.exists("file.json"))
        x = 0
        u1 = Amenity()
        u1.save()
        models.storage.reload()
        d = models.storage.all()
        for k in d.keys():
            if u1.id in k:
                x = 1

        self.assertEqual(x, 1)
示例#16
0
def post_amenity():
    """
    Creates an amenity
    """
    if not request.get_json():
        abort(400, description="Not a JSON")

    if 'name' not in request.get_json():
        abort(400, description="Missing name")

    data = request.get_json()
    instance = Amenity(**data)
    instance.save()
    return make_response(jsonify(instance.to_dict()), 201)
示例#17
0
def create_amenity():
    """create  amenities"""
    n = 'name'
    if not request.get_json():
        return make_response(jsonify({'error': 'Not a JSON'}), 400)
    if n not in request.get_json():
        return make_response(jsonify({'error': 'Missing name'}), 400)
    req_data = request.get_json()
    amenity = Amenity()

    amenity.name = req_data['name']

    amenity.save()
    return make_response(jsonify(amenity.to_dict()), 201)
示例#18
0
def create_amenity():
    """ Creates an Amenity object, or returns a 400 if the HTTP body request is not
    valid JSON, or if the dict doesnt contain the key name """
    data = ""
    data = request.get_json()
    if data is None:
        abort(400, "Not a JSON")
    name = data.get("name")
    if name is None:
        abort(400, "Missing name")
    new_amenity = Amenity()
    new_amenity.name = name
    new_amenity.save()
    return (jsonify(new_amenity.to_dict())), 201
示例#19
0
def new_amenity():
    """Creates an Amenity
    """
    new_obj = request.get_json()
    if new_obj is None:
        abort(400, "Not a JSON")

    if "name" not in new_obj.keys():
        abort(400, "Missing name")

    new_amenity = Amenity(**new_obj)
    new_amenity.save()
    storage.reload()
    return jsonify(new_amenity.to_dict()), 201
示例#20
0
 def test_getamenities(self):
     """test listing all amenities"""
     amenity_args = {"name": "quokka"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.get('{}/amenities/'.format(self.path),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertTrue(type(json_format), list)
     self.assertIn(amenity_args["name"],
                   [e.get("name") for e in json_format])
     storage.delete(amenity)
示例#21
0
def all_amenities():
    """ all_amenities
        Return: all amenities
    """
    if request.method == 'GET':
        return jsonify([i.to_dict() for i in storage.all('Amenity').values()])
    elif request.method == 'POST':
        if request.get_json() is None:
            abort(400, 'Not a JSON')
        if "name" not in request.get_json().keys():
            abort(400, 'Missing name')
        instance = Amenity(**request.get_json())
        instance.save()
        return jsonify(instance.to_dict()), 201
 def test_getamenities(self):
     """test listing all amenities"""
     amenity_args = {"name": "quokka"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.get('{}/amenities/'.format(self.path),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertTrue(type(json_format), list)
     self.assertIn(amenity_args["name"],
                   [e.get("name") for e in json_format])
     storage.delete(amenity)
示例#23
0
    def test_create_pla_amenity_error(self):
        '''This is the 'test_create_pla_amenity_error' method.

        Tests the 'create_place_amenity' method with invalid amenity.
        '''
        amenity_args = {"name": "testA", "id": "TA"}
        amenity = Amenity(**amenity_args)
        amenity.save()

        rv = self.app.post('{}/places/{}/amenities/{}/'.format(
            self.path, self.place.id, "noID"),
                           follow_redirects=True)
        self.assertEqual(rv.status_code, 404)
        storage.delete(amenity)
 def test_view_one_amenity(self):
     """test retrieving one amenity"""
     amenity_args = {"name": "quokka", "id": "QO2"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.get('{}/amenities/{}'.format(self.path,
                                                amenity_args["id"]),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertEqual(json_format.get("name"), amenity_args["name"])
     self.assertEqual(json_format.get("id"), amenity_args["id"])
     storage.delete(amenity)
示例#25
0
 def test_02_save_consistency(self):
     '''Check for consistency after save'''
     models.storage.all().clear()
     obj1 = Amenity()
     old = obj1.__dict__.copy()
     try:
         obj1.save()
     except:
         self.fail("Failed to save")
     new = obj1.__dict__.copy()
     del old['updated_at']
     del new['updated_at']
     self.assertEqual(old, new, "Failed to maintain consistency after save")
     del obj1
class TestModels(unittest.TestCase):
    """ Funtion to test the BaseModel"""

    def setUp(self):
        """ Set a variable """
        self.amenity_1 = Amenity()
        print("setUp")

    def tearDown(self):
        """ End variable """
        print("tearDown")

    @classmethod
    def setUpClass(cls):
        """ define class """

        print("setUpClass")

    @classmethod
    def tearDownClass(cls):
        """ close the class """
        print("tearDownClass")

    def test_amenity_doc(self):
        """ Check the documentation """
        self.assertIsNotNone(Amenity.__doc__)
        self.assertIsNotNone(Amenity.__init__.__doc__)

    def test_place_city(self):
        """ check if the amenity methods exists """
        self.amenity_1.save()
        self.assertTrue(os.path.isfile('file.json'))
        self.assertTrue(hasattr(self.amenity_1, "__init__"))
        self.assertTrue(hasattr(self.amenity_1, "name"))

    def test_amenity_name(self):
        """ check if the name is create """
        self.amenity_1.name = 'Good'
        self.assertEqual(self.amenity_1.name, 'Good')

    def test_models_to_dict(self):
        model_1 = self.amenity_1.to_dict()
        self.assertIsInstance(model_1["created_at"], str)
        self.assertIsInstance(model_1["updated_at"], str)
        self.assertIsInstance(model_1["id"], str)

    def test_amenity_instance(self):
        """ check if amenity_1 is instance of Amenity """
        self.assertIsInstance(self.amenity_1, Amenity)
示例#27
0
 def test_update_amenity_id(self):
     """test cannot update amenity id"""
     amenity_args = {"name": "quokka", "id": "QO1"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.put('{}/amenities/{}/'.format(self.path, amenity.id),
                       content_type="application/json",
                       data=json.dumps({"id": "Z"}),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertEqual(json_format.get("name"), amenity_args["name"])
     self.assertEqual(json_format.get("id"), amenity_args["id"])
     storage.delete(amenity)
示例#28
0
 def test_count(self):
     """Test if count method counts number of objects in storage"""
     counter = models.storage.count()
     new_state = State(name="California")
     new_state.save()
     self.assertNotEqual(models.storage.count(State), 0)
     self.assertEqual(storage.count(Amenity), 1)
     new_amenity = Amenity(name="Smoking allowed")
     new_amenity.save()
     self.assertNotEqual(models.storage.count(Amenity), 0)
     self.assertIsInstance(models.storage.count(), int)
     self.assertIsInstance(models.storage.count(Amenity), int)
     self.assertNotEqual(models.storage.count(Amenity), None)
     new_state.delete()
     new_amenity.delete()
示例#29
0
 def test_delete_amenity_in_place(self):
     """test remove an amenity from a place"""
     amenity_args = {"name": "bear", "id": "BA"}
     amenity = Amenity(**amenity_args)
     self.place.amenities.append(amenity)
     amenity.save()
     rv = self.app.delete('{}/places/{}/amenities/{}/'.format(
         self.path, self.place.id, "BA"),
                          follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertEqual(json_format, {})
     self.assertIsNotNone(storage.get("Amenity", amenity.id))
     storage.delete(amenity)
示例#30
0
def amenity_post():
    """
    creates new amenity object instance
    """
    new_amenity = Amenity()

    req = request.get_json()
    if req is None:
        return ("Not a JSON", 400)
    if 'name' not in req.keys():
        return ("Missing name", 400)

    new_amenity.__dict__.update(req)
    new_amenity.save()
    return (jsonify(new_amenity.to_json()), 201)
示例#31
0
def post_amenity():
    """ Creates a Amenity"""
    req = request.get_json()

    if req:
        if 'name' in req:
            new_amenity = Amenity(**req)
            new_amenity.save()
            return make_response(jsonify(new_amenity.to_dict()), 201)

        else:
            return make_response(jsonify("Missing name"), 400)

    else:
        return make_response(jsonify("Not a JSON"), 400)
示例#32
0
def amenities():
    """Define GET /amenities
    """
    if request.method == "GET":
        return jsonify([amenity.to_dict()
                        for amenity in storage.all("Amenity").values()])

    doc = request.get_json(silent=True)
    if doc is None:
        return "Not a JSON", 400
    if doc.get("name") is None:
        return "Missing name", 400
    amenity = Amenity(**doc)
    amenity.save()
    return jsonify(amenity.to_dict()), 201
示例#33
0
def p_amenities():
    """add new state"""
    if request.method == 'POST':
        data = request.get_json()
        if data:
            if "name" not in data.keys():
                raise abort(400, "Missing name")
            else:
                instance = Amenity(name=data["name"])
                instance.save()
                return jsonify(BaseModel.to_dict(
                               storage.get("Amenity", instance.id))), 201
        else:
            raise abort(400, "Not a JSON")
        return jsonify({})
示例#34
0
def amenities_unlinked():
    """amenities not linked to an object
    """
    if request.method == 'GET':
        all_amenity = [amenity.to_dict() for amenity in storage.
                       all("Amenity").values()]
        return (jsonify(all_amenity), 200)
    if request.method == 'POST':
        if not request.get_json():
            return make_response(jsonify({'error': 'Not a JSON'}), 400)
        if 'name' not in request.get_json():
            return make_response(jsonify({'error': 'Missing name'}), 400)
    amenity = Amenity(**request.get_json())
    amenity.save()
    return make_response(jsonify(amenity.to_dict()), 201)
示例#35
0
    def test_save(self):
        """Test save method"""

        # storage = FileStorage()

        am = Amenity()
        temp = am.__dict__['updated_at']
        self.assertFalse(path.isfile('file.json'))
        am.save()
        self.assertTrue(path.isfile('file.json'))
        self.assertNotEqual(am.__dict__['updated_at'], temp)
        temp = am.__dict__['updated_at']
        # storage.reload()
        models.storage.reload()
        self.assertEqual(am.__dict__['updated_at'], temp)
示例#36
0
    def test_delete_pla_no_amenity(self):
        '''This is the 'test_delete_pla_no_amenity' method.

        Tests the 'delete_place_amenity' method for an amenity not in a
        given place.
        '''
        amenity_args = {"name": "testA", "id": "TA"}
        amenity = Amenity(**amenity_args)
        amenity.save()

        rv = self.app.delete('{}/places/{}/amenities/{}/'.format(
            self.path, self.place.id, amenity.id),
                             follow_redirects=True)
        self.assertEqual(rv.status_code, 404)
        storage.delete(amenity)
示例#37
0
def handle_amenities():
    """Retrieves the list of all Amenity objects or
    create a new Amenity object"""
    if request.method == 'GET':
        return jsonify(
            [obj.to_dict() for obj in storage.all("Amenity").values()]), 200
    if request.method == 'POST':
        if not request.get_json(silent=True):
            abort(400, "Not a JSON")
        if not request.get_json(silent=True).get('name'):
            abort(400, "Missing name")
        kwargs = request.get_json(silent=True)
        new_amenity = Amenity(**kwargs)
        new_amenity.save()
        return jsonify(new_amenity.to_dict()), 201
示例#38
0
    def test_update_amenity_id_error(self):
        '''This is the 'test_update_amenity_id_error' method.

        Tests for updating an Amenity object with an invalid id.
        '''
        amenity_args = {"name": "test", "id": "TS"}
        amenity = Amenity(**amenity_args)
        amenity.save()

        rv = self.app.put('{}/amenities/{}/'.format(self.path, "noID"),
                          content_type="application/json",
                          data=json.dumps({"id": "T"}),
                          follow_redirects=True)
        self.assertEqual(rv.status_code, 404)
        storage.delete(amenity)
 def test_update_amenity_id(self):
     """test cannot update amenity id"""
     amenity_args = {"name": "quokka", "id": "QO1"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.put('{}/amenities/{}/'.format(self.path, amenity.id),
                       content_type="application/json",
                       data=json.dumps({"id": "Z"}),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 200)
     self.assertEqual(rv.headers.get("Content-Type"), "application/json")
     json_format = getJson(rv)
     self.assertEqual(json_format.get("name"), amenity_args["name"])
     self.assertEqual(json_format.get("id"), amenity_args["id"])
     storage.delete(amenity)
示例#40
0
def create_a_amenity():
    """
        Creates a new Amenity object according to
        the HTTP body request dictionary
    """
    body = request.get_json(silent=True)
    if body is None:
        return make_response(jsonify({'error': 'Not a JSON'}), 400)

    if "name" not in body:
        return make_response(jsonify({'error': 'Missing name'}), 400)

    new = Amenity(**body)
    new.save()
    return make_response(jsonify(new.to_dict()), 201)
示例#41
0
def amenities_base():
    """Retrieves the list of all Amenity objects"""
    if request.method == "GET":
        out = []
        for amenity in storage.all("Amenity").values():
            out.append(amenity.to_dict())
        return jsonify(out)
    if request.method == "POST":
        if not request.is_json:
            return "Not a JSON", 400
        out = Amenity(**request.get_json())
        if "name" not in out.to_dict().keys():
            return "Missing name", 400
        out.save()
        return out.to_dict(), 201
示例#42
0
def amenity_route():
    if request.method == 'GET':
        amenity_list = [
            amenity.to_dict() for amenity in storage.all("Amenity").values()
        ]
        return jsonify(amenity_list)
    if request.method == 'POST':
        req_dict = request.get_json(silent=True)
        if req_dict is None:
            return jsonify({"error": "Not a JSON"}), 400
        if 'name' not in req_dict.keys():
            return jsonify({"error": "Missing name"}), 400
        new = Amenity(**req_dict)
        new.save()
        return jsonify(new.to_dict()), 201
示例#43
0
def amenities_get_id(amenity_id=None):
    """Retrieves a amenities object by its id"""

    amenity_dict = storage.all(Amenity)
    obj_list = []

    if amenity_id is not None:
        my_amenities_obj = storage.get(Amenity, amenity_id)

        if my_amenities_obj is not None:
            if request.method == 'DELETE':
                storage.delete(my_amenities_obj)
                return make_response(jsonify({}), 200)

            if request.method == 'GET':
                return jsonify(my_amenities_obj.to_dict())

            if request.method == 'PUT':
                update_dict = request.get_json(silent=True)
                if update_dict is not None:
                    for key, value in update_dict.items():
                        setattr(my_amenities_obj, key, value)
                        my_amenities_obj.save()
                    return make_response(jsonify(my_amenities_obj.to_dict()),
                                         200)
                else:
                    abort(400, "Not a JSON")
        else:
            abort(404)
    else:
        # In case amenity_id is None
        if request.method == 'POST':
            my_json = request.get_json(silent=True)
            if my_json is not None:
                if "name" in my_json:
                    name = my_json["name"]
                    new_amenities = Amenity(name=name)
                    new_amenities.save()
                    return make_response(jsonify(new_amenities.to_dict()), 201)
                else:
                    abort(400, "Missing name")
            else:
                # print("funcionó el none!")
                abort(400, "Not a JSON")

        for value in amenity_dict.values():
            obj_list.append(value.to_dict())
        return jsonify(obj_list)
 def test_link_amenity_place(self):
     """test linking an amenity to a place"""
     amenity_args = {"name": "bear", "id": "BA"}
     amenity = Amenity(**amenity_args)
     amenity.save()
     rv = self.app.post('{}/places/{}/amenities/{}/'.format(
         self.path, self.place.id, amenity.id),
                       follow_redirects=True)
     self.assertEqual(rv.status_code, 201)
     json_format = getJson(rv)
     self.assertEqual(json_format.get("name"), amenity_args["name"])
     self.assertEqual(json_format.get("id"), amenity_args["id"])
     self.assertIn(self.amenity.id,
                   [a.id for a in storage.get("Place",
                                              self.place.id).amenities])
     storage.delete(amenity)
示例#45
0
 def test_get_amenity(self):
     """test get with valid cls and id"""
     a = Amenity(name="test_amenity3", id="test_3")
     a.save()
     result = storage.get("Amenity", "test_3")
     self.assertEqual(a.name, result.name)
     # does not work as the database loses last argument tzinfo for datetime
     # self.assertEqual(a.created_at, result.created_at)
     self.assertEqual(a.created_at.year, result.created_at.year)
     self.assertEqual(a.created_at.month, result.created_at.month)
     self.assertEqual(a.created_at.day, result.created_at.day)
     self.assertEqual(a.created_at.hour, result.created_at.hour)
     self.assertEqual(a.created_at.minute, result.created_at.minute)
     self.assertEqual(a.created_at.second, result.created_at.second)
     storage.delete(a)
     result = storage.get("Amenity", "test_3")
     self.assertIsNone(result)
示例#46
0
 def test_reload(self):
     """not actually testing reload as it creates a parallel new session"""
     a = Amenity(name="different")
     a.save()
     for value in storage.all().values():
         self.assertIsInstance(value.created_at, datetime)