Node.js e
MongoDB
http://www.luiztools.com.br
Repositório
Api - Cinema-Catalog
Index - Cinema-Catalog
CRONOGRAMA
Repositóri
o
Repositório
● pesquisar cidades em que a rede possui
cinema;
● pesquisar cinemas por id da cidade;
● pesquisar filmes disponíveis em um cinema;
● pesquisar filmes disponíveis em uma cidade;
● pesquisar sessões disponíveis para um filme
em uma cidade;
● pesquisar sessões disponíveis para um filme
em um cinema;
Funcionalidades
Repositório
const mongodb = require("../config/mongodb");
const ObjectId = require("mongodb").ObjectId;
function getAllCities(callback){
mongodb.connect((err, db) => {
db.collection("cinemaCatalog").find({},
{cidade:1,uf:1,pais:1}).toArray(callback);
})
}
repository.js
Repositório
function getCinemasByCityId(cityId, callback){
var objCityId = ObjectId(cityId);
mongodb.connect((err, db) => {
db.collection("cinemaCatalog").find({_id: objCityId},
{cinemas: 1}).toArray((err, cities) => {
if(err) return callback(err, null);
callback(err, cities[0].cinemas);
});
});
}
repository.js
Repositório
function disconnect(){
return mongodb.disconnect();
}
module.exports = { getAllCities, getCinemasByCityId, disconnect }
repository.js
Repositório
const test = require('tape');
const repository = require('./repository');
function runTests(){
var cityId = null;
var cinemaId = null;
var movieId = null;
//tests here
}
module.exports = { runTests }
repository.test.js
Repositório
test('Repository getAllCities', (t) => {
repository.getAllCities((err, cities) => {
if(cities && cities.length > 0) cityId = cities[1]._id;//Porto
Alegre
t.assert(!err && cities && cities.length > 0, "All Cities
Returned");
t.end();
});
})
repository.test.js
Repositório
test('Repository getCinemasByCityId', (t) => {
repository.getCinemasByCityId(cityId, (err, cinemas) => {
if(cinemas && cinemas.length > 0) cinemaId =
cinemas[0]._id;
t.assert(!err && cinemas && cinemas.length > 0, "All
Cinemas Returned By City Id");
t.end();
});
})
repository.test.js
Repositório
test('Repository Disconnect', (t) => {
t.assert(repository.disconnect(), "Disconnect Ok");
t.end();
})
}
repository.test.js
Repositório
require("dotenv-safe").load();
require("./config/mongodb.test").runTests();
require("./server/server.test").runTests();
require("./repository/repository.test").runTests();
index.test.js
Repositório
Repositório
function getMoviesByCinemaId(cinemaId, callback){
var objCinemaId = ObjectId(cinemaId);
mongodb.connect((err, db) => {
db.collection("cinemaCatalog").aggregate([
{$match: {"cinemas._id": objCinemaId}},
{$unwind: "$cinemas"},
{$unwind: "$cinemas.salas"},
{$unwind: "$cinemas.salas.sessoes"},
{$group: {_id: { filme: "$cinemas.salas.sessoes.filme",
idFilme: "$cinemas.salas.sessoes.idFilme"}}}
]).toArray(callback);
});
}
repository.js
Repositório
function getMoviesByCityId(cityId, callback){
var objCityId = ObjectId(cityId);
mongodb.connect((err, db) => {
db.collection("cinemaCatalog").aggregate([
{$match: {"_id": objCityId}},
{$unwind: "$cinemas"},
{$unwind: "$cinemas.salas"},
{$unwind: "$cinemas.salas.sessoes"},
{$group: {_id: { filme: "$cinemas.salas.sessoes.filme", idFilme:
"$cinemas.salas.sessoes.idFilme"}}}
]).toArray((err, sessions) => {
if(err) return callback(err, null);
callback(err, sessions.map(item => {
return {idFilme: item._id.idFilme, filme: item._id.filme }
} )); }); });
}
repository.js
Repositório
function getMovieSessionsByCityId(movieId, cityId, callback){
var objMovieId = ObjectId(movieId);
var objCityId = ObjectId(cityId);
mongodb.connect((err, db) => {
db.collection("cinemaCatalog").aggregate([
{$match: {"_id": objCityId}},
{$unwind: "$cinemas"},
{$unwind: "$cinemas.salas"},
{$unwind: "$cinemas.salas.sessoes"},
{$match: {"cinemas.salas.sessoes.idFilme": objMovieId}},
{$group: {_id: { filme: "$cinemas.salas.sessoes.filme", idFilme:
"$cinemas.salas.sessoes.idFilme", idCinema: "$cinemas._id", sala:
"$cinemas.salas.nome", sessao: "$cinemas.salas.sessoes"}}}
]).toArray((err, sessions) => {
if(err) return callback(err, null);
callback(err, sessions.map(item => {
return {idFilme: item._id.idFilme, filme: item._id.filme,
idCinema: item._id.idCinema, sala: item._id.sala, sessao:
item._id.sessao } } )); }); });
}
repository.js
Repositório
function getMovieSessionsByCinemaId(movieId, cinemaId, callback){
var objCinemaId = ObjectId(cinemaId);
var objMovieId = ObjectId(movieId);
mongodb.connect((err, db) => {
db.collection("cinemaCatalog").aggregate([
{$match: {"cinemas._id": objCinemaId}},
{$unwind: "$cinemas"},
{$unwind: "$cinemas.salas"},
{$unwind: "$cinemas.salas.sessoes"},
{$match: {"cinemas.salas.sessoes.idFilme": objMovieId}},
{$group: {_id: { filme: "$cinemas.salas.sessoes.filme",
idFilme: "$cinemas.salas.sessoes.idFilme", sala:
"$cinemas.salas.nome", sessao: "$cinemas.salas.sessoes"}}}
]).toArray((err, sessions) => {
if(err) return callback(err, null);
callback(err, sessions.map(item => {
return {idFilme: item._id.idFilme, filme:
item._id.filme, sala: item._id.sala, sessao:
item._id.sessao } } )); }); });
}
repository.js
Repositório
module.exports = {
getAllCities,
getCinemasByCityId,
getMoviesByCityId,
getMoviesByCinemaId,
getMovieSessionsByCityId,
getMovieSessionsByCinemaId, disconnect
}
repository.js
Repositório
test('Repository getMoviesByCinemaId', (t) => {
repository.getMoviesByCinemaId(cinemaId, (err, movies)
=> {
t.assert(!err && movies && movies.length > 0, "Movies By
Cinema Id Returned");
t.end();
});
})
repository.test.js
Repositório
test('Repository getMoviesByCityId', (t) => {
repository.getMoviesByCityId(cityId, (err, movies) => {
if(movies && movies.length > 0) movieId =
movies[1].idFilme;//Era de Ultron
t.assert(!err && movies && movies.length > 0,
"Movies By City Id Returned");
t.end();
});
})
repository.test.js
Repositório
test('Repository getMovieSessionsByCityId', (t) => {
repository.getMovieSessionsByCityId(movieId, cityId, (err,
sessions) => {
t.assert(!err && sessions && sessions.length > 0, "Movie
Sessions By City Id Returned");
t.end();
});
})
repository.test.js
Repositório
test('Repository getMovieSessionsByCinemaId', (t) => {
repository.getMovieSessionsByCinemaId(movieId,
cinemaId, (err, sessions) => {
t.assert(!err && sessions && sessions.length > 0, "Movie
Sessions By Cinema Id Returned");
t.end();
});
})
repository.test.js
Repositório
API -
Cinema
Catalog
API - Cinema Catalog
GET /cities
lista todas cidades onde a rede possui cinema
GET /cities/:city/movies
lista todos os filmes em exibição na cidade especificada;
GET /cities/:city/movies/:movie
lista todos as sessões do filme escolhido na cidade
especificada;
GET /cities/:city/cinemas
lista todos os cinemas em determinada cidade;
GET /cinemas/:cinema/movies
lista todos os filmes em exibição no cinema especificado;
GET /cinemas/:cinema/movies/:movie
lista todas as sessões do filme escolhido no cinema
especificado;
Estrutura
API - Cinema Catalog
module.exports = (app, repository) => {
app.get('/cities', (req, res, next) => {
repository.getAllCities((err, cities) => {
if(err) return next(err);
res.json(cities);
});
})
//another routes here
}
cinema-catalog.js
API - Cinema Catalog
app.get('/cities/:city/movies', (req, res, next) => {
repository.getMoviesByCityId(req.params.city, (err, movies)
=> {
if(err) return next(err);
res.json(movies)
});
})
cinema-catalog.js
API - Cinema Catalog
app.get('/cities/:city/movies/:movie', (req, res, next) => {
repository.getMovieSessionsByCityId(req.params.movie,
req.params.city, (err, sessions) => {
if(err) return next(err);
res.json(sessions)
});
})
cinema-catalog.js
API - Cinema Catalog
app.get('/cities/:city/cinemas', (req, res, next) => {
repository.getCinemasByCityId(req.params.city, (err,
cinemas) => {
if(err) return next(err);
res.json(cinemas)
});
})
cinema-catalog.js
API - Cinema Catalog
app.get('/cinemas/:cinema/movies', (req, res, next) => {
repository.getMoviesByCinemaId(req.params.cinema, (err,
movies) => {
if(err) return next(err);
res.json(movies)
});
})
cinema-catalog.js
API - Cinema Catalog
app.get('/cinemas/:cinema/movies/:movie', (req, res, next) => {
repository.getMovieSessionsByCinemaId(req.params.movie
, req.params.cinema, (err, sessions) => {
if(err) return next(err);
res.json(sessions)
});
})
cinema-catalog.js
API - Cinema Catalog
const test = require('tape');
const supertest = require('supertest');
const movies = require('./cinema-catalog');
const server = require("../server/server");
const repository = require("../repository/repository");
function runTests(){
//run tests here
}
module.exports = { runTests }
cinema-catalog.test.js
API - Cinema Catalog
var app = null;
server.start(movies, repository, (err, app) => {
var cityId = null;
var movieId = null;
var cinemaId = null;
//test cases
})
repository.disconnect();
server.stop();
cinema-catalog.test.js
API - Cinema Catalog
test('GET /cities', (t) => {
supertest(app) .get('/cities')
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) =>{
if(res.body && res.body.length > 0)
cityId = res.body[1]._id;
t.error(err, 'No errors')
t.assert(res.body && res.body.length > 0, "All
Cities returned")
t.end()
})
})
cinema-catalog.test.js
API - Cinema Catalog
test('GET /cities/:city/movies', (t) => {
supertest(app)
.get('/cities/' + cityId + "/movies")
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) =>{
if(res.body && res.body.length > 0)
movieId = res.body[0].idFilme;
t.error(err, 'No errors')
t.assert(res.body, "Movies By City Id returned")
t.end()
})
})
cinema-catalog.test.js
API - Cinema Catalog
test('GET /cities/:city/movies/:movie', (t) => {
supertest(app)
.get('/cities/' + cityId + '/movies/' + movieId)
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) =>{
if(res.body && res.body.length > 0)
cinemaId = res.body[0].idCinema;
t.error(err, 'No errors')
t.assert(res.body && res.body.length > 0, "Movie
Sessions by City Id returned")
t.end()
})
})
cinema-catalog.test.js
API - Cinema Catalog
test('GET /cities/:city/cinemas', (t) => {
supertest(app)
.get('/cities/' + cityId + '/cinemas')
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) =>{
t.error(err, 'No errors')
t.assert(res.body, "Cinemas By City Id
returned")
t.end()
})
})
cinema-catalog.test.js
API - Cinema Catalog
test('GET /cinemas/:cinema/movies', (t) => {
supertest(app)
.get('/cinemas/' + cinemaId + "/movies")
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) =>{
t.error(err, 'No errors')
t.assert(res.body, "Movies By Cinema Id
returned")
t.end()
})
})
cinema-catalog.test.js
API - Cinema Catalog
test('GET /cinemas/:cinema/movies/:movie', (t) => {
supertest(app)
.get('/cinemas/' + cinemaId + "/movies/" + movieId)
.expect('Content-Type', /json/)
.expect(200)
.end((err, res) =>{
t.error(err, 'No errors')
t.assert(res.body, "Movie Sessions By Cinema Id
returned")
t.end()
})
})
cinema-catalog.test.js
API - Cinema Catalog
require("dotenv-safe").load();
require("./config/mongodb.test").runTests();
require("./server/server.test").runTests();
require("./repository/repository.test").runTests();
require("./api/cinema-catalog.test").runTests();
index.test.js
API - Cinema Catalog
Index -
Cinema
Catalog
Index - Cinema Catalog
require("dotenv-safe").load();
const cinemaCatalog = require('./api/cinema-catalog');
const server = require("./server/server");
const repository = require("./repository/repository");
server.start(cinemaCatalog, repository, (err, app) => {
console.log("just started");
});
index.js
Index - Cinema Catalog
Dúvidas?
Exercícios
1 Adicione outra função no microservice
2 Aplique validação de entrada de dados
3 Adicione o restante do CRUD ao microservice
Obrigado!

Curso de Node.js e MongoDB - 18

  • 1.
  • 2.
    Repositório Api - Cinema-Catalog Index- Cinema-Catalog CRONOGRAMA
  • 3.
  • 4.
    Repositório ● pesquisar cidadesem que a rede possui cinema; ● pesquisar cinemas por id da cidade; ● pesquisar filmes disponíveis em um cinema; ● pesquisar filmes disponíveis em uma cidade; ● pesquisar sessões disponíveis para um filme em uma cidade; ● pesquisar sessões disponíveis para um filme em um cinema; Funcionalidades
  • 5.
    Repositório const mongodb =require("../config/mongodb"); const ObjectId = require("mongodb").ObjectId; function getAllCities(callback){ mongodb.connect((err, db) => { db.collection("cinemaCatalog").find({}, {cidade:1,uf:1,pais:1}).toArray(callback); }) } repository.js
  • 6.
    Repositório function getCinemasByCityId(cityId, callback){ varobjCityId = ObjectId(cityId); mongodb.connect((err, db) => { db.collection("cinemaCatalog").find({_id: objCityId}, {cinemas: 1}).toArray((err, cities) => { if(err) return callback(err, null); callback(err, cities[0].cinemas); }); }); } repository.js
  • 7.
    Repositório function disconnect(){ return mongodb.disconnect(); } module.exports= { getAllCities, getCinemasByCityId, disconnect } repository.js
  • 8.
    Repositório const test =require('tape'); const repository = require('./repository'); function runTests(){ var cityId = null; var cinemaId = null; var movieId = null; //tests here } module.exports = { runTests } repository.test.js
  • 9.
    Repositório test('Repository getAllCities', (t)=> { repository.getAllCities((err, cities) => { if(cities && cities.length > 0) cityId = cities[1]._id;//Porto Alegre t.assert(!err && cities && cities.length > 0, "All Cities Returned"); t.end(); }); }) repository.test.js
  • 10.
    Repositório test('Repository getCinemasByCityId', (t)=> { repository.getCinemasByCityId(cityId, (err, cinemas) => { if(cinemas && cinemas.length > 0) cinemaId = cinemas[0]._id; t.assert(!err && cinemas && cinemas.length > 0, "All Cinemas Returned By City Id"); t.end(); }); }) repository.test.js
  • 11.
    Repositório test('Repository Disconnect', (t)=> { t.assert(repository.disconnect(), "Disconnect Ok"); t.end(); }) } repository.test.js
  • 12.
  • 13.
  • 14.
    Repositório function getMoviesByCinemaId(cinemaId, callback){ varobjCinemaId = ObjectId(cinemaId); mongodb.connect((err, db) => { db.collection("cinemaCatalog").aggregate([ {$match: {"cinemas._id": objCinemaId}}, {$unwind: "$cinemas"}, {$unwind: "$cinemas.salas"}, {$unwind: "$cinemas.salas.sessoes"}, {$group: {_id: { filme: "$cinemas.salas.sessoes.filme", idFilme: "$cinemas.salas.sessoes.idFilme"}}} ]).toArray(callback); }); } repository.js
  • 15.
    Repositório function getMoviesByCityId(cityId, callback){ varobjCityId = ObjectId(cityId); mongodb.connect((err, db) => { db.collection("cinemaCatalog").aggregate([ {$match: {"_id": objCityId}}, {$unwind: "$cinemas"}, {$unwind: "$cinemas.salas"}, {$unwind: "$cinemas.salas.sessoes"}, {$group: {_id: { filme: "$cinemas.salas.sessoes.filme", idFilme: "$cinemas.salas.sessoes.idFilme"}}} ]).toArray((err, sessions) => { if(err) return callback(err, null); callback(err, sessions.map(item => { return {idFilme: item._id.idFilme, filme: item._id.filme } } )); }); }); } repository.js
  • 16.
    Repositório function getMovieSessionsByCityId(movieId, cityId,callback){ var objMovieId = ObjectId(movieId); var objCityId = ObjectId(cityId); mongodb.connect((err, db) => { db.collection("cinemaCatalog").aggregate([ {$match: {"_id": objCityId}}, {$unwind: "$cinemas"}, {$unwind: "$cinemas.salas"}, {$unwind: "$cinemas.salas.sessoes"}, {$match: {"cinemas.salas.sessoes.idFilme": objMovieId}}, {$group: {_id: { filme: "$cinemas.salas.sessoes.filme", idFilme: "$cinemas.salas.sessoes.idFilme", idCinema: "$cinemas._id", sala: "$cinemas.salas.nome", sessao: "$cinemas.salas.sessoes"}}} ]).toArray((err, sessions) => { if(err) return callback(err, null); callback(err, sessions.map(item => { return {idFilme: item._id.idFilme, filme: item._id.filme, idCinema: item._id.idCinema, sala: item._id.sala, sessao: item._id.sessao } } )); }); }); } repository.js
  • 17.
    Repositório function getMovieSessionsByCinemaId(movieId, cinemaId,callback){ var objCinemaId = ObjectId(cinemaId); var objMovieId = ObjectId(movieId); mongodb.connect((err, db) => { db.collection("cinemaCatalog").aggregate([ {$match: {"cinemas._id": objCinemaId}}, {$unwind: "$cinemas"}, {$unwind: "$cinemas.salas"}, {$unwind: "$cinemas.salas.sessoes"}, {$match: {"cinemas.salas.sessoes.idFilme": objMovieId}}, {$group: {_id: { filme: "$cinemas.salas.sessoes.filme", idFilme: "$cinemas.salas.sessoes.idFilme", sala: "$cinemas.salas.nome", sessao: "$cinemas.salas.sessoes"}}} ]).toArray((err, sessions) => { if(err) return callback(err, null); callback(err, sessions.map(item => { return {idFilme: item._id.idFilme, filme: item._id.filme, sala: item._id.sala, sessao: item._id.sessao } } )); }); }); } repository.js
  • 18.
  • 19.
    Repositório test('Repository getMoviesByCinemaId', (t)=> { repository.getMoviesByCinemaId(cinemaId, (err, movies) => { t.assert(!err && movies && movies.length > 0, "Movies By Cinema Id Returned"); t.end(); }); }) repository.test.js
  • 20.
    Repositório test('Repository getMoviesByCityId', (t)=> { repository.getMoviesByCityId(cityId, (err, movies) => { if(movies && movies.length > 0) movieId = movies[1].idFilme;//Era de Ultron t.assert(!err && movies && movies.length > 0, "Movies By City Id Returned"); t.end(); }); }) repository.test.js
  • 21.
    Repositório test('Repository getMovieSessionsByCityId', (t)=> { repository.getMovieSessionsByCityId(movieId, cityId, (err, sessions) => { t.assert(!err && sessions && sessions.length > 0, "Movie Sessions By City Id Returned"); t.end(); }); }) repository.test.js
  • 22.
    Repositório test('Repository getMovieSessionsByCinemaId', (t)=> { repository.getMovieSessionsByCinemaId(movieId, cinemaId, (err, sessions) => { t.assert(!err && sessions && sessions.length > 0, "Movie Sessions By Cinema Id Returned"); t.end(); }); }) repository.test.js
  • 23.
  • 24.
  • 25.
    API - CinemaCatalog GET /cities lista todas cidades onde a rede possui cinema GET /cities/:city/movies lista todos os filmes em exibição na cidade especificada; GET /cities/:city/movies/:movie lista todos as sessões do filme escolhido na cidade especificada; GET /cities/:city/cinemas lista todos os cinemas em determinada cidade; GET /cinemas/:cinema/movies lista todos os filmes em exibição no cinema especificado; GET /cinemas/:cinema/movies/:movie lista todas as sessões do filme escolhido no cinema especificado; Estrutura
  • 26.
    API - CinemaCatalog module.exports = (app, repository) => { app.get('/cities', (req, res, next) => { repository.getAllCities((err, cities) => { if(err) return next(err); res.json(cities); }); }) //another routes here } cinema-catalog.js
  • 27.
    API - CinemaCatalog app.get('/cities/:city/movies', (req, res, next) => { repository.getMoviesByCityId(req.params.city, (err, movies) => { if(err) return next(err); res.json(movies) }); }) cinema-catalog.js
  • 28.
    API - CinemaCatalog app.get('/cities/:city/movies/:movie', (req, res, next) => { repository.getMovieSessionsByCityId(req.params.movie, req.params.city, (err, sessions) => { if(err) return next(err); res.json(sessions) }); }) cinema-catalog.js
  • 29.
    API - CinemaCatalog app.get('/cities/:city/cinemas', (req, res, next) => { repository.getCinemasByCityId(req.params.city, (err, cinemas) => { if(err) return next(err); res.json(cinemas) }); }) cinema-catalog.js
  • 30.
    API - CinemaCatalog app.get('/cinemas/:cinema/movies', (req, res, next) => { repository.getMoviesByCinemaId(req.params.cinema, (err, movies) => { if(err) return next(err); res.json(movies) }); }) cinema-catalog.js
  • 31.
    API - CinemaCatalog app.get('/cinemas/:cinema/movies/:movie', (req, res, next) => { repository.getMovieSessionsByCinemaId(req.params.movie , req.params.cinema, (err, sessions) => { if(err) return next(err); res.json(sessions) }); }) cinema-catalog.js
  • 32.
    API - CinemaCatalog const test = require('tape'); const supertest = require('supertest'); const movies = require('./cinema-catalog'); const server = require("../server/server"); const repository = require("../repository/repository"); function runTests(){ //run tests here } module.exports = { runTests } cinema-catalog.test.js
  • 33.
    API - CinemaCatalog var app = null; server.start(movies, repository, (err, app) => { var cityId = null; var movieId = null; var cinemaId = null; //test cases }) repository.disconnect(); server.stop(); cinema-catalog.test.js
  • 34.
    API - CinemaCatalog test('GET /cities', (t) => { supertest(app) .get('/cities') .expect('Content-Type', /json/) .expect(200) .end((err, res) =>{ if(res.body && res.body.length > 0) cityId = res.body[1]._id; t.error(err, 'No errors') t.assert(res.body && res.body.length > 0, "All Cities returned") t.end() }) }) cinema-catalog.test.js
  • 35.
    API - CinemaCatalog test('GET /cities/:city/movies', (t) => { supertest(app) .get('/cities/' + cityId + "/movies") .expect('Content-Type', /json/) .expect(200) .end((err, res) =>{ if(res.body && res.body.length > 0) movieId = res.body[0].idFilme; t.error(err, 'No errors') t.assert(res.body, "Movies By City Id returned") t.end() }) }) cinema-catalog.test.js
  • 36.
    API - CinemaCatalog test('GET /cities/:city/movies/:movie', (t) => { supertest(app) .get('/cities/' + cityId + '/movies/' + movieId) .expect('Content-Type', /json/) .expect(200) .end((err, res) =>{ if(res.body && res.body.length > 0) cinemaId = res.body[0].idCinema; t.error(err, 'No errors') t.assert(res.body && res.body.length > 0, "Movie Sessions by City Id returned") t.end() }) }) cinema-catalog.test.js
  • 37.
    API - CinemaCatalog test('GET /cities/:city/cinemas', (t) => { supertest(app) .get('/cities/' + cityId + '/cinemas') .expect('Content-Type', /json/) .expect(200) .end((err, res) =>{ t.error(err, 'No errors') t.assert(res.body, "Cinemas By City Id returned") t.end() }) }) cinema-catalog.test.js
  • 38.
    API - CinemaCatalog test('GET /cinemas/:cinema/movies', (t) => { supertest(app) .get('/cinemas/' + cinemaId + "/movies") .expect('Content-Type', /json/) .expect(200) .end((err, res) =>{ t.error(err, 'No errors') t.assert(res.body, "Movies By Cinema Id returned") t.end() }) }) cinema-catalog.test.js
  • 39.
    API - CinemaCatalog test('GET /cinemas/:cinema/movies/:movie', (t) => { supertest(app) .get('/cinemas/' + cinemaId + "/movies/" + movieId) .expect('Content-Type', /json/) .expect(200) .end((err, res) =>{ t.error(err, 'No errors') t.assert(res.body, "Movie Sessions By Cinema Id returned") t.end() }) }) cinema-catalog.test.js
  • 40.
    API - CinemaCatalog require("dotenv-safe").load(); require("./config/mongodb.test").runTests(); require("./server/server.test").runTests(); require("./repository/repository.test").runTests(); require("./api/cinema-catalog.test").runTests(); index.test.js
  • 41.
    API - CinemaCatalog
  • 42.
  • 43.
    Index - CinemaCatalog require("dotenv-safe").load(); const cinemaCatalog = require('./api/cinema-catalog'); const server = require("./server/server"); const repository = require("./repository/repository"); server.start(cinemaCatalog, repository, (err, app) => { console.log("just started"); }); index.js
  • 44.
  • 45.
  • 46.
  • 47.
    1 Adicione outrafunção no microservice 2 Aplique validação de entrada de dados 3 Adicione o restante do CRUD ao microservice
  • 48.