Added unit tests for sponsor slides.

This commit is contained in:
Patrick Fairbank
2014-09-04 22:04:21 -07:00
parent 5f0af96596
commit 89a1b1c127
8 changed files with 150 additions and 29 deletions

View File

@@ -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)

View File

@@ -5,7 +5,7 @@ CREATE TABLE sponsor_slides (
line1 VARCHAR(255),
line2 VARCHAR(255),
image VARCHAR(255),
priority VARCHAR(255)
displaytimesec int
);
-- +goose Down

View File

@@ -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 {

View File

@@ -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)
}

View File

@@ -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 {

61
sponsor_slide_test.go Normal file
View File

@@ -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)
}

View File

@@ -325,9 +325,9 @@ var initializeSponsorDisplay = function() {
active = '';
if(sponsors[index]['Image'].length)
$('#sponsorContainer').append('<div class="item '+active+'" data-interval="'+sponsors[index]["Priority"]*1000+'"><img src="/static/img/sponsors/'+sponsors[index]['Image']+'" /><h1>'+sponsors[index]['Subtitle']+'</h1></div>');
$('#sponsorContainer').append('<div class="item '+active+'" data-interval="'+sponsors[index]["DisplayTimeSec"]*1000+'"><img src="/static/img/sponsors/'+sponsors[index]['Image']+'" /><h1>'+sponsors[index]['Subtitle']+'</h1></div>');
else
$('#sponsorContainer').append('<div class="item '+active+'" data-interval="'+sponsors[index]["Priority"]*1000+'"><h2>'+sponsors[index]['Line1']+'<br />'+sponsors[index]['Line2']+'</h2><h1>'+sponsors[index]['Subtitle']+'</h1></div>');
$('#sponsorContainer').append('<div class="item '+active+'" data-interval="'+sponsors[index]["DisplayTimeSec"]*1000+'"><h2>'+sponsors[index]['Line1']+'<br />'+sponsors[index]['Line2']+'</h2><h1>'+sponsors[index]['Subtitle']+'</h1></div>');
});

View File

@@ -6,38 +6,43 @@
<legend>Sponsor Slides Configuration</legend>
<p>Place images in /static/img/sponsors/</p>
{{range $sponsorSlide := .SponsorSlides}}
<form class="form-horizontal existing" action="/setup/sponsor_slides" method="POST" data-priority="{{$sponsorSlide.Priority}}">
<form class="form-horizontal existing" action="/setup/sponsor_slides" method="POST">
<div class="form-group">
<div class="col-lg-7">
<input type="hidden" name="id" value="{{$sponsorSlide.Id}}" />
<div class="form-group imagetoggle">
<label for="image" class="col-sm-5 control-label">Image File Name</label>
<div class="col-sm-7">
<input type="text" class="form-control" name="image" placeholder="image.svg" value="{{$sponsorSlide.Image}}">
<input type="text" class="form-control" name="image" placeholder="image.svg"
value="{{$sponsorSlide.Image}}">
</div>
</div>
<div class="form-group hidden imagetoggle">
<label for="line1" class="col-sm-5 control-label">Line 1 Text</label>
<div class="col-sm-7">
<input type="text" class="form-control" value="{{$sponsorSlide.Line1}}" name="line1" placeholder="Chezy">
<input type="text" class="form-control" value="{{$sponsorSlide.Line1}}" name="line1"
placeholder="Chezy">
</div>
</div>
<div class="form-group hidden imagetoggle">
<label for="line2" class="col-sm-5 control-label">Line 2 Text</label>
<div class="col-sm-7">
<input type="text" class="form-control" value="{{$sponsorSlide.Line2}}" name="line2" placeholder="Industries">
<input type="text" class="form-control" value="{{$sponsorSlide.Line2}}" name="line2"
placeholder="Industries">
</div>
</div>
<div class="form-group">
<label for="subtitle" class="col-sm-5 control-label">Subtitle Text</label>
<div class="col-sm-7">
<input type="text" class="form-control" name="subtitle" value="{{$sponsorSlide.Subtitle}}" placeholder="Gold Sponsor">
<input type="text" class="form-control" name="subtitle" value="{{$sponsorSlide.Subtitle}}"
placeholder="Gold Sponsor">
</div>
</div>
<div class="form-group">
<label for="priority" class="col-sm-5 control-label">Display Time (s)</label>
<label for="displayTimeSec" class="col-sm-5 control-label">Display Time (s)</label>
<div class="col-sm-7">
<input type="number" class="form-control" name="priority" value="{{$sponsorSlide.Priority}}" placeholder="10">
<input type="number" class="form-control" name="displayTimeSec"
value="{{$sponsorSlide.DisplayTimeSec}}" placeholder="10">
</div>
</div>
</div>
@@ -79,9 +84,9 @@
</div>
</div>
<div class="form-group">
<label for="priority" class="col-sm-5 control-label">Display Time (s)</label>
<label for="displayTimeSec" class="col-sm-5 control-label">Display Time (s)</label>
<div class="col-sm-7">
<input type="number" class="form-control" name="priority" placeholder="10">
<input type="number" class="form-control" name="displayTimeSec" placeholder="10">
</div>
</div>
</div>
@@ -97,17 +102,19 @@
</div>
{{end}}
{{define "script"}}
<script type='text/javascript'>
<script type="text/javascript">
$(function(){
$('form.existing').each(function(index){
if(!$(this).find('input[name=image]').val().length && ($(this).find('input[name=line2]').val().length || $(this).find('input[name=line1]').val().length))
$(this).find('.imagetoggle').toggleClass('hidden');
$("form.existing").each(function(index){
if (!$(this).find("input[name=image]").val().length && ($(this).find("input[name=line2]").val().length
|| $(this).find("input[name=line1]").val().length)) {
$(this).find(".imagetoggle").toggleClass("hidden");
}
});
$('button[name=toggleImage]').click(function(event){
$("button[name=toggleImage]").click(function(event) {
event.preventDefault();
$(this).parents('form').find('.imagetoggle').toggleClass('hidden');
$(this).parents('form').find('.imagetoggle input').val('');
$(this).parents("form").find(".imagetoggle").toggleClass("hidden");
$(this).parents("form").find(".imagetoggle input").val("");
});
});
</script>