Skip to content

Commit

Permalink
Merge pull request #61 from andela/bug/168325468/add-description-to-g…
Browse files Browse the repository at this point in the history
…enre

#168325468 Update genres to have a description and Update sign up response object
  • Loading branch information
Nkemjiks committed Sep 5, 2019
2 parents 065174f + 7002232 commit 7408dd5
Show file tree
Hide file tree
Showing 8 changed files with 100 additions and 70 deletions.
132 changes: 66 additions & 66 deletions package-lock.json

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions src/controllers/novelController.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,9 @@ const editNovel = async (request, response) => {
*/
const createGenre = async (request, response) => {
try {
const { name } = request.body;
const {
name, description, coverImgUrl, themeColor
} = request.body;
const nameValue = name.toLowerCase();
const existingGenre = await findGenre(nameValue);
if (existingGenre) {
Expand All @@ -223,7 +225,9 @@ const createGenre = async (request, response) => {
data: { genre: { name: genreName.name } }
});
}
const createdGenre = await Genre.create({ name: nameValue });
const createdGenre = await Genre.create({
name: nameValue, description, coverImgUrl, themeColor
});
const { dataValues } = createdGenre;
return responseMessage(response, 201, {
message: 'genre successfully created',
Expand Down Expand Up @@ -330,7 +334,7 @@ const getGenres = async (request, response) => {
try {
const genreList = await Genre.findAll({
where: genreFilter,
attributes: ['id', 'name', 'coverImgUrl', 'themeColor'],
attributes: ['id', 'name', 'description', 'coverImgUrl', 'themeColor'],
include: [{
model: Novel,
as: 'novels',
Expand Down
3 changes: 2 additions & 1 deletion src/controllers/userController.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,11 @@ const signUp = async (req, res) => {
const response = {
user: {
id: createdUser.id,
firstname: createdUser.firstName,
lastName: createdUser.lastName,
email: createdUser.email,
token: authHelper.generateToken({ id: createdUser.id }),
bio: createdUser.bio,
image: createdUser.avatar,
isVerified: createdUser.isVerified,
}
};
Expand Down
4 changes: 4 additions & 0 deletions src/database/migrations/20190729073412-create-genre.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ const up = (queryInterface, Sequelize) => queryInterface.createTable('Genres', {
allowNull: false,
type: Sequelize.STRING
},
description: {
allowNull: true,
type: Sequelize.STRING
},
coverImgUrl: {
allowNull: true,
type: Sequelize.STRING
Expand Down
4 changes: 4 additions & 0 deletions src/database/models/genre.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,10 @@ export default (sequelize, DataTypes) => {
allowNull: false,
type: DataTypes.STRING
},
description: {
allowNull: true,
type: DataTypes.STRING
},
coverImgUrl: {
allowNull: true,
type: DataTypes.STRING
Expand Down
12 changes: 12 additions & 0 deletions src/database/seeders/20190729145216-genre.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
id: 'da86915a-6d4d-455f-8b44-5c4b8221ebf6',
name: 'action',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555891/dahlia/back5unsplash.jpg',
themeColor: '#b80f0a',
createdAt: new Date(),
Expand All @@ -9,6 +10,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: 'ceb59aa0-b10d-4f37-a0d5-925b38876db4',
name: 'thriller',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555883/dahlia/back9unsplash.jpg',
themeColor: '#db0000',
createdAt: new Date(),
Expand All @@ -17,6 +19,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: 'ffe299b9-889b-4ad3-86cf-138cd57d5aab',
name: 'romance',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555878/dahlia/back6unsplash.jpg',
themeColor: '#e5579b',
createdAt: new Date(),
Expand All @@ -25,6 +28,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: 'e4427fcd-d1dd-480d-98a6-bb08d5e4d4aa',
name: 'fiction',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555884/dahlia/back7unsplash.jpg',
themeColor: '#fce205',
createdAt: new Date(),
Expand All @@ -33,6 +37,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: '09add0fe-d063-48ce-8e18-0dc590d04dcf',
name: 'motivational',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555876/dahlia/back3unsplash.jpg',
themeColor: '#111e6c',
createdAt: new Date(),
Expand All @@ -41,6 +46,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: 'b637853a-fe66-4bf7-8b30-eeae972b1a3b',
name: 'horror',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555877/dahlia/back8unsplash.jpg',
themeColor: '#fe2020',
createdAt: new Date(),
Expand All @@ -49,6 +55,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: '8d8e24bf-a18c-4256-b0fa-8678ecc7a7c1',
name: 'memoir',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555878/dahlia/back2unsplash.jpg',
themeColor: '#f9a602',
createdAt: new Date(),
Expand All @@ -57,6 +64,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: '01b9ee31-2e24-4e71-afe0-7b5e37f67a36',
name: 'drama',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555877/dahlia/back1unsplash.jpg',
themeColor: '#4c9a2a',
createdAt: new Date(),
Expand All @@ -65,6 +73,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: 'bf073c64-7244-43d2-ab12-81e716b65680',
name: 'sci-fi',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555883/dahlia/back11unsplash.jpg',
themeColor: '#797979',
createdAt: new Date(),
Expand All @@ -73,6 +82,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: '295ad5d3-f0f3-4609-82f1-85b71b05b0f9',
name: 'fantasy',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555877/dahlia/back4unsplash.jpg',
themeColor: '#df5286',
createdAt: new Date(),
Expand All @@ -82,6 +92,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: '8e1d4ee7-8a58-46a3-b47f-98cd481f2ad3',
name: 'mystery',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555882/dahlia/back10unsplash.jpg',
themeColor: '#000008',
createdAt: new Date(),
Expand All @@ -90,6 +101,7 @@ export const up = queryInterface => queryInterface.bulkInsert('Genres', [{
{
id: '918f192d-f20b-423f-8e80-8120f336a9f0',
name: 'history',
description: 'Lorem ipsum dolor sit amet,consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
coverImgUrl: 'https://res.cloudinary.com/drlcfqzym/image/upload/v1567083948/claire-rodahaver-o1Sc5VXglNI-unsplash.jpg',
themeColor: '#fedc56',
createdAt: new Date(),
Expand Down
1 change: 1 addition & 0 deletions src/middlewares/novelValidator.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const novelValidator = {
],
createGenreValidator: [
isValidName('name'),
isNotEmpty('description'),
isNotEmpty('themeColor'),
isValidUrl('coverImgUrl'),
validatorError
Expand Down
4 changes: 4 additions & 0 deletions tests/mockData/novelMock.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,25 @@ const novelMock = {
},
validGenre: {
name: 'prose',
description: 'something',
themeColor: '#ffc0cb',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567603113/dahlia/back12unsplash.jpg'
},
existingGenre: {
name: 'thriller',
description: 'something',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555883/dahlia/back9unsplash.jpg',
themeColor: '#db0000'
},
invalidGenre: {
name: 'thr**ille**r',
description: 'description',
coverImgUrl: 'https://res.cloudinary.com/allebd/image/upload/v1567555883/dahlia/back9unsplash.jpg',
themeColor: '#db0000'
},
emptyGenre: {
name: '',
description: '',
coverImgUrl: '',
themeColor: '',
},
Expand Down

0 comments on commit 7408dd5

Please sign in to comment.