generated from VLADIMIR/template
add intro
This commit is contained in:
@@ -104,6 +104,11 @@ func (a *scenarioArchive) Pack(
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
if story.Introduction != nil {
|
||||
if err := addRef(story.Introduction.Audio); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
for _, place := range story.Places {
|
||||
if err := addRef(place.Image); err != nil {
|
||||
return nil, err
|
||||
@@ -137,6 +142,9 @@ func (a *scenarioArchive) Pack(
|
||||
application.Image = rewriteRef(application.Image, archivePathOf)
|
||||
}
|
||||
}
|
||||
if story.Introduction != nil {
|
||||
story.Introduction.Audio = rewriteRef(story.Introduction.Audio, archivePathOf)
|
||||
}
|
||||
|
||||
doc := ScenarioJSON{
|
||||
Version: Version,
|
||||
|
||||
@@ -101,6 +101,48 @@ func TestPackUnpackRoundTrip(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPackUnpackIntroAudioRoundTrip(t *testing.T) {
|
||||
description := "desc"
|
||||
image := "cover.png"
|
||||
scenario := &repos.Scenario{
|
||||
ID: 1,
|
||||
Name: "С введением",
|
||||
Description: &description,
|
||||
Image: &image,
|
||||
Scenario: `{"introduction":{"text":"Введение","audio":"intro.mp3"},"places":[
|
||||
{"code":"club","name":"Клуб","text":"Тёмный зал","image":"club.png"}
|
||||
]}`,
|
||||
}
|
||||
files := memoryFiles{
|
||||
"cover.png": []byte("cover-bytes"),
|
||||
"club.png": []byte("club-bytes"),
|
||||
"intro.mp3": []byte("intro-audio-bytes"),
|
||||
}
|
||||
|
||||
data, err := testArchive.Pack(context.Background(), scenario, testDomain, files.get)
|
||||
if err != nil {
|
||||
t.Fatalf("Pack: %v", err)
|
||||
}
|
||||
|
||||
bundle, err := testArchive.Unpack(data)
|
||||
if err != nil {
|
||||
t.Fatalf("Unpack: %v", err)
|
||||
}
|
||||
|
||||
if bundle.Scenario.Story.Introduction == nil {
|
||||
t.Fatal("Story.Introduction = nil, want введение")
|
||||
}
|
||||
if bundle.Scenario.Story.Introduction.Text != "Введение" {
|
||||
t.Errorf("Introduction.Text = %q, want %q", bundle.Scenario.Story.Introduction.Text, "Введение")
|
||||
}
|
||||
if bundle.Scenario.Story.Introduction.Audio != "images/intro.mp3" {
|
||||
t.Errorf("Introduction.Audio = %q, want %q", bundle.Scenario.Story.Introduction.Audio, "images/intro.mp3")
|
||||
}
|
||||
if _, ok := bundle.Files["images/intro.mp3"]; !ok {
|
||||
t.Errorf("в архиве нет аудиофайла %q", "images/intro.mp3")
|
||||
}
|
||||
}
|
||||
|
||||
func TestPackExternalURLsKeptAndNotFetched(t *testing.T) {
|
||||
description := "desc"
|
||||
scenario := &repos.Scenario{
|
||||
|
||||
Reference in New Issue
Block a user