83 lines
1.9 KiB
Go
83 lines
1.9 KiB
Go
package export
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/brianvoe/gofakeit/v6"
|
|
)
|
|
|
|
func TestYMLSerialize(t *testing.T) {
|
|
faker := gofakeit.New(0)
|
|
|
|
categories := make([]Category, faker.Rand.Intn(4))
|
|
knownCategory := map[int64]struct{}{}
|
|
categoryIDs := make([]int64, 0, 10)
|
|
for i := range categories {
|
|
categories[i].ID = faker.Int64()
|
|
categories[i].Name = faker.HipsterWord()
|
|
categories[i].ParentID = faker.Int64()
|
|
|
|
if _, ok := knownCategory[categories[i].ID]; ok {
|
|
continue
|
|
}
|
|
|
|
knownCategory[categories[i].ID] = struct{}{}
|
|
categoryIDs = append(categoryIDs, categories[i].ID)
|
|
}
|
|
|
|
offers := make([]Offer, faker.Rand.Intn(5)+1)
|
|
for i := range offers {
|
|
offer := &offers[i]
|
|
offer.ID = faker.Int64()
|
|
offer.Type = "vendor.model"
|
|
offer.Available = true
|
|
offer.URL = faker.URL()
|
|
offer.Price = int(faker.Price(10, 1000))
|
|
offer.CurrencyID = "RUR"
|
|
offer.CategoryID = categoryIDs[faker.Rand.Intn(len(categoryIDs))]
|
|
for i := 0; i < faker.Rand.Intn(3); i++ {
|
|
offer.PictureURLs = append(offer.PictureURLs, faker.ImageURL(128, 128))
|
|
}
|
|
offer.Vendor = faker.Company()
|
|
offer.Model = faker.CarModel()
|
|
offer.VendorCode = faker.DigitN(8)
|
|
offer.TypePrefix = faker.ProductName()
|
|
offer.Description = faker.Sentence(12)
|
|
offer.ManufacturerWarrany = true
|
|
for i := 0; i < faker.Rand.Intn(8); i++ {
|
|
offer.Params = append(offer.Params, Param{
|
|
Name: faker.AdjectiveProper(),
|
|
Value: faker.Digit(),
|
|
})
|
|
}
|
|
}
|
|
|
|
var catalog YmlCatalog
|
|
catalog.Shop = Shop{
|
|
Name: faker.ProductName(),
|
|
URL: faker.URL(),
|
|
Company: faker.Company(),
|
|
Platform: "BSM/Yandex/Market",
|
|
Version: faker.AppVersion(),
|
|
Currencies: []Currency{{
|
|
ID: "RUR",
|
|
Rate: 1,
|
|
}},
|
|
Categories: categories,
|
|
Offers: offers,
|
|
}
|
|
catalog.Date = faker.Date().Truncate(time.Second)
|
|
|
|
container := YmlContainer{
|
|
YmlCatalog: catalog,
|
|
}
|
|
enc := xml.NewEncoder(os.Stdout)
|
|
enc.Indent("", " ")
|
|
_ = enc.Encode(container)
|
|
println()
|
|
t.FailNow()
|
|
}
|