tennpipes-su 3.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +70 -0
- data/Rakefile +22 -0
- data/lib/tennpipes-su.rb +35 -0
- data/lib/tennpipes-su/access_control.rb +191 -0
- data/lib/tennpipes-su/bootstrap-less/alerts.less +67 -0
- data/lib/tennpipes-su/bootstrap-less/badges.less +55 -0
- data/lib/tennpipes-su/bootstrap-less/bootstrap.less +49 -0
- data/lib/tennpipes-su/bootstrap-less/breadcrumbs.less +26 -0
- data/lib/tennpipes-su/bootstrap-less/button-groups.less +226 -0
- data/lib/tennpipes-su/bootstrap-less/buttons.less +155 -0
- data/lib/tennpipes-su/bootstrap-less/carousel.less +232 -0
- data/lib/tennpipes-su/bootstrap-less/close.less +33 -0
- data/lib/tennpipes-su/bootstrap-less/code.less +63 -0
- data/lib/tennpipes-su/bootstrap-less/component-animations.less +29 -0
- data/lib/tennpipes-su/bootstrap-less/dropdowns.less +213 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/bordered-pulled.less +16 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/core.less +12 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/fixed-width.less +6 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/font-awesome.less +17 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/icons.less +412 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/larger.less +13 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/list.less +19 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/mixins.less +20 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/path.less +14 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/rotated-flipped.less +9 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/spinning.less +30 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/stacked.less +20 -0
- data/lib/tennpipes-su/bootstrap-less/font-awesome/variables.less +381 -0
- data/lib/tennpipes-su/bootstrap-less/forms.less +419 -0
- data/lib/tennpipes-su/bootstrap-less/glyphicons.less +233 -0
- data/lib/tennpipes-su/bootstrap-less/grid.less +100 -0
- data/lib/tennpipes-su/bootstrap-less/input-groups.less +157 -0
- data/lib/tennpipes-su/bootstrap-less/jumbotron.less +44 -0
- data/lib/tennpipes-su/bootstrap-less/labels.less +64 -0
- data/lib/tennpipes-su/bootstrap-less/list-group.less +110 -0
- data/lib/tennpipes-su/bootstrap-less/media.less +56 -0
- data/lib/tennpipes-su/bootstrap-less/mixins.less +926 -0
- data/lib/tennpipes-su/bootstrap-less/modals.less +138 -0
- data/lib/tennpipes-su/bootstrap-less/navbar.less +616 -0
- data/lib/tennpipes-su/bootstrap-less/navs.less +242 -0
- data/lib/tennpipes-su/bootstrap-less/normalize.less +423 -0
- data/lib/tennpipes-su/bootstrap-less/pager.less +55 -0
- data/lib/tennpipes-su/bootstrap-less/pagination.less +88 -0
- data/lib/tennpipes-su/bootstrap-less/panels.less +230 -0
- data/lib/tennpipes-su/bootstrap-less/popovers.less +133 -0
- data/lib/tennpipes-su/bootstrap-less/print.less +101 -0
- data/lib/tennpipes-su/bootstrap-less/progress-bars.less +80 -0
- data/lib/tennpipes-su/bootstrap-less/responsive-utilities.less +93 -0
- data/lib/tennpipes-su/bootstrap-less/scaffolding.less +134 -0
- data/lib/tennpipes-su/bootstrap-less/tables.less +233 -0
- data/lib/tennpipes-su/bootstrap-less/tennpipes-su.less +18 -0
- data/lib/tennpipes-su/bootstrap-less/theme.less +247 -0
- data/lib/tennpipes-su/bootstrap-less/thumbnails.less +36 -0
- data/lib/tennpipes-su/bootstrap-less/tooltip.less +95 -0
- data/lib/tennpipes-su/bootstrap-less/type.less +296 -0
- data/lib/tennpipes-su/bootstrap-less/utilities.less +56 -0
- data/lib/tennpipes-su/bootstrap-less/variables.less +827 -0
- data/lib/tennpipes-su/bootstrap-less/wells.less +29 -0
- data/lib/tennpipes-su/generators/actions.rb +78 -0
- data/lib/tennpipes-su/generators/admin_app.rb +169 -0
- data/lib/tennpipes-su/generators/admin_page.rb +68 -0
- data/lib/tennpipes-su/generators/orm.rb +172 -0
- data/lib/tennpipes-su/generators/templates/account/activerecord.rb.tt +41 -0
- data/lib/tennpipes-su/generators/templates/account/couchrest.rb.tt +67 -0
- data/lib/tennpipes-su/generators/templates/account/datamapper.rb.tt +56 -0
- data/lib/tennpipes-su/generators/templates/account/dynamoid.rb.tt +55 -0
- data/lib/tennpipes-su/generators/templates/account/minirecord.rb.tt +44 -0
- data/lib/tennpipes-su/generators/templates/account/mongoid.rb.tt +54 -0
- data/lib/tennpipes-su/generators/templates/account/mongomapper.rb.tt +47 -0
- data/lib/tennpipes-su/generators/templates/account/ohm.rb.tt +70 -0
- data/lib/tennpipes-su/generators/templates/account/seeds.rb.tt +29 -0
- data/lib/tennpipes-su/generators/templates/account/sequel.rb.tt +53 -0
- data/lib/tennpipes-su/generators/templates/app.rb.tt +42 -0
- data/lib/tennpipes-su/generators/templates/app/controllers/base.rb.tt +5 -0
- data/lib/tennpipes-su/generators/templates/app/controllers/sessions.rb.tt +29 -0
- data/lib/tennpipes-su/generators/templates/assets/images/favicon.ico +0 -0
- data/lib/tennpipes-su/generators/templates/assets/images/font/FontAwesome.otf +0 -0
- data/lib/tennpipes-su/generators/templates/assets/images/font/fontawesome-webfont.eot +0 -0
- data/lib/tennpipes-su/generators/templates/assets/images/font/fontawesome-webfont.svg +414 -0
- data/lib/tennpipes-su/generators/templates/assets/images/font/fontawesome-webfont.ttf +0 -0
- data/lib/tennpipes-su/generators/templates/assets/images/font/fontawesome-webfont.woff +0 -0
- data/lib/tennpipes-su/generators/templates/assets/images/logo.png +0 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/application.js +118 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/affix.js +137 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/alert.js +88 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/bootstrap.min.js +6 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/button.js +107 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/carousel.js +205 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/collapse.js +170 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/dropdown.js +147 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/modal.js +243 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/popover.js +110 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/scrollspy.js +153 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/tab.js +125 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/tooltip.js +399 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/bootstrap/transition.js +48 -0
- data/lib/tennpipes-su/generators/templates/assets/javascripts/jquery-1.11.0.min.js +4 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/application.css +353 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/bootstrap.css +4 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/fonts/FontAwesome.otf +0 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/fonts/fontawesome-webfont.eot +0 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/fonts/fontawesome-webfont.svg +414 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/fonts/fontawesome-webfont.ttf +0 -0
- data/lib/tennpipes-su/generators/templates/assets/stylesheets/fonts/fontawesome-webfont.woff +0 -0
- data/lib/tennpipes-su/generators/templates/erb/app/base/index.erb.tt +15 -0
- data/lib/tennpipes-su/generators/templates/erb/app/errors/403.erb.tt +3 -0
- data/lib/tennpipes-su/generators/templates/erb/app/errors/404.erb.tt +3 -0
- data/lib/tennpipes-su/generators/templates/erb/app/errors/500.erb.tt +3 -0
- data/lib/tennpipes-su/generators/templates/erb/app/layouts/application.erb.tt +64 -0
- data/lib/tennpipes-su/generators/templates/erb/app/layouts/error.erb.tt +23 -0
- data/lib/tennpipes-su/generators/templates/erb/app/sessions/new.erb.tt +44 -0
- data/lib/tennpipes-su/generators/templates/erb/page/_form.erb.tt +18 -0
- data/lib/tennpipes-su/generators/templates/erb/page/edit.erb.tt +10 -0
- data/lib/tennpipes-su/generators/templates/erb/page/index.erb.tt +81 -0
- data/lib/tennpipes-su/generators/templates/erb/page/new.erb.tt +9 -0
- data/lib/tennpipes-su/generators/templates/haml/app/base/index.haml.tt +12 -0
- data/lib/tennpipes-su/generators/templates/haml/app/errors/403.haml.tt +3 -0
- data/lib/tennpipes-su/generators/templates/haml/app/errors/404.haml.tt +3 -0
- data/lib/tennpipes-su/generators/templates/haml/app/errors/500.haml.tt +3 -0
- data/lib/tennpipes-su/generators/templates/haml/app/layouts/application.haml.tt +49 -0
- data/lib/tennpipes-su/generators/templates/haml/app/layouts/error.haml.tt +18 -0
- data/lib/tennpipes-su/generators/templates/haml/app/sessions/new.haml.tt +38 -0
- data/lib/tennpipes-su/generators/templates/haml/page/_form.haml.tt +16 -0
- data/lib/tennpipes-su/generators/templates/haml/page/edit.haml.tt +8 -0
- data/lib/tennpipes-su/generators/templates/haml/page/index.haml.tt +58 -0
- data/lib/tennpipes-su/generators/templates/haml/page/new.haml.tt +7 -0
- data/lib/tennpipes-su/generators/templates/page/controller.rb.tt +92 -0
- data/lib/tennpipes-su/generators/templates/slim/app/base/index.slim.tt +12 -0
- data/lib/tennpipes-su/generators/templates/slim/app/errors/403.slim.tt +3 -0
- data/lib/tennpipes-su/generators/templates/slim/app/errors/404.slim.tt +3 -0
- data/lib/tennpipes-su/generators/templates/slim/app/errors/500.slim.tt +3 -0
- data/lib/tennpipes-su/generators/templates/slim/app/layouts/application.slim.tt +48 -0
- data/lib/tennpipes-su/generators/templates/slim/app/layouts/error.slim.tt +19 -0
- data/lib/tennpipes-su/generators/templates/slim/app/sessions/new.slim.tt +37 -0
- data/lib/tennpipes-su/generators/templates/slim/page/_form.slim.tt +16 -0
- data/lib/tennpipes-su/generators/templates/slim/page/edit.slim.tt +8 -0
- data/lib/tennpipes-su/generators/templates/slim/page/index.slim.tt +56 -0
- data/lib/tennpipes-su/generators/templates/slim/page/new.slim.tt +7 -0
- data/lib/tennpipes-su/helpers/authentication_helpers.rb +108 -0
- data/lib/tennpipes-su/helpers/view_helpers.rb +87 -0
- data/lib/tennpipes-su/locale/admin/cs.yml +56 -0
- data/lib/tennpipes-su/locale/admin/da.yml +56 -0
- data/lib/tennpipes-su/locale/admin/de.yml +56 -0
- data/lib/tennpipes-su/locale/admin/en.yml +56 -0
- data/lib/tennpipes-su/locale/admin/es.yml +56 -0
- data/lib/tennpipes-su/locale/admin/fr.yml +56 -0
- data/lib/tennpipes-su/locale/admin/hu.yml +56 -0
- data/lib/tennpipes-su/locale/admin/it.yml +56 -0
- data/lib/tennpipes-su/locale/admin/ja.yml +57 -0
- data/lib/tennpipes-su/locale/admin/lv.yml +56 -0
- data/lib/tennpipes-su/locale/admin/nl.yml +56 -0
- data/lib/tennpipes-su/locale/admin/no.yml +56 -0
- data/lib/tennpipes-su/locale/admin/pl.yml +56 -0
- data/lib/tennpipes-su/locale/admin/pt_br.yml +56 -0
- data/lib/tennpipes-su/locale/admin/ro.yml +56 -0
- data/lib/tennpipes-su/locale/admin/ru.yml +57 -0
- data/lib/tennpipes-su/locale/admin/sv.yml +56 -0
- data/lib/tennpipes-su/locale/admin/tr.yml +56 -0
- data/lib/tennpipes-su/locale/admin/uk.yml +56 -0
- data/lib/tennpipes-su/locale/admin/zh_cn.yml +56 -0
- data/lib/tennpipes-su/locale/admin/zh_tw.yml +56 -0
- data/lib/tennpipes-su/locale/orm/cs.yml +12 -0
- data/lib/tennpipes-su/locale/orm/da.yml +12 -0
- data/lib/tennpipes-su/locale/orm/de.yml +12 -0
- data/lib/tennpipes-su/locale/orm/en.yml +12 -0
- data/lib/tennpipes-su/locale/orm/es.yml +12 -0
- data/lib/tennpipes-su/locale/orm/fr.yml +12 -0
- data/lib/tennpipes-su/locale/orm/hu.yml +12 -0
- data/lib/tennpipes-su/locale/orm/it.yml +12 -0
- data/lib/tennpipes-su/locale/orm/ja.yml +12 -0
- data/lib/tennpipes-su/locale/orm/lv.yml +12 -0
- data/lib/tennpipes-su/locale/orm/nl.yml +12 -0
- data/lib/tennpipes-su/locale/orm/no.yml +12 -0
- data/lib/tennpipes-su/locale/orm/pl.yml +38 -0
- data/lib/tennpipes-su/locale/orm/pt_br.yml +12 -0
- data/lib/tennpipes-su/locale/orm/ro.yml +12 -0
- data/lib/tennpipes-su/locale/orm/ru.yml +12 -0
- data/lib/tennpipes-su/locale/orm/sv.yml +12 -0
- data/lib/tennpipes-su/locale/orm/tr.yml +12 -0
- data/lib/tennpipes-su/locale/orm/uk.yml +12 -0
- data/lib/tennpipes-su/locale/orm/zh_cn.yml +12 -0
- data/lib/tennpipes-su/locale/orm/zh_tw.yml +12 -0
- data/test/fixtures/sequel.rb +72 -0
- data/test/generators/test_account_model_generator.rb +108 -0
- data/test/generators/test_admin_app_generator.rb +218 -0
- data/test/generators/test_admin_page_generator.rb +140 -0
- data/test/helper.rb +47 -0
- data/test/test_admin_application.rb +271 -0
- data/test/test_locale.rb +25 -0
- metadata +298 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
ja:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "は、不正な値です"
|
|
6
|
+
not_present: "は、空欄であってはなりません"
|
|
7
|
+
not_numeric: "は、数字である必要があります"
|
|
8
|
+
not_url: "は、不正な値です"
|
|
9
|
+
not_email: "は、不正な値です"
|
|
10
|
+
not_valid: "は、次の値のうちどれかでなければなりません:"
|
|
11
|
+
not_in_range: "は、次の値のうちどれかでなければなりません:"
|
|
12
|
+
not_decimal: "は、不正な値です"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
lv:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "nav derīgs"
|
|
6
|
+
not_present: "ir jābūt aizpildītam"
|
|
7
|
+
not_numeric: "nav skaitlis"
|
|
8
|
+
not_url: "nav derīgs"
|
|
9
|
+
not_email: "nav derīgs"
|
|
10
|
+
not_valid: "nav iekļauts sarakstā"
|
|
11
|
+
not_in_range: "nav iekļauts sarakstā"
|
|
12
|
+
not_decimal: "nav derīgs"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
nl:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "is ongeldig"
|
|
6
|
+
not_present: "moet opgegeven zijn"
|
|
7
|
+
not_numeric: "is geen getal"
|
|
8
|
+
not_url: "is ongeldig"
|
|
9
|
+
not_email: "is ongeldig"
|
|
10
|
+
not_valid: "is niet in de lijst opgenomen"
|
|
11
|
+
not_in_range: "is niet in de lijst opgenomen"
|
|
12
|
+
not_decimal: "is ongeldig"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"no":
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "er ikke gyldig"
|
|
6
|
+
not_present: "kan ikke være blank"
|
|
7
|
+
not_numeric: "er ikke et tall"
|
|
8
|
+
not_url: "er ikke gyldig"
|
|
9
|
+
not_email: "er ikke gyldig"
|
|
10
|
+
not_valid: "finnes ikke i listen"
|
|
11
|
+
not_in_range: "finnes ikke i listen"
|
|
12
|
+
not_decimal: "er ikke gyldig"
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
pl:
|
|
2
|
+
activemodel: &activemodel
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
inclusion: "nie znajduje się na liście dopuszczalnych wartości"
|
|
6
|
+
exclusion: "znajduje się na liście zabronionych wartości"
|
|
7
|
+
invalid: "jest nieprawidłowe"
|
|
8
|
+
confirmation: "nie zgadza się z potwierdzeniem"
|
|
9
|
+
accepted: "musi być zaakceptowane"
|
|
10
|
+
empty: "nie może być puste"
|
|
11
|
+
blank: "nie może być puste"
|
|
12
|
+
too_long: "jest za długie (maksymalnie %{count} znaków)"
|
|
13
|
+
too_short: "jest za krótkie (minimalnie %{count} znaków)"
|
|
14
|
+
wrong_length: "jest nieprawidłowej długości (powinna wynosić %{count} znaków)"
|
|
15
|
+
taken: "zostało już zajęte"
|
|
16
|
+
not_a_number: "nie jest liczbą"
|
|
17
|
+
not_an_integer: "nie jest liczbą całkowitą"
|
|
18
|
+
greater_than: "musi być większe niż %{count}"
|
|
19
|
+
greater_than_or_equal_to: "musi być większe lub równe %{count}"
|
|
20
|
+
equal_to: "musi być równe %{count}"
|
|
21
|
+
less_than: "musi być mniejsze niż %{count}"
|
|
22
|
+
less_than_or_equal_to: "musi być mniejsze lub równe %{count}"
|
|
23
|
+
odd: "musi być nieparzyste"
|
|
24
|
+
even: "musi być parzyste"
|
|
25
|
+
record_invalid: "Negatywne sprawdzenie poprawności: %{errors}"
|
|
26
|
+
content_type: "nieodozwolony format pliku"
|
|
27
|
+
activerecord: *activemodel
|
|
28
|
+
ohm:
|
|
29
|
+
errors:
|
|
30
|
+
messages:
|
|
31
|
+
format: "jest nieprawidłowe"
|
|
32
|
+
not_present: "nie może być puste"
|
|
33
|
+
not_numeric: "nie jest liczbą"
|
|
34
|
+
not_url: "jest nieprawidłowe"
|
|
35
|
+
not_email: "jest nieprawidłowe"
|
|
36
|
+
not_valid: "nie znajduje się na liście dopuszczalnych wartości"
|
|
37
|
+
not_in_range: "nie znajduje się na liście dopuszczalnych wartości"
|
|
38
|
+
not_decimal: "jest nieprawidłowe"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
pt_br:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "não é válido"
|
|
6
|
+
not_present: "não pode ser deixado em branco"
|
|
7
|
+
not_numeric: "não é um número"
|
|
8
|
+
not_url: "não é válido"
|
|
9
|
+
not_email: "não é válido"
|
|
10
|
+
not_valid: "não está incluído na lista"
|
|
11
|
+
not_in_range: "não está incluído na lista"
|
|
12
|
+
not_decimal: "não é válido"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
ro:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "nu este valid"
|
|
6
|
+
not_present: "nu poate fi gol"
|
|
7
|
+
not_numeric: "nu este un număr"
|
|
8
|
+
not_url: "nu este valid"
|
|
9
|
+
not_email: "nu este valid"
|
|
10
|
+
not_valid: "nu este inclus în listă"
|
|
11
|
+
not_in_range: "nu este inclus în listă"
|
|
12
|
+
not_decimal: "nu este valid"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
ru:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "неправильный"
|
|
6
|
+
not_present: "не может быть пустым"
|
|
7
|
+
not_numeric: "не число"
|
|
8
|
+
not_url: "неправильный"
|
|
9
|
+
not_email: "неправильный"
|
|
10
|
+
not_valid: "не входит в список"
|
|
11
|
+
not_in_range: "не входит в список"
|
|
12
|
+
not_decimal: "неправильный"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
sv:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "är ogiltig"
|
|
6
|
+
not_present: "kan inte vara blankt"
|
|
7
|
+
not_numeric: "är inte ett tal"
|
|
8
|
+
not_url: "är ogiltig"
|
|
9
|
+
not_email: "är ogiltig"
|
|
10
|
+
not_valid: "är inte inkluderad i listan"
|
|
11
|
+
not_in_range: "är inte inkluderad i listan"
|
|
12
|
+
not_decimal: "är ogiltig"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
tr:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "geçerli değil"
|
|
6
|
+
not_present: "boş bırakılamaz"
|
|
7
|
+
not_numeric: "sayı değil"
|
|
8
|
+
not_url: "geçerli değil"
|
|
9
|
+
not_email: "geçerli değil"
|
|
10
|
+
not_valid: "listede yok"
|
|
11
|
+
not_in_range: "listede yok"
|
|
12
|
+
not_decimal: "geçerli değil"
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
uk:
|
|
2
|
+
ohm:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
format: "недійсний"
|
|
6
|
+
not_present: "не може бути порожнім"
|
|
7
|
+
not_numeric: "не число"
|
|
8
|
+
not_url: "недійсний"
|
|
9
|
+
not_email: "недійсний"
|
|
10
|
+
not_valid: "не входить у список"
|
|
11
|
+
not_in_range: "не входить у список"
|
|
12
|
+
not_decimal: "недійсний"
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'digest/sha1'
|
|
2
|
+
require 'sequel'
|
|
3
|
+
|
|
4
|
+
Sequel::Model.plugin(:schema)
|
|
5
|
+
|
|
6
|
+
Sequel::Model.db =
|
|
7
|
+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
|
|
8
|
+
require 'jdbc/sqlite3'
|
|
9
|
+
Sequel.connect("jdbc:sqlite::memory:")
|
|
10
|
+
else
|
|
11
|
+
require 'sqlite3'
|
|
12
|
+
Sequel.sqlite(":memory:")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
Sequel.extension :migration
|
|
16
|
+
migration = Sequel.migration do
|
|
17
|
+
up do
|
|
18
|
+
create_table :accounts do
|
|
19
|
+
primary_key :id
|
|
20
|
+
String :name
|
|
21
|
+
String :surname
|
|
22
|
+
String :email
|
|
23
|
+
String :crypted_password
|
|
24
|
+
String :role
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
create_table :categories do
|
|
28
|
+
primary_key :id
|
|
29
|
+
foreign_key :account_id
|
|
30
|
+
String :name
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
down do
|
|
35
|
+
drop_table :accounts
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
migration.apply(Sequel::Model.db, :up)
|
|
40
|
+
|
|
41
|
+
# Fake Category Model
|
|
42
|
+
class Category < Sequel::Model
|
|
43
|
+
many_to_one :account
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# Fake Account Model
|
|
47
|
+
class Account < Sequel::Model
|
|
48
|
+
attr_accessor :password, :password_confirmation
|
|
49
|
+
|
|
50
|
+
one_to_many :categories
|
|
51
|
+
|
|
52
|
+
def self.admin; first(:role => "admin"); end
|
|
53
|
+
def self.editor; first(:role => "editor"); end
|
|
54
|
+
|
|
55
|
+
##
|
|
56
|
+
# Replace ActiveRecord method.
|
|
57
|
+
#
|
|
58
|
+
def self.find_by_id(id)
|
|
59
|
+
self[id] rescue nil
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# We build some fake accounts
|
|
64
|
+
admin = Account.create(:name => "DAddYE", :role => "admin", :email => "d.dagostino@lipsiasoft.com",
|
|
65
|
+
:password => "some", :password_confirmation => "some")
|
|
66
|
+
editor = Account.create(:name => "Dexter", :role => "editor", :email => "editor@lipsiasoft.com",
|
|
67
|
+
:password => "some", :password_confirmation => "some")
|
|
68
|
+
|
|
69
|
+
%w(News Press HowTo).each do |c|
|
|
70
|
+
admin.add_category(:name => c)
|
|
71
|
+
editor.add_category(:name => c)
|
|
72
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../helper')
|
|
2
|
+
|
|
3
|
+
describe "AccountModelGenerator" do
|
|
4
|
+
before do
|
|
5
|
+
@apptmp = "#{Dir.tmpdir}/tennpipes-tests/#{SecureRandom.hex}"
|
|
6
|
+
%x[mkdir -p #{@apptmp}]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after do
|
|
10
|
+
%[rm -rf #{@apptmp}]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe 'activerecord' do
|
|
14
|
+
before do
|
|
15
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
|
|
16
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
17
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'should be an activerecord model instance' do
|
|
21
|
+
assert_match_in_file(/class Account < ActiveRecord::Base/m, @model)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe 'minirecord' do
|
|
26
|
+
before do
|
|
27
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=minirecord') }
|
|
28
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
29
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'should be an activerecord model instance' do
|
|
33
|
+
assert_match_in_file(/class Account < ActiveRecord::Base/m, @model)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'datamapper' do
|
|
38
|
+
before do
|
|
39
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper') }
|
|
40
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
41
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'should include the datamapper resource' do
|
|
45
|
+
assert_match_in_file(/include DataMapper::Resource/m, @model)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
describe 'mongoid' do
|
|
50
|
+
before do
|
|
51
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=mongoid') }
|
|
52
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
53
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it 'should include the mongoid document' do
|
|
57
|
+
assert_match_in_file(/include Mongoid::Document/m, @model)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
describe 'mongomapper' do
|
|
62
|
+
before do
|
|
63
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=mongomapper') }
|
|
64
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
65
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'should include the mongomapper document' do
|
|
69
|
+
assert_match_in_file(/include MongoMapper::Document/m, @model)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
describe 'ohm' do
|
|
74
|
+
before do
|
|
75
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=ohm') }
|
|
76
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
77
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
it 'should be an ohm model instance' do
|
|
81
|
+
assert_match_in_file(/class Account < Ohm::Model/m, @model)
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
describe 'sequel' do
|
|
86
|
+
before do
|
|
87
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel') }
|
|
88
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
89
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it 'should be a sequel model instance' do
|
|
93
|
+
assert_match_in_file(/class Account < Sequel::Model/m, @model)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
describe 'couchrest' do
|
|
98
|
+
before do
|
|
99
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=couchrest') }
|
|
100
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
101
|
+
@model = "#{@apptmp}/sample_project/models/account.rb"
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it 'should be a couchrest model instance' do
|
|
105
|
+
assert_match_in_file(/class Account < CouchRest::Model::Base/m, @model)
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../helper')
|
|
2
|
+
|
|
3
|
+
describe "AdminAppGenerator" do
|
|
4
|
+
before do
|
|
5
|
+
@apptmp = "#{Dir.tmpdir}/tennpipes-tests/#{SecureRandom.hex}"
|
|
6
|
+
`mkdir -p #{@apptmp}`
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
after do
|
|
10
|
+
`rm -rf #{@apptmp}`
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe 'the admin app generator' do
|
|
14
|
+
before do
|
|
15
|
+
# Account gets created by Datamapper's migration and then gets
|
|
16
|
+
# rejected by model generator as already defined
|
|
17
|
+
Object.send(:remove_const, :Account) if defined?(Account)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'should fail outside app root' do
|
|
21
|
+
out, err = capture_io { generate(:admin_app, "-r=#{@apptmp}") }
|
|
22
|
+
assert_match(/not at the root/, out)
|
|
23
|
+
assert_no_file_exists("#{@apptmp}/admin")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should fail if we don't specify an orm on the project" do
|
|
27
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-e=haml') }
|
|
28
|
+
assert_raises(SystemExit) { @out, @err = capture_io { generate(:admin_app, "-r=#{@apptmp}/sample_project") } }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "should store and apply session_secret" do
|
|
32
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
|
|
33
|
+
assert_match_in_file(/set :session_secret, '[0-9A-z]*'/, "#{@apptmp}/sample_project/config/apps.rb")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "should generate the admin app" do
|
|
37
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
|
|
38
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
39
|
+
assert_dir_exists("#{@apptmp}/sample_project")
|
|
40
|
+
assert_dir_exists("#{@apptmp}/sample_project/admin")
|
|
41
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/app.rb")
|
|
42
|
+
assert_dir_exists("#{@apptmp}/sample_project/admin/controllers")
|
|
43
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/controllers/accounts.rb")
|
|
44
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/controllers/base.rb")
|
|
45
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/controllers/sessions.rb")
|
|
46
|
+
assert_dir_exists("#{@apptmp}/sample_project/admin/views")
|
|
47
|
+
assert_dir_exists("#{@apptmp}/sample_project/public/admin")
|
|
48
|
+
assert_dir_exists("#{@apptmp}/sample_project/public/admin/stylesheets")
|
|
49
|
+
assert_file_exists("#{@apptmp}/sample_project/public/admin/stylesheets/application.css")
|
|
50
|
+
assert_file_exists("#{@apptmp}/sample_project/public/admin/stylesheets/bootstrap.css")
|
|
51
|
+
assert_file_exists("#{@apptmp}/sample_project/public/admin/javascripts/application.js")
|
|
52
|
+
assert_file_exists("#{@apptmp}/sample_project/public/admin/javascripts/jquery-1.11.0.min.js")
|
|
53
|
+
assert_file_exists("#{@apptmp}/sample_project/models/account.rb")
|
|
54
|
+
assert_file_exists("#{@apptmp}/sample_project/db/seeds.rb")
|
|
55
|
+
assert_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_accounts.rb")
|
|
56
|
+
assert_match_in_file 'Tennpipes.mount("SampleProject::Admin", :app_file => Tennpipes.root(\'admin/app.rb\')).to("/admin")', "#{@apptmp}/sample_project/config/apps.rb"
|
|
57
|
+
assert_match_in_file 'module SampleProject', "#{@apptmp}/sample_project/admin/app.rb"
|
|
58
|
+
assert_match_in_file 'class Admin < Tennpipes::Application', "#{@apptmp}/sample_project/admin/app.rb"
|
|
59
|
+
assert_match_in_file 'role.project_module :accounts, \'/accounts\'', "#{@apptmp}/sample_project/admin/app.rb"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should generate the master app" do
|
|
63
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
|
|
64
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project", '--admin-name=master') }
|
|
65
|
+
assert_file_exists("#{@apptmp}/sample_project/master/app.rb")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
# users can override certain templates from a generators/templates folder in the destination_root
|
|
69
|
+
it "should use custom generator templates from the project root, if they exist" do
|
|
70
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
|
|
71
|
+
custom_template_path = "#{@apptmp}/sample_project/generators/templates/slim/app/layouts/"
|
|
72
|
+
`mkdir -p #{custom_template_path} && echo "h1 = 'Hello, custom generator' " > #{custom_template_path}application.slim.tt`
|
|
73
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
74
|
+
assert_match_in_file(/Hello, custom generator/, "#{@apptmp}/sample_project/admin/views/layouts/application.slim")
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "should generate the admin app under a different folder" do
|
|
78
|
+
# TODO FIXME Implement option --admin_root or something. See https://github.com/tennpipes/tennpipes-framework/issues/854#issuecomment-14749356
|
|
79
|
+
skip
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
describe "renderers" do
|
|
83
|
+
it 'should correctly generate a new tennpipes admin application with haml renderer (default)' do
|
|
84
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
|
|
85
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
86
|
+
assert_dir_exists("#{@apptmp}/sample_project/admin/views")
|
|
87
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.haml")
|
|
88
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.haml")
|
|
89
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.haml")
|
|
90
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/new.haml")
|
|
91
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.haml")
|
|
92
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.haml")
|
|
93
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.haml")
|
|
94
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/layouts/application.haml")
|
|
95
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.haml")
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
it 'should correctly generate a new tennpipes admin application with erb renderer' do
|
|
99
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=erb') }
|
|
100
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
101
|
+
assert_dir_exists("#{@apptmp}/sample_project/admin/views")
|
|
102
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.erb")
|
|
103
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.erb")
|
|
104
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.erb")
|
|
105
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/new.erb")
|
|
106
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.erb")
|
|
107
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.erb")
|
|
108
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.erb")
|
|
109
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/layouts/application.erb")
|
|
110
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.erb")
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it 'should correctly generate a new tennpipes admin application with slim renderer' do
|
|
114
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=slim') }
|
|
115
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
116
|
+
assert_dir_exists("#{@apptmp}/sample_project/admin/views")
|
|
117
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.slim")
|
|
118
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.slim")
|
|
119
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.slim")
|
|
120
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/new.slim")
|
|
121
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.slim")
|
|
122
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.slim")
|
|
123
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.slim")
|
|
124
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/layouts/application.slim")
|
|
125
|
+
assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.slim")
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
it 'should correctly generate a new tennpipes admin application with a custom model' do
|
|
130
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=slim') }
|
|
131
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project", '-m=User') }
|
|
132
|
+
assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/admin/controllers/users.rb")
|
|
133
|
+
assert_match_in_file(/[^_]user/i, "#{@apptmp}/sample_project/admin/controllers/users.rb")
|
|
134
|
+
assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/admin/views/users/_form.slim")
|
|
135
|
+
assert_match_in_file(/[^_]user/i, "#{@apptmp}/sample_project/admin/views/users/_form.slim")
|
|
136
|
+
assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/admin/views/users/edit.slim")
|
|
137
|
+
assert_match_in_file(/[^_]user/i, "#{@apptmp}/sample_project/admin/views/users/edit.slim")
|
|
138
|
+
assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/admin/views/users/index.slim")
|
|
139
|
+
assert_match_in_file(/[^_]user/i, "#{@apptmp}/sample_project/admin/views/users/index.slim")
|
|
140
|
+
assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/admin/views/users/new.slim")
|
|
141
|
+
assert_match_in_file(/[^_]user/i, "#{@apptmp}/sample_project/admin/views/users/new.slim")
|
|
142
|
+
assert_no_match_in_file(/Account/, "#{@apptmp}/sample_project/models/user.rb")
|
|
143
|
+
assert_match_in_file(/User/, "#{@apptmp}/sample_project/models/user.rb")
|
|
144
|
+
assert_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
|
145
|
+
assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
|
146
|
+
assert_match_in_file 'role.project_module :users, \'/users\'', "#{@apptmp}/sample_project/admin/app.rb"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it 'should correctly generate a new tennpipes admin application with model in non-default application path' do
|
|
150
|
+
# TODO FIXME What's the use case here? Clarify.
|
|
151
|
+
# Remember that --root/-r in the admin_app generator refers to the project's location, not the admin's location
|
|
152
|
+
# inside it. See https://github.com/tennpipes/tennpipes-framework/issues/854#issuecomment-14749356
|
|
153
|
+
skip
|
|
154
|
+
# capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
|
|
155
|
+
# capture_io { generate(:admin_app,"-a=/admin", "--root=#{@apptmp}/sample_project") }
|
|
156
|
+
# assert_dir_exists("#{@apptmp}/sample_project")
|
|
157
|
+
# assert_dir_exists("#{@apptmp}/sample_project/admin")
|
|
158
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/app.rb")
|
|
159
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/controllers")
|
|
160
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/controllers/accounts.rb")
|
|
161
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/controllers/base.rb")
|
|
162
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/controllers/sessions.rb")
|
|
163
|
+
# assert_dir_exists("#{@apptmp}/sample_project/admin/views")
|
|
164
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.haml")
|
|
165
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.haml")
|
|
166
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.haml")
|
|
167
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/new.haml")
|
|
168
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.haml")
|
|
169
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.haml")
|
|
170
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.haml")
|
|
171
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/layouts/application.haml")
|
|
172
|
+
# assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.haml")
|
|
173
|
+
# assert_dir_exists("#{@apptmp}/sample_project/public/admin")
|
|
174
|
+
# assert_dir_exists("#{@apptmp}/sample_project/public/admin/stylesheets")
|
|
175
|
+
# assert_file_exists("#{@apptmp}/sample_project/models/account.rb")
|
|
176
|
+
# assert_no_file_exists("#{@apptmp}/sample_project/models/account.rb")
|
|
177
|
+
# assert_file_exists("#{@apptmp}/sample_project/db/seeds.rb")
|
|
178
|
+
# assert_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_accounts.rb")
|
|
179
|
+
# assert_match_in_file 'role.project_module :accounts, \'/accounts\'', "#{@apptmp}/sample_project/admin/app.rb"
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
describe "activerecord middleware" do
|
|
183
|
+
it 'should add it for #activerecord' do
|
|
184
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
|
|
185
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
186
|
+
assert_match_in_file(/ use ActiveRecord::ConnectionAdapters::ConnectionManagemen/m, "#{@apptmp}/sample_project/admin/app.rb")
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
it 'should add it #minirecord' do
|
|
190
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=minirecord', '-e=haml') }
|
|
191
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
192
|
+
assert_match_in_file(/ use ActiveRecord::ConnectionAdapters::ConnectionManagemen/m, "#{@apptmp}/sample_project/admin/app.rb")
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
it 'should not add it for #datamapper' do
|
|
196
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper', '-e=haml') }
|
|
197
|
+
capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
198
|
+
assert_no_match_in_file(/ use ActiveRecord::ConnectionAdapters::ConnectionManagemen/m, "#{@apptmp}/sample_project/admin/app.rb")
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
it 'should not conflict with existing seeds file' do
|
|
203
|
+
capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=erb') }
|
|
204
|
+
|
|
205
|
+
# Add seeds file
|
|
206
|
+
FileUtils.mkdir_p @apptmp + '/sample_project/db' unless File.exist?(@apptmp + '/sample_project/db')
|
|
207
|
+
File.open(@apptmp + '/sample_project/db/seeds.rb', 'w+') do |seeds_rb|
|
|
208
|
+
seeds_rb.puts "# Old Seeds Content"
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
out, err = capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
|
212
|
+
refute_match /Overwrite\s.*?\/db\/seeds.rb/, out
|
|
213
|
+
|
|
214
|
+
assert_file_exists "#{@apptmp}/sample_project/db/seeds.old"
|
|
215
|
+
assert_match_in_file 'Account.new(', "#{@apptmp}/sample_project/db/seeds.rb"
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
end
|