package movies import ( "fmt" "os" "testing" "github.com/Sirupsen/logrus" "github.com/jmoiron/sqlx" _ "github.com/lib/pq" _ "github.com/mattes/migrate/driver/postgres" "github.com/odwrtw/polochon/lib" "github.com/odwrtw/polochon/modules/mock" "gitlab.quimbo.fr/odwrtw/canape-sql/sqly" ) var db *sqlx.DB var pgdsn string func init() { var err error pgdsn = os.Getenv("POSTGRES_DSN") db, err = sqlx.Connect("postgres", pgdsn) if err != nil { fmt.Printf("Unavailable PG tests:\n %v\n", err) os.Exit(1) } } func TestIntegrate(t *testing.T) { sqly.RunWithLastestMigration(db, pgdsn, t, func(db *sqlx.DB, t *testing.T) { detailer, _ := mock.NewDetailer(nil) polochonConfig := polochon.MovieConfig{ Detailers: []polochon.Detailer{ detailer, }, } movie := Movie{ Movie: polochon.Movie{ MovieConfig: polochonConfig, ImdbID: "tt12345", }, } log := logrus.NewEntry(logrus.New()) err := movie.GetDetails(db, log) if err != nil { t.Fatal(err) } // Get it movie = Movie{ Movie: polochon.Movie{ MovieConfig: polochonConfig, ImdbID: "tt12345", }, } err = movie.Get(db) if err != nil { t.Fatal(err) } if movie.Title != fmt.Sprintf("Movie %s", movie.ImdbID) { t.Fatalf("Unexpected movie's title: %s", movie.Title) } // Delete it err = movie.Delete(db) if err != nil { t.Fatal(err) } // Get it again err = movie.Get(db) if err != ErrNotFound { t.Fatalf("Unexpected error: %q", err) } }) }