package mandarake import ( "context" "testing" ) func TestParser_processPrices(t *testing.T) { type fields struct { baseCtx context.Context externalBrowser string goroutinesNumber int } type args struct { singlePrice string rangedPrice string } var placeholderFields = fields{ baseCtx: context.Background(), externalBrowser: "", goroutinesNumber: 10, } //single := "18,000円 (税込 19,800円)" //ranged := "(他15,000円~16,000円もあります)" tests := []struct { name string fields fields args args want int32 }{ //Cases {name: "Full success", fields: placeholderFields, args: args{ singlePrice: "18,000円 (税込 19,800円)", rangedPrice: "(他15,000円~16,000円もあります)", }, want: 16500}, {name: "Single price only success 1", fields: placeholderFields, args: args{ singlePrice: "18,000円 (税込 19,800円)", rangedPrice: "", }, want: 19800}, {name: "Single price only success 2", fields: placeholderFields, args: args{ singlePrice: "18,000円 (税込 19,800円)", rangedPrice: "no numbers in this string", }, want: 19800}, {name: "zero single price success 1", fields: placeholderFields, args: args{ singlePrice: "", rangedPrice: "", }, want: 0}, {name: "zero single price success 2", fields: placeholderFields, args: args{ singlePrice: "no numbers in this string", rangedPrice: "", }, want: 0}, {name: "zero single price success 3", fields: placeholderFields, args: args{ singlePrice: "no numbers in this string", rangedPrice: "no numbers in this string", }, want: 0}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { s := &Parser{ baseCtx: tt.fields.baseCtx, externalBrowser: tt.fields.externalBrowser, goroutinesNumber: tt.fields.goroutinesNumber, } if got := s.processPrices(tt.args.singlePrice, tt.args.rangedPrice); got != tt.want { t.Errorf("processPrices() = %v, want %v", got, tt.want) } }) } }