tennpipes-su 3.6.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|