catalog_test.go 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. // Copyright 2018 Frédéric Guillot. All rights reserved.
  2. // Use of this source code is governed by the Apache 2.0
  3. // license that can be found in the LICENSE file.
  4. package locale // import "miniflux.app/locale"
  5. import "testing"
  6. func TestParserWithInvalidData(t *testing.T) {
  7. _, err := parseTranslationMessages([]byte(`{`))
  8. if err == nil {
  9. t.Fatal(`An error should be returned when parsing invalid data`)
  10. }
  11. }
  12. func TestParser(t *testing.T) {
  13. translations, err := parseTranslationMessages([]byte(`{"k": "v"}`))
  14. if err != nil {
  15. t.Fatalf(`Unexpected parsing error: %v`, err)
  16. }
  17. if translations == nil {
  18. t.Fatal(`Translations should not be nil`)
  19. }
  20. value, found := translations["k"]
  21. if !found {
  22. t.Fatal(`The translation should contains the defined key`)
  23. }
  24. if value.(string) != "v" {
  25. t.Fatal(`The translation key should contains the defined value`)
  26. }
  27. }
  28. func TestLoadCatalog(t *testing.T) {
  29. if err := LoadCatalogMessages(); err != nil {
  30. t.Fatal(err)
  31. }
  32. }
  33. func TestAllKeysHaveValue(t *testing.T) {
  34. for language := range AvailableLanguages() {
  35. messages, err := loadTranslationFile(language)
  36. if err != nil {
  37. t.Fatalf(`Unable to load translation messages for language %q`, language)
  38. }
  39. if len(messages) == 0 {
  40. t.Fatalf(`The language %q doesn't have any messages`, language)
  41. }
  42. for k, v := range messages {
  43. switch value := v.(type) {
  44. case string:
  45. if value == "" {
  46. t.Errorf(`The key %q for the language %q have an empty string as value`, k, language)
  47. }
  48. case []string:
  49. if len(value) == 0 {
  50. t.Errorf(`The key %q for the language %q have an empty list as value`, k, language)
  51. }
  52. }
  53. }
  54. }
  55. }
  56. func TestMissingTranslations(t *testing.T) {
  57. refLang := "en_US"
  58. references, err := loadTranslationFile(refLang)
  59. if err != nil {
  60. t.Fatal(`Unable to parse reference language`)
  61. }
  62. for language := range AvailableLanguages() {
  63. if language == refLang {
  64. continue
  65. }
  66. messages, err := loadTranslationFile(language)
  67. if err != nil {
  68. t.Fatalf(`Parsing error for language %q`, language)
  69. }
  70. for key := range references {
  71. if _, found := messages[key]; !found {
  72. t.Fatalf(`Translation key %q not found in language %q`, key, language)
  73. }
  74. }
  75. }
  76. }