Skip to content

Commit

Permalink
test(ShowHelper): working on showhelper tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ChrisAlderson committed Dec 31, 2017
1 parent c6f55dd commit 48b9988
Show file tree
Hide file tree
Showing 2 changed files with 170 additions and 19 deletions.
12 changes: 6 additions & 6 deletions src/scraper/helpers/ShowHelper.js
Expand Up @@ -32,7 +32,7 @@ export default class ShowHelper extends AbstractHelper {
}, new this.Model(show), {
new: true,
upsert: true
}).exec()
})

const distinct = await this.Model.distinct('episodes.season', {
_id: saved.imdb_id
Expand All @@ -44,7 +44,7 @@ export default class ShowHelper extends AbstractHelper {
}, new this.Model(saved), {
new: true,
upsert: true
}).exec()
})
}

/**
Expand Down Expand Up @@ -105,7 +105,7 @@ export default class ShowHelper extends AbstractHelper {
let s = show
const found = await this.Model.findOne({
_id: s.imdb_id
}).exec()
})
if (!found) {
logger.info(`${this.name}: '${s.title}' is a new show!`)
const newShow = await new this.Model(s).save()
Expand Down Expand Up @@ -258,7 +258,7 @@ export default class ShowHelper extends AbstractHelper {
*/
addEpisodes(
show: AnimeShow | Show,
episodes: Object = {},
episodes: Object,
slug: string
): Show {
let { dateBased } = episodes
Expand Down Expand Up @@ -318,8 +318,8 @@ export default class ShowHelper extends AbstractHelper {
const { Holder } = AbstractHelper
const images = {
banner: i.banner ? `${baseUrl}${i.banner}` : Holder,
fanart: i.fanart ? `${baseUrl}${i.fanart}` : Holder,
poster: i.poster ? `${baseUrl}${i.poster}` : Holder
fanart: i.banner ? `${baseUrl}${i.banner}` : Holder,
poster: i.banner ? `${baseUrl}${i.banner}` : Holder
}

return this.checkImages(images)
Expand Down
177 changes: 164 additions & 13 deletions test/scraper/helpers/ShowHelper.spec.js
Expand Up @@ -2,31 +2,63 @@
// @flow
/* eslint-disable no-unused-expressions */
import { expect } from 'chai'
import {
Database,
PopApi
} from 'pop-api'
import sinon from 'sinon'

import testShow from '../../data/show.json'
import { logger } from '..'
import { Show } from '../../../src/models'
import { ShowHelper } from '../../../src/scraper/helpers'
import {
fanart,
trakt,
tmdb
tmdb,
tvdb
} from '../../../src/scraper/apiModules'
import { name } from '../../../package.json'
import * as abstractHelperTests from './AbstractHelper.spec'

/* eslint-disable quote-props */

/** @test {ShowHelper} */
describe('ShowHelper', () => {
/**
* A mock torrent object.
* @type {Object}
*/
const torrent: Object = {
'480p': {
'1': {
'1': {
url: 'url',
seeds: 0,
peers: 0,
provider: 'test'
}
}
}
}

/**
* The show helper to test.
* @type {ShowHelper}
*/
let showHelper: ShowHelper

/**
* The database middleware to connect to MongoDB.
* @type {Database}
*/
let database: Database

/**
* Hook for setting up the ShowHelper tests.
* @type {Function}
*/
before(() => {
before(done => {
if (!global.logger) {
global.logger = logger
}
Expand All @@ -35,21 +67,81 @@ describe('ShowHelper', () => {
name: 'ShowHelper',
Model: Show
})

database = new Database(PopApi, {
database: name
})
database.connect()
.then(() => Show.remove({}))
.then(() => done())
.catch(done)
})

/** @test {ShowHelper#_updateNumSeasons} */
it.skip('should update the number of seasons for a show', () => {
expect(true).to.be.true
})

/** @test {ShowHelper#_updateEpisode} */
it.skip('should update an episode of a show', () => {
expect(true).to.be.true
/** @test {ShowHelper#_updateEpisodes} */
it('should save a given show', done => {
const foundStub = sinon.stub(showHelper.Model, 'findOne')
foundStub.returns(null)

showHelper._updateEpisodes(testShow).then(res => {
expect(res).to.be.an('object')
foundStub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#_updateEpisodes} */
it.skip('should update a show with episodes', () => {
expect(true).to.be.true
it('should update a given show', done => {
const foundStub = sinon.stub(showHelper.Model, 'findOne')
foundStub.returns(testShow)
const updateStub = sinon.stub(showHelper.Model, 'findOneAndUpdate')
updateStub.returns(testShow)

showHelper._updateEpisodes(testShow).then(res => {
expect(res).to.be.an('object')
foundStub.restore()
updateStub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#_updateEpisodes} */
it('should update a given show', done => {
const found = JSON.parse(JSON.stringify(testShow))
found.episodes[0].first_aired = Date.now()
found.episodes[0].episode = 10

const foundStub = sinon.stub(showHelper.Model, 'findOne')
foundStub.returns(found)
const updateStub = sinon.stub(showHelper.Model, 'findOneAndUpdate')
updateStub.returns(testShow)

showHelper._updateEpisodes(testShow).then(res => {
expect(res).to.be.an('object')
foundStub.restore()
updateStub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#_updateEpisodes} */
it('should catch and print an error', done => {
const foundStub = sinon.stub(showHelper.Model, 'findOne')
foundStub.throws()

showHelper._updateEpisodes(testShow).then(res => {
expect(res).to.be.undefined
foundStub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#_addSeasonalSeason} */
Expand All @@ -63,8 +155,45 @@ describe('ShowHelper', () => {
})

/** @test {ShowHelper#addEpisodes} */
it.skip('should add episodes to a show', () => {
expect(true).to.be.true
it('should add episodes to a seasonal show', done => {
const stub = sinon.stub(showHelper, '_updateEpisodes')
stub.resolves()

showHelper.addEpisodes(testShow, {
'dateBased': true,
...torrent
}, testShow.slug).then(res => {
expect(true).to.be.true
stub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#addEpisodes} */
it('should add episodes to a datebased show', done => {
const stub = sinon.stub(showHelper, '_updateEpisodes')
stub.resolves()

showHelper.addEpisodes(testShow, torrent, testShow.slug).then(res => {
expect(true).to.be.true
stub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#addEpisodes} */
it('should throw an error when adding episodes', done => {
const stub = sinon.stub(showHelper, '_addSeasonalSeason')
stub.throws()

showHelper.addEpisodes(testShow, torrent, testShow.slug).then(res => {
expect(res).to.be.undefined
stub.restore()

done()
}).catch(done)
})

/** @test {ShowHelper#_getTmdbImages} */
Expand All @@ -83,22 +212,34 @@ describe('ShowHelper', () => {
.then(done)
.catch(err => {
expect(err).to.be.an('Error')
stub.restore()

done()
})
})

/** @test {ShowHelper#_getTvdbImages} */
it.skip('should get show images from TVDB', done => {
it('should get show images from TVDB', done => {
showHelper._getTvdbImages(296762)
.then(res => abstractHelperTests.testImages(res, done))
.catch(done)
})

/** @test {ShowHelper#_getTvdbImages} */
it.skip('should get show images from TVDB', done => {
it('should fail to get show images from TVDB', done => {
const stub = sinon.stub(tvdb, 'getSeriesById')
stub.resolves({
banner: null
})

showHelper._getTvdbImages(296762)
.then(res => abstractHelperTests.testImages(res, done))
.catch(done)
.then(done)
.catch(err => {
expect(err).to.be.an('Error')
stub.restore()

done()
})
})

/** @test {ShowHelper#_getFanartImages} */
Expand Down Expand Up @@ -217,4 +358,14 @@ describe('ShowHelper', () => {
done()
}).catch(done)
})

/**
* Hook for tearing down the ShowHelper tests.
* @type {Function}
*/
after(done => {
database.disconnect()
.then(() => done())
.catch(done)
})
})

0 comments on commit 48b9988

Please sign in to comment.