Created
December 7, 2013 21:57
-
-
Save djforth/7849436 to your computer and use it in GitHub Desktop.
Sets a Release Date
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define (require)-> | |
_ = require('underscore') | |
class ReleaseDate | |
release:0 | |
current_date:0 | |
differance:0 | |
release_id:"release_date" | |
release_massage:"" | |
MONTHS:['January', 'February', 'March', 'April', 'May', 'June','July', 'August', 'September', 'October', 'November', 'December'] | |
SHORT_MONTHS:['Jan', 'Feb', 'March', 'April', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'] | |
MESSAGES:['At cinemas', "At cinemas tomorrow", "At cinemas today", "At cinemas now"] | |
DAY:24 * 60 * 60 * 1000 | |
constructor:(date, relID, initalize=true)-> | |
@current_date = new Date() | |
@release = new Date(date) | |
@release_id = relID if _.isString(relID) | |
if initalize | |
@init() | |
addReleaseMessage:(message)-> | |
el = document.getElementById(@release_id) | |
el.innerHTML=message | |
getDate:(date)-> | |
date.getDate() | |
getDifferance:()-> | |
@release.getTime() - @current_date.getTime() | |
getMonth:(date, short=true)-> | |
array = if short then @SHORT_MONTHS else @MONTHS | |
array[date.getMonth()] | |
init:()-> | |
dif = @getDifferance() | |
state = @stateMachine(dif) | |
m = @setMessage(state) | |
@addReleaseMessage(m) | |
setMessage:(state)-> | |
switch state | |
when 0 | |
@MESSAGES[state] + " " + @getMonth(@release) + " " + @getDate(@release) | |
when -1 | |
@MESSAGES[0] + " " + @getMonth(@release) + " " + @getDate(@release) | |
else @MESSAGES[state] | |
stateMachine:(dif)-> | |
return -1 if !_.isNumber(dif) | |
state = switch | |
when dif <= -@DAY then 3 | |
when dif <= 0 && dif > -@DAY then 2 | |
when dif > 0 && dif <= @DAY then 1 | |
when dif > @DAY then 0 | |
else -1 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
describe "Release", -> | |
beforeEach -> | |
flag = false | |
@DAY = 24 * 60 * 60 * 1000 | |
@release = null | |
that = @ | |
# @feature = new release() | |
require ['release/release'], (Release) -> | |
flag = true | |
# that.Rel = Release | |
that.release = new Release('June 7, 2013', null, false) | |
waitsFor -> | |
flag | |
it 'It should exist', -> | |
expect(@release).toBeDefined() | |
describe "constuctor", -> | |
it "Set the current date", -> | |
expect(@release.current_date).toBeDefined() | |
it 'Set Release date', -> | |
rel_date = new Date('June 7, 2013') | |
expect(@release.release).toEqual(rel_date) | |
describe 'get date text', -> | |
beforeEach -> | |
@rel_date = new Date('January 28, 2014') | |
it "should return long month", -> | |
month = @release.getMonth(@rel_date, false) | |
expect(month).toEqual("January") | |
it "should return short month", -> | |
month = @release.getMonth(@rel_date, true) | |
expect(month).toEqual("Jan") | |
it "should return date", -> | |
month = @release.getDate(@rel_date) | |
expect(month).toEqual(28) | |
describe "should set release date difference functions", -> | |
beforeEach -> | |
@release.current_date = new Date('January 27, 2014') | |
@release.release = new Date('January 28, 2014') | |
it "should return the difference between release date and current date", -> | |
dif = @release.getDifferance() | |
expect(dif).toEqual(@DAY) | |
it "should return the correct states", -> | |
expect(@release.stateMachine(-(@DAY*2))).toBe(3) | |
expect(@release.stateMachine(-200)).toBe(2) | |
expect(@release.stateMachine(200)).toBe(1) | |
expect(@release.stateMachine(@DAY*2)).toBe(0) | |
expect(@release.stateMachine(null)).toBe(-1) | |
describe "should return the correct release message", -> | |
beforeEach -> | |
@release.release = new Date('January 28, 2014') | |
it 'should return the correct messages', -> | |
m = @release.setMessage(0) | |
console.log "test", m | |
expect(@release.setMessage(0)).toMatch('At cinemas Jan 28') | |
expect(@release.setMessage(-1)).toMatch('At cinemas Jan 28') | |
expect(@release.setMessage(1)).toMatch("At cinemas tomorrow") | |
expect(@release.setMessage(2)).toMatch("At cinemas today") | |
describe 'Should add message', -> | |
beforeEach -> | |
loadFixtures('../../../fixtures/release.html') | |
@holder = $("#release_date") | |
it 'should add the correct message to DOM', -> | |
@release.addReleaseMessage("Test message") | |
expect(@holder.text()).toMatch("Test message") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment