From 89a1b1c12760fad10550bf36027cbb18bbafb2c2 Mon Sep 17 00:00:00 2001 From: Patrick Fairbank Date: Thu, 4 Sep 2014 22:04:21 -0700 Subject: [PATCH] Added unit tests for sponsor slides. --- api_test.go | 4 +- .../20140823193501_CreateSponsorSlides.sql | 2 +- setup_sponsor_slides.go | 5 +- setup_sponsor_slides_test.go | 52 ++++++++++++++++ sponsor_slide.go | 12 ++-- sponsor_slide_test.go | 61 +++++++++++++++++++ static/js/audience_display.js | 4 +- templates/sponsor_slides.html | 39 +++++++----- 8 files changed, 150 insertions(+), 29 deletions(-) create mode 100644 setup_sponsor_slides_test.go create mode 100644 sponsor_slide_test.go diff --git a/api_test.go b/api_test.go index 0605ca5..cf69563 100644 --- a/api_test.go +++ b/api_test.go @@ -85,8 +85,8 @@ func TestSponsorSlides(t *testing.T) { defer clearDb() db, _ = OpenDatabase(testDbPath) - slide1 := SponsorSlide{1, "subtitle", "line1", "line2", "image", "priority"} - slide2 := SponsorSlide{2, "Chezy Sponsaur", "Teh", "Chezy Pofs", "ejface.jpg", "high"} + slide1 := SponsorSlide{1, "subtitle", "line1", "line2", "image", 2} + slide2 := SponsorSlide{2, "Chezy Sponsaur", "Teh", "Chezy Pofs", "ejface.jpg", 54} db.CreateSponsorSlide(&slide1) db.CreateSponsorSlide(&slide2) diff --git a/db/migrations/20140823193501_CreateSponsorSlides.sql b/db/migrations/20140823193501_CreateSponsorSlides.sql index 384795e..4e23097 100644 --- a/db/migrations/20140823193501_CreateSponsorSlides.sql +++ b/db/migrations/20140823193501_CreateSponsorSlides.sql @@ -5,7 +5,7 @@ CREATE TABLE sponsor_slides ( line1 VARCHAR(255), line2 VARCHAR(255), image VARCHAR(255), - priority VARCHAR(255) + displaytimesec int ); -- +goose Down diff --git a/setup_sponsor_slides.go b/setup_sponsor_slides.go index 6313d36..12436c9 100644 --- a/setup_sponsor_slides.go +++ b/setup_sponsor_slides.go @@ -49,17 +49,18 @@ func SponsorSlidesPostHandler(w http.ResponseWriter, r *http.Request) { return } } else { + displayTimeSec, _ := strconv.Atoi(r.PostFormValue("displayTimeSec")) if sponsorSlide == nil { sponsorSlide = &SponsorSlide{Subtitle: r.PostFormValue("subtitle"), Line1: r.PostFormValue("line1"), Line2: r.PostFormValue("line2"), - Image: r.PostFormValue("image"), Priority: r.PostFormValue("priority")} + Image: r.PostFormValue("image"), DisplayTimeSec: displayTimeSec} err = db.CreateSponsorSlide(sponsorSlide) } else { sponsorSlide.Subtitle = r.PostFormValue("subtitle") sponsorSlide.Line1 = r.PostFormValue("line1") sponsorSlide.Line2 = r.PostFormValue("line2") sponsorSlide.Image = r.PostFormValue("image") - sponsorSlide.Priority = r.PostFormValue("priority") + sponsorSlide.DisplayTimeSec = displayTimeSec err = db.SaveSponsorSlide(sponsorSlide) } if err != nil { diff --git a/setup_sponsor_slides_test.go b/setup_sponsor_slides_test.go new file mode 100644 index 0000000..79ab008 --- /dev/null +++ b/setup_sponsor_slides_test.go @@ -0,0 +1,52 @@ +// Copyright 2014 Team 254. All Rights Reserved. +// Author: pat@patfairbank.com (Patrick Fairbank) + +package main + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestSetupSponsorSlides(t *testing.T) { + clearDb() + defer clearDb() + var err error + db, err = OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + eventSettings, _ = db.GetEventSettings() + mainArena.Setup() + + db.CreateSponsorSlide(&SponsorSlide{0, "Subtitle", "Sponsor Line 1", "Sponsor Line 2", "", 10}) + db.CreateSponsorSlide(&SponsorSlide{0, "Subtitle", "", "", "Image.gif", 10}) + + recorder := getHttpResponse("/setup/sponsor_slides") + assert.Equal(t, 200, recorder.Code) + assert.Contains(t, recorder.Body.String(), "Sponsor Line 1") + assert.Contains(t, recorder.Body.String(), "Image.gif") + + recorder = postHttpResponse("/setup/sponsor_slides", "action=delete&id=1") + assert.Equal(t, 302, recorder.Code) + recorder = getHttpResponse("/setup/sponsor_slides") + assert.Equal(t, 200, recorder.Code) + assert.NotContains(t, recorder.Body.String(), "Sponsor Line 1") + assert.Contains(t, recorder.Body.String(), "Image.gif") + + recorder = postHttpResponse("/setup/sponsor_slides", "action=save&line2=Sponsor Line 2 revised") + assert.Equal(t, 302, recorder.Code) + recorder = getHttpResponse("/setup/sponsor_slides") + assert.Equal(t, 200, recorder.Code) + assert.Contains(t, recorder.Body.String(), "Sponsor Line 2 revised") + sponsorSlide, _ := db.GetSponsorSlideById(3) + assert.NotNil(t, sponsorSlide) + + recorder = postHttpResponse("/setup/sponsor_slides", "action=save&image=Image2.gif&id=2") + assert.Equal(t, 302, recorder.Code) + recorder = getHttpResponse("/setup/sponsor_slides") + assert.Equal(t, 200, recorder.Code) + assert.NotContains(t, recorder.Body.String(), "Image.gif") + assert.Contains(t, recorder.Body.String(), "Image2.gif") + sponsorSlide, _ = db.GetSponsorSlideById(3) + assert.NotNil(t, sponsorSlide) +} diff --git a/sponsor_slide.go b/sponsor_slide.go index 9357972..70558ed 100644 --- a/sponsor_slide.go +++ b/sponsor_slide.go @@ -6,12 +6,12 @@ package main type SponsorSlide struct { - Id int - Subtitle string - Line1 string - Line2 string - Image string - Priority string + Id int + Subtitle string + Line1 string + Line2 string + Image string + DisplayTimeSec int } func (database *Database) CreateSponsorSlide(sponsorSlide *SponsorSlide) error { diff --git a/sponsor_slide_test.go b/sponsor_slide_test.go new file mode 100644 index 0000000..871b132 --- /dev/null +++ b/sponsor_slide_test.go @@ -0,0 +1,61 @@ +// Copyright 2014 Team 254. All Rights Reserved. +// Author: pat@patfairbank.com (Patrick Fairbank) + +package main + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGetNonexistentSponsorSlide(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + sponsorSlide, err := db.GetSponsorSlideById(1114) + assert.Nil(t, err) + assert.Nil(t, sponsorSlide) +} + +func TestSponsorSlideCrud(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + sponsorSlide := SponsorSlide{0, "Subtitle", "Line 1", "Line 2", "", 10} + db.CreateSponsorSlide(&sponsorSlide) + sponsorSlide2, err := db.GetSponsorSlideById(1) + assert.Nil(t, err) + assert.Equal(t, sponsorSlide, *sponsorSlide2) + + sponsorSlide.Line1 = "Blorpy" + db.SaveSponsorSlide(&sponsorSlide) + sponsorSlide2, err = db.GetSponsorSlideById(1) + assert.Nil(t, err) + assert.Equal(t, sponsorSlide.Line1, sponsorSlide2.Line1) + + db.DeleteSponsorSlide(&sponsorSlide) + sponsorSlide2, err = db.GetSponsorSlideById(1) + assert.Nil(t, err) + assert.Nil(t, sponsorSlide2) +} + +func TestTruncateSponsorSlides(t *testing.T) { + clearDb() + defer clearDb() + db, err := OpenDatabase(testDbPath) + assert.Nil(t, err) + defer db.Close() + + sponsorSlide := SponsorSlide{0, "Subtitle", "Line 1", "Line 2", "", 10} + db.CreateSponsorSlide(&sponsorSlide) + db.TruncateSponsorSlides() + sponsorSlide2, err := db.GetSponsorSlideById(1) + assert.Nil(t, err) + assert.Nil(t, sponsorSlide2) +} diff --git a/static/js/audience_display.js b/static/js/audience_display.js index e5c7b08..480a60e 100644 --- a/static/js/audience_display.js +++ b/static/js/audience_display.js @@ -325,9 +325,9 @@ var initializeSponsorDisplay = function() { active = ''; if(sponsors[index]['Image'].length) - $('#sponsorContainer').append('

'+sponsors[index]['Subtitle']+'

'); + $('#sponsorContainer').append('

'+sponsors[index]['Subtitle']+'

'); else - $('#sponsorContainer').append('

'+sponsors[index]['Line1']+'
'+sponsors[index]['Line2']+'

'+sponsors[index]['Subtitle']+'

'); + $('#sponsorContainer').append('

'+sponsors[index]['Line1']+'
'+sponsors[index]['Line2']+'

'+sponsors[index]['Subtitle']+'

'); }); diff --git a/templates/sponsor_slides.html b/templates/sponsor_slides.html index 87935b8..e074082 100644 --- a/templates/sponsor_slides.html +++ b/templates/sponsor_slides.html @@ -6,38 +6,43 @@ Sponsor Slides Configuration

Place images in /static/img/sponsors/

{{range $sponsorSlide := .SponsorSlides}} -
+
- +
- +
- +
- +
@@ -79,9 +84,9 @@
- +
- +
@@ -97,17 +102,19 @@ {{end}} {{define "script"}} -