func TestCreateEpisodeData(t *testing.T) { recordedTime, _ := time.Parse("2006-01-02 15:04:05", "2015-01-01 18:02:01") videoManifest, err := extron.CreateVideoManifest( "SMP-351-0C-E9-4E", recordedTime, "London", "../data/sample_iPod.m4v", "00:01:25", "../data/01515171.jpg") if err != nil { t.Error(err) } episodeData := videoManifest.CreateEpisodeData() // Test dcterms:created expectedCreated := "2015-01-01T18:02:01Z" created := episodeData.Created if created != expectedCreated { t.Errorf("Expected %v, got %v.", expectedCreated, created) } // Test dcterms:identifier expectedIdentifier := "SMP-351-0C-E9-4E_20150101-180201Z" id := episodeData.Identifier if id != expectedIdentifier { t.Errorf("Expected %v, got %v.", expectedIdentifier, id) } }
func TestCreateFiles(t *testing.T) { injestLocation, err := ioutil.TempDir(os.TempDir(), "extron") if err != nil { t.Error(err) } fmt.Println(injestLocation) defer os.RemoveAll(injestLocation) recordedTime, _ := time.Parse("2006-01-02 15:04:05", "2015-01-01 18:02:01") videoManifest, err := extron.CreateVideoManifest( "SMP-351-0C-E9-4E", recordedTime, "London", "../data/sample_iPod.m4v", "00:01:25", "../data/01515171.jpg") if err != nil { t.Error(err) } err = videoManifest.CreateFiles(injestLocation) if err != nil { t.Error(err) } // Assert manifest file exists tempDir := path.Join(injestLocation, videoManifest.GetPrefix()) manifestFile := path.Join(tempDir, fmt.Sprintf("%v.json", videoManifest.GetPrefix())) if !extron.FileExists(manifestFile) { t.Errorf("Missing manifest file: %v", manifestFile) } // Assert video file has been copied videoFile := path.Join(tempDir, fmt.Sprintf("%v_S1R1.m4v", videoManifest.GetPrefix())) if !extron.FileExists(videoFile) { t.Errorf("Missing video file: %v", videoFile) } // Assert episode.xml exists episodeFile := path.Join(tempDir, "episode.xml") if !extron.FileExists(episodeFile) { t.Errorf("Missing video file: %v", episodeFile) } // Assert thumbnail exists thumbnail := path.Join(tempDir, "thumbnails", "01515171.jpg") if !extron.FileExists(thumbnail) { t.Errorf("Missing thumbnail file: %v", thumbnail) } // Assert xfer_complete exists xfer_complete := path.Join(tempDir, "xfer_complete") if !extron.FileExists(xfer_complete) { t.Errorf("Missing xfer_complete file: %v", xfer_complete) } }
func TestCreateEpisodeXml(t *testing.T) { recordedTime, _ := time.Parse("2006-01-02 15:04:05", "2015-01-01 18:02:01") videoManifest, err := extron.CreateVideoManifest( "SMP-351-0C-E9-4E", recordedTime, "London", "../data/sample_iPod.m4v", "00:01:25", "../data/01515171.jpg") if err != nil { t.Error(err) } episodeData, err := videoManifest.CreateEpisodeXml() if err != nil { t.Error(err) } if episodeData == "" { t.Error("Episode xml was empty string") } var x extron.EpisodeXml err = xml.Unmarshal([]byte(episodeData), &x) if err != nil { t.Error(err) } // Test dcterms:created expectedCreated := "2015-01-01T18:02:01Z" created := x.Created if created != expectedCreated { t.Errorf("Expected %v, got %v.", expectedCreated, created) } // Test dcterms:identifier expectedIdentifier := "SMP-351-0C-E9-4E_20150101-180201Z" id := x.Id if id != expectedIdentifier { t.Errorf("Expected %v, got %v.", expectedIdentifier, id) } // Test dcterms:title expectedTitle := "SMP-351-0C-E9-4E_20150101-180201Z" title := x.Title if title != expectedTitle { t.Errorf("Expected %v, got %v.", expectedTitle, title) } }
func TestGetPrefix(t *testing.T) { recordedTime, _ := time.Parse("2006-01-02 15:04:05", "2015-01-01 18:02:01") videoManifest, err := extron.CreateVideoManifest( "SMP-351-0C-E9-4E", recordedTime, "London", "../data/sample_iPod.m4v", "00:01:25", "../data/01515171.jpg") if err != nil { t.Error(err) } expectedPrefix := "SMP-351-0C-E9-4E_20150101-180201Z" prefix := videoManifest.GetPrefix() if prefix != expectedPrefix { t.Errorf("Expected %v, got %v.", expectedPrefix, prefix) } }
func TestCreateJsonManifest(t *testing.T) { expectedPrefix := "SMP-351-0C-E9-4E_20150101-180201Z" recordedTime, _ := time.Parse("2006-01-02 15:04:05", "2015-01-01 18:02:01") videoManifest, err := extron.CreateVideoManifest( "SMP-351-0C-E9-4E", recordedTime, "London", "../data/sample_iPod.m4v", "00:01:25", "../data/01515171.jpg") if err != nil { t.Error(err) } manifest, err := videoManifest.CreateJsonManifest() if err != nil { t.Error(err) } var f interface{} d := json.NewDecoder(strings.NewReader(manifest)) d.UseNumber() if err := d.Decode(&f); err != nil { fmt.Println("Fail to json decode mainfest") log.Fatal(err) } if err != nil { t.Error(err) } // Assert name p := f.(map[string]interface{})["package"].(map[string]interface{}) name := p["name"] if name != expectedPrefix { t.Errorf("Expected %v, got %v.", expectedPrefix, name) } // Assert location location := p["location"] if location != "London" { t.Errorf("Expected %v, got %v.", "London", location) } // Assert video filename streams := p["streams"].([]interface{}) recording := streams[0].(map[string]interface{})["recordings"].([]interface{})[0].(map[string]interface{}) expectedVideoName := fmt.Sprintf("%v_%v", expectedPrefix, "S1R1.m4v") videoName := recording["name"] if videoName != expectedVideoName { t.Errorf("Expected %v, got %v.", expectedVideoName, videoName) } // Recordings created date created := recording["created"] expectedCreated := "Thu Jan 1 18:02:01" if created != expectedCreated { t.Errorf("Expected %v, got %v.", expectedCreated, created) } // Test duration duration := recording["duration"] expectedDuration := "00:01:25" if duration != expectedDuration { t.Errorf("Expected %v, got %v.", expectedDuration, duration) } // Test recording size size, _ := recording["file_size"].(json.Number).Int64() expectedSize := int64(2236480) if size != expectedSize { t.Errorf("Expected %v, got %v.", expectedSize, size) } // Test duration thumbnails := streams[0].(map[string]interface{})["thumbnails"].([]interface{})[0].(map[string]interface{}) thumbnail := thumbnails["name"] expectedThumbnail := "01515171.jpg" if thumbnail != expectedThumbnail { t.Errorf("Expected %v, got %v.", expectedThumbnail, thumbnail) } // Test local_time localTime := p["local_time"] excpectedLocalTime := "Thu Jan 1 18:02:01 2015" if localTime != excpectedLocalTime { t.Errorf("Expected %v, got %v.", excpectedLocalTime, localTime) } // Test utc_time utcTime := p["utc_time"] excpectedUTCTime := "Thu Jan 1 18:02:01 2015" if utcTime != excpectedUTCTime { t.Errorf("Expected %v, got %v.", excpectedUTCTime, utcTime) } // Test dc:identifier metaData := p["metadata"].(map[string]interface{}) dcIdentifier := metaData["dc:identifier"] expectedDcIdentifier := expectedPrefix if dcIdentifier != expectedDcIdentifier { t.Errorf("Expected %v, got %v.", expectedDcIdentifier, dcIdentifier) } // Test dc:date dcDate := metaData["dc:date"] if dcDate != excpectedUTCTime { t.Errorf("Expected %v, got %v.", excpectedUTCTime, dcDate) } // Test package_size packageSize, _ := p["package_size"].(json.Number).Int64() expectedPackageSize := int64(2309763) if packageSize != expectedPackageSize { t.Errorf("Expected %v, got %v.", expectedPackageSize, packageSize) } }