def put(self, people_id):

        try:

            json_request_body = json.loads(self.request.body)

            validate_json_schema(json_request_body, schemas.people_json_schema)

            put_people = people.People(json_request_body)

            if (self.database.get_people_by_id(put_people.get_id())):

                self.database.update_people(put_people)
                self.json_response({
                    dictionary.message:
                    dictionary.people_updated.format(put_people.get_id())
                })
            else:
                raise error.ClientError(
                    404,
                    dictionary.people_not_exists.format(put_people.get_id()))

        except error.ServerError as server_error:
            self.json_error(server_error.to_json(), server_error.status)

        except error.ClientError as client_error:
            self.json_error(client_error.to_json(), client_error.status)
def test_people():

    assert handlers.validate_json_schema(parameters.json_r2d2,
                                         schemas.people_json_schema) is None
    assert handlers.validate_json_schema(parameters.json_padme,
                                         schemas.people_json_schema) is None

    people_for_test = people.People(parameters.json_r2d2)

    assert people_for_test.get_name() == parameters.json_r2d2[dictionary.name]
    assert people_for_test.get_height() == parameters.json_r2d2[
        dictionary.height]
    assert people_for_test.get_mass() == parameters.json_r2d2[dictionary.mass]
    assert people_for_test.get_hair_color() == parameters.json_r2d2[
        dictionary.hair_color]
    assert people_for_test.get_skin_color() == parameters.json_r2d2[
        dictionary.skin_color]
    assert people_for_test.get_eye_color() == parameters.json_r2d2[
        dictionary.eye_color]
    assert people_for_test.get_birth_year() == parameters.json_r2d2[
        dictionary.birth_year]
    assert people_for_test.get_gender() == parameters.json_r2d2[
        dictionary.gender]
    assert people_for_test.get_homeworld() == parameters.json_r2d2[
        dictionary.homeworld]
    assert people_for_test.get_id() == parameters.json_r2d2[
        dictionary.people_id]

    assert people_for_test.get_films() == parameters.json_r2d2[
        dictionary.films]
    assert people_for_test.get_starships() == parameters.json_r2d2[
        dictionary.starships]
    assert people_for_test.get_species() == parameters.json_r2d2[
        dictionary.species]
    assert people_for_test.get_vehicles() == parameters.json_r2d2[
        dictionary.vehicles]

    people_for_test.add_film("8")
    people_for_test.add_species("4")
    people_for_test.add_starship("5")
    people_for_test.add_vehicle("6")

    parameters.json_r2d2[dictionary.films].append("8")
    parameters.json_r2d2[dictionary.starships].append("5")
    parameters.json_r2d2[dictionary.species].append("4")
    parameters.json_r2d2[dictionary.vehicles].append("6")

    assert people_for_test.get_starships() == parameters.json_r2d2[
        dictionary.starships]
    assert people_for_test.get_films() == parameters.json_r2d2[
        dictionary.films]
    assert people_for_test.get_species() == parameters.json_r2d2[
        dictionary.species]
    assert people_for_test.get_vehicles() == parameters.json_r2d2[
        dictionary.vehicles]

    assert handlers.validate_json_schema(people_for_test.to_json(),
                                         schemas.people_json_schema) is None
    def get(self, people_id):

        try:

            if (people_id):

                people_get = self.database.get_people_by_id(people_id)

                if (people_get):
                    self.json_response(
                        self.fetch_people_extra_informations_by_id(
                            people.People(people_get)).to_json())
                else:
                    raise error.ClientError(
                        404, dictionary.people_not_exists.format(people_id))
            else:

                peoples = self.database.get_peoples()

                peoples_result = []

                [
                    peoples_result.append(
                        self.fetch_people_extra_informations_by_id(
                            people.People(
                                self.database.get_people_by_id(people_get[
                                    dictionary.people_id]))).to_json())
                    for people_get in peoples
                ]
                if (len(peoples_result) == 0):
                    raise error.ClientError(404,
                                            dictionary.no_people_in_database)
                else:
                    self.json_response(json.dumps(peoples_result))

        except error.ServerError as server_error:
            self.json_error(server_error.to_json(), server_error.status)

        except error.ClientError as client_error:
            self.json_error(client_error.to_json(), client_error.status)
def test_database_queries():

    database_for_test = database.Database(parameters.temporary_database)

    assert database_for_test.connection.execute(parameters.create_table_people)

    assert database_for_test.connection.execute(
        parameters.create_table_films_people)
    assert database_for_test.connection.execute(
        parameters.create_table_people_species)
    assert database_for_test.connection.execute(
        parameters.create_table_people_starships)
    assert database_for_test.connection.execute(
        parameters.create_table_people_vehicles)

    assert len(database_for_test.get_peoples()) == 0

    r2d2 = people.People(parameters.json_r2d2)
    padme = people.People(parameters.json_padme)

    assert database_for_test.add_people(r2d2) is None
    assert database_for_test.add_people(padme) is None

    assert len(database_for_test.get_peoples()) == 2
    assert not (database_for_test.get_people_by_id(padme.get_id()) is None)

    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_id() == padme.get_id()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_height() == padme.get_height()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_mass() == padme.get_mass()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_hair_color() == padme.get_hair_color()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_skin_color() == padme.get_skin_color()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_eye_color() == padme.get_eye_color()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_birth_year() == padme.get_birth_year()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_gender() == padme.get_gender()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_homeworld() == padme.get_homeworld()
    assert people.People(database_for_test.get_people_by_id(
        padme.get_id())).get_name() == padme.get_name()

    assert len(database_for_test.get_people_films_by_people_id(
        r2d2.get_id())) == len(r2d2.get_films())
    assert len(
        database_for_test.get_people_starships_by_people_id(
            r2d2.get_id())) == len(r2d2.get_starships())
    assert len(database_for_test.get_people_species_by_people_id(
        r2d2.get_id())) == len(r2d2.get_species())
    assert len(
        database_for_test.get_people_vehicles_by_people_id(
            r2d2.get_id())) == len(r2d2.get_vehicles())

    r2d2.add_film("8")
    r2d2.add_species("4")
    r2d2.add_starship("5")
    r2d2.add_vehicle("6")

    assert database_for_test.update_people(r2d2) is None

    assert len(database_for_test.get_people_films_by_people_id(
        r2d2.get_id())) == len(r2d2.get_films())
    assert len(
        database_for_test.get_people_starships_by_people_id(
            r2d2.get_id())) == len(r2d2.get_starships())
    assert len(database_for_test.get_people_species_by_people_id(
        r2d2.get_id())) == len(r2d2.get_species())
    assert len(
        database_for_test.get_people_vehicles_by_people_id(
            r2d2.get_id())) == len(r2d2.get_vehicles())

    assert database_for_test.delete_people_by_id(r2d2.get_id()) is None

    assert len(database_for_test.get_people_films_by_people_id(
        r2d2.get_id())) == 0
    assert len(
        database_for_test.get_people_starships_by_people_id(
            r2d2.get_id())) == 0
    assert len(database_for_test.get_people_species_by_people_id(
        r2d2.get_id())) == 0
    assert len(
        database_for_test.get_people_vehicles_by_people_id(r2d2.get_id())) == 0

    assert database_for_test.get_people_by_id(r2d2.get_id()) is None
    assert len(database_for_test.get_peoples()) == 1

    database_for_test.end_connection()