]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/sql/Pg/t/lp1501781-unaccent_and_squash.pg
LP1937294: Fix the unaccent and squash tests
[Evergreen.git] / Open-ILS / src / sql / Pg / t / lp1501781-unaccent_and_squash.pg
1 -- Start transaction and plan the tests.
2 BEGIN;
3
4 -- Number of tests that will be run
5 SELECT plan(18);
6
7 -- Run the tests
8
9 SELECT isnt_empty(
10     'SELECT * FROM config.org_unit_setting_type WHERE name = $$circ.patron_search.diacritic_insensitive$$',
11     'circ.patron_search.diacritic_insensitive exists');
12
13 SELECT has_index('actor', 'usr', 'actor_usr_first_given_name_unaccent_idx',
14                  'unaccent_and_squash(first_given_name)',
15                  'Index actor_usr_first_given_name_unaccent_idx exists');
16
17 SELECT has_index('actor', 'usr', 'actor_usr_second_given_name_unaccent_idx',
18                  'unaccent_and_squash(second_given_name)',
19                  'Index actor_usr_second_given_name_unaccent_idx exists');
20
21 SELECT has_index('actor', 'usr', 'actor_usr_family_name_unaccent_idx',
22                  'unaccent_and_squash(family_name)',
23                  'Index actor_usr_family_name_unaccent_idx exists');
24
25 SELECT is(evergreen.unaccent_and_squash('aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ'),
26           'aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz',
27           'English Characters');
28
29 SELECT is(evergreen.unaccent_and_squash('0123456789!@#$%^&*()-+'),
30           '0123456789', 'Numbers and Symbols');
31
32 SELECT is(evergreen.unaccent_and_squash('ÁÉÍÑÓÚÜáéíñóúü¿¡'),
33           CASE WHEN substring(version() from '^PostgreSQL ([0-9]+)\.')::INTEGER < 14 THEN 'aeinouuaeinouu¿¡'
34           ELSE 'aeinouuaeinouu?!' END, 'Spanish');
35
36 SELECT is(evergreen.unaccent_and_squash('ÖÜÇĞŞöüçğşİI'),
37           'oucgsoucgsii', 'Turkish');
38
39 SELECT is(evergreen.unaccent_and_squash('ÄÉÖÜ'),
40           'aeou', 'German');
41
42 SELECT is(evergreen.unaccent_and_squash('АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ'),
43           'абвгдежзийклмнопрстуфхцчшщъыьэюя', 'Russian');
44
45 SELECT is(evergreen.unaccent_and_squash('ÁĄÄÉĘĚÍÓÔÚŮÝČĹŇŔŘŠŽ'),
46           'aaaeeeioouuyclnrrsz', 'Czeck, Slovack & Slovenian');
47
48 SELECT is(evergreen.unaccent_and_squash('Άά Έέ Ήή Ίί Όό Ύύ Ώώ'),
49           CASE WHEN substring(version() from '^PostgreSQL ([0-9]+)\.')::INTEGER < 12 THEN 'άάέέήήίίόόύύώώ'
50           ELSE 'ααεεηηιιοουυωω' END, 'Greek');
51
52 SELECT is(evergreen.unaccent_and_squash('Jacques Bélanger'),
53           'jacquesbelanger', 'French nom and prénom');
54
55 SELECT is(evergreen.unaccent_and_squash('El Niño'),
56           'elnino', 'Spanish "The Kid"');
57
58 SELECT is(evergreen.unaccent_and_squash('Œuvres'),
59           CASE WHEN substring(version() from '^PostgreSQL ([0-9]+\.[0-9]+)')::DECIMAL > 9.5 THEN 'oeuvres' ELSE 'euvres' END, 'oe ligature');
60
61 -- Punctuation Tests
62
63 SELECT is(evergreen.unaccent_and_squash('O''Brien'),
64           'obrien', 'Apostrophe');
65
66 SELECT is(evergreen.unaccent_and_squash('Grubbly-Plank'),
67           'grubblyplank', 'Hyphen');
68
69 SELECT is(evergreen.unaccent_and_squash('p&#$(a#*&$!s))(\\s'),
70           'pass', 'Punctuation hash');
71
72 -- Finish the test and clean up.
73 SELECT * FROM finish();
74 ROLLBACK;