translations_test.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 TestAllLanguagesHaveCatalog(t *testing.T) {
  7. for language := range AvailableLanguages() {
  8. if _, found := translations[language]; !found {
  9. t.Fatalf(`This language do not have a catalog: %q`, language)
  10. }
  11. }
  12. }
  13. func TestAllKeysHaveValue(t *testing.T) {
  14. for language := range AvailableLanguages() {
  15. messages, err := parseTranslationDict(translations[language])
  16. if err != nil {
  17. t.Fatalf(`Parsing error for language %q`, language)
  18. }
  19. if len(messages) == 0 {
  20. t.Fatalf(`The language %q doesn't have any messages`, language)
  21. }
  22. for k, v := range messages {
  23. switch value := v.(type) {
  24. case string:
  25. if value == "" {
  26. t.Fatalf(`The key %q for the language %q have an empty string as value`, k, language)
  27. }
  28. case []string:
  29. if len(value) == 0 {
  30. t.Fatalf(`The key %q for the language %q have an empty list as value`, k, language)
  31. }
  32. }
  33. }
  34. }
  35. }
  36. func TestMissingTranslations(t *testing.T) {
  37. refLang := "en_US"
  38. references, err := parseTranslationDict(translations[refLang])
  39. if err != nil {
  40. t.Fatal(`Unable to parse reference language`)
  41. }
  42. for language := range AvailableLanguages() {
  43. if language == refLang {
  44. continue
  45. }
  46. messages, err := parseTranslationDict(translations[language])
  47. if err != nil {
  48. t.Fatalf(`Parsing error for language %q`, language)
  49. }
  50. for key := range references {
  51. if _, found := messages[key]; !found {
  52. t.Fatalf(`Translation key %q not found in language %q`, key, language)
  53. }
  54. }
  55. }
  56. }