copycat 0.2.6 → 0.2.7
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/Rakefile +6 -0
- data/app/models/copycat_translation.rb +37 -45
- data/lib/copycat/version.rb +1 -1
- data/spec/dummy/config/application.rb +2 -0
- data/spec/dummy/config/initializers/copycat.rb +2 -2
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/db/migrate/{20120320194234_create_copycat_translations.copycat_engine.rb → 20150824125132_create_copycat_translations.copycat_engine.rb} +0 -0
- data/spec/dummy/db/schema.rb +1 -1
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +18 -2052
- data/spec/dummy/log/test.log +841 -27512
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/5pjjE7UQ1zT-W3Rm7l8onDEWZV9b-lyRmeW9nFAbLoU.cache +2 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/9ZnyF5L7jalLFn0sk_WNwUCeeXBylJBp2yRgFPQE3ho.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/IfC1KmXTw1ppvrXEYn3N4C2stMo3ing1GipxNQ0oML4.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/YQfOnucF3bHs51e6OOpX6Gh8ih98sfqcSc88X90cxYg.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/bUaVNTYJb9Cp-33TI2vIHrdmO8U0fOh3szyB6M4K7BY.cache +3 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/j2gYDVPsuXlIFLdHtvLu9pJtjz2Z1dmLFVDQp9jNEwc.cache +0 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/qGrLWZnG1ElHmKVImQl1l5olVVtVeDSZ13_9Ll1qeYU.cache +1 -0
- data/spec/dummy/tmp/cache/assets/test/sprockets/v3.0/zQEVaz1UlfTQQY8e-XT2PRLny8dybtFJeuDtPTwwS2E.cache +1 -0
- data/spec/factories/copycat_translations.rb +3 -3
- data/spec/{integration → features}/copycat_spec.rb +78 -78
- data/spec/features/dummy_spec.rb +92 -0
- data/spec/lib/copycat_spec.rb +5 -5
- data/spec/models/copycat_translation_spec.rb +50 -69
- data/spec/spec_helper.rb +5 -2
- data/spec/support/export.yml +10 -0
- metadata +143 -47
- data/spec/dummy/tmp/cache/assets/C19/060/sprockets%2F125436f53217b7f564aa5016d1168709 +0 -0
- data/spec/dummy/tmp/cache/assets/CB3/6E0/sprockets%2F0f4c96b04436bf7ae900561753947d4c +0 -0
- data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
- data/spec/dummy/tmp/cache/assets/D09/190/sprockets%2Fb2bddd007999a56d8b20c92301ea1983 +0 -0
- data/spec/dummy/tmp/cache/assets/D1A/DB0/sprockets%2F26d700197b8d25f954d56d8f31f2c8bc +0 -0
- data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
- data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
- data/spec/dummy/tmp/cache/assets/DA4/EE0/sprockets%2Fcd39e3d56788faea331e0f5bac67329b +0 -0
- data/spec/dummy/tmp/cache/assets/DBD/220/sprockets%2F0cbff5c1a349439c1c444cbb4a57acc4 +0 -0
- data/spec/dummy/tmp/cache/assets/DDD/780/sprockets%2Fe7880b84c3ecb507fabc99b9ef6b70e3 +0 -0
- data/spec/dummy/tmp/cache/assets/DF8/310/sprockets%2Fccb12c4009c2f876d51dee8bae4c64ec +0 -0
- data/spec/integration/dummy_spec.rb +0 -92
| @@ -0,0 +1,2 @@ | |
| 1 | 
            +
            [o:Set:
         | 
| 2 | 
            +
            @hash{I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"cfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"Sfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets;TT
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            I"�file:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css?type=text/css&id=44a81ee07e41d721880da38bef491b2aae63a506c3b4b40084eea75e9fc78e98:ET
         | 
| Binary file | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            I"�file:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=4bfd9c65970fe06b4964470bbf20c1c68255b2420fa04d5b4a39a9999e0057c5:ET
         | 
| @@ -0,0 +1,3 @@ | |
| 1 | 
            +
            [o:Set:
         | 
| 2 | 
            +
            @hash{
         | 
| 3 | 
            +
            I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"cfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets/application.css;TTI"Sfile-digest:///Users/andrewross/code/copycat/spec/dummy/app/assets/stylesheets;TT
         | 
| Binary file | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            "%9�#�U�-���Jnݶ�W��Gx5>T�u�\x��:�
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
         | 
| @@ -2,10 +2,10 @@ FactoryGirl.define do | |
| 2 2 | 
             
              sequence :string do |n|
         | 
| 3 3 | 
             
                "string%09d" % n
         | 
| 4 4 | 
             
              end
         | 
| 5 | 
            -
             | 
| 5 | 
            +
             | 
| 6 6 | 
             
              factory :copycat_translation do
         | 
| 7 | 
            -
                key {  | 
| 8 | 
            -
                value {  | 
| 7 | 
            +
                key { generate(:string) }
         | 
| 8 | 
            +
                value { generate(:string) }
         | 
| 9 9 | 
             
                locale I18n.default_locale
         | 
| 10 10 | 
             
              end
         | 
| 11 11 | 
             
            end
         | 
| @@ -4,9 +4,9 @@ require 'spec_helper' | |
| 4 4 |  | 
| 5 5 |  | 
| 6 6 | 
             
            feature "copycat index" do
         | 
| 7 | 
            -
             | 
| 7 | 
            +
             | 
| 8 8 | 
             
              before do
         | 
| 9 | 
            -
                 | 
| 9 | 
            +
                create(:copycat_translation, :key => "foo", :value => "bar")
         | 
| 10 10 | 
             
                page.driver.browser.basic_authorize Copycat.username, Copycat.password
         | 
| 11 11 | 
             
                visit copycat_translations_path
         | 
| 12 12 | 
             
              end
         | 
| @@ -18,59 +18,59 @@ feature "copycat index" do | |
| 18 18 | 
             
              end
         | 
| 19 19 |  | 
| 20 20 | 
             
              it "doesn't show any tokens by default" do
         | 
| 21 | 
            -
                page. | 
| 22 | 
            -
                page. | 
| 21 | 
            +
                expect(page).not_to have_content 'foo'
         | 
| 22 | 
            +
                expect(page).not_to have_content 'bar'
         | 
| 23 23 | 
             
              end
         | 
| 24 24 |  | 
| 25 25 | 
             
              it "allows search by key" do
         | 
| 26 26 | 
             
                fill_in 'search', :with => 'foo'
         | 
| 27 27 | 
             
                click_button 'Search'
         | 
| 28 | 
            -
                page. | 
| 29 | 
            -
                page. | 
| 28 | 
            +
                expect(page).to have_content 'foo'
         | 
| 29 | 
            +
                expect(page).to have_content 'bar'
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              it "allows search by key" do
         | 
| 33 33 | 
             
                fill_in 'search', :with => 'xfoo'
         | 
| 34 34 | 
             
                click_button 'Search'
         | 
| 35 | 
            -
                page. | 
| 36 | 
            -
                page. | 
| 35 | 
            +
                expect(page).not_to have_content 'foo'
         | 
| 36 | 
            +
                expect(page).not_to have_content 'bar'
         | 
| 37 37 | 
             
              end
         | 
| 38 38 |  | 
| 39 39 | 
             
              it "allows search by value" do
         | 
| 40 40 | 
             
                fill_in 'search', :with => 'bar'
         | 
| 41 41 | 
             
                click_button 'Search'
         | 
| 42 | 
            -
                page. | 
| 43 | 
            -
                page. | 
| 42 | 
            +
                expect(page).to have_content 'foo'
         | 
| 43 | 
            +
                expect(page).to have_content 'bar'
         | 
| 44 44 | 
             
              end
         | 
| 45 45 |  | 
| 46 46 | 
             
              it "allows search by value" do
         | 
| 47 47 | 
             
                fill_in 'search', :with => 'xbar'
         | 
| 48 48 | 
             
                click_button 'Search'
         | 
| 49 | 
            -
                page. | 
| 50 | 
            -
                page. | 
| 49 | 
            +
                expect(page).not_to have_content 'foo'
         | 
| 50 | 
            +
                expect(page).not_to have_content 'bar'
         | 
| 51 51 | 
             
              end
         | 
| 52 | 
            -
             | 
| 52 | 
            +
             | 
| 53 53 | 
             
              it "searches in the middles of strings" do
         | 
| 54 | 
            -
                 | 
| 54 | 
            +
                create(:copycat_translation, :key => "site.index.something")
         | 
| 55 55 | 
             
                fill_in 'search', :with => 'index'
         | 
| 56 56 | 
             
                click_button 'Search'
         | 
| 57 | 
            -
                page. | 
| 57 | 
            +
                expect(page).to have_content 'site.index.something'
         | 
| 58 58 | 
             
              end
         | 
| 59 59 |  | 
| 60 60 | 
             
              it "can show all" do
         | 
| 61 | 
            -
                 | 
| 61 | 
            +
                create(:copycat_translation, :key => "foe", :value => "beer")
         | 
| 62 62 | 
             
                click_button 'Search'
         | 
| 63 | 
            -
                page. | 
| 64 | 
            -
                page. | 
| 63 | 
            +
                expect(page).to have_content 'foo'
         | 
| 64 | 
            +
                expect(page).to have_content 'foe'
         | 
| 65 65 | 
             
              end
         | 
| 66 66 |  | 
| 67 67 | 
             
              context "more than one locale" do
         | 
| 68 68 |  | 
| 69 69 | 
             
                before do
         | 
| 70 70 | 
             
                  CopycatTranslation.destroy_all
         | 
| 71 | 
            -
                   | 
| 72 | 
            -
                   | 
| 73 | 
            -
                   | 
| 71 | 
            +
                  create(:copycat_translation, key: "foo", value: "bar1", locale: "en")
         | 
| 72 | 
            +
                  create(:copycat_translation, key: "foo", value: "bar2", locale: "fa")
         | 
| 73 | 
            +
                  create(:copycat_translation, key: "foo", value: "bar3", locale: "it")
         | 
| 74 74 | 
             
                end
         | 
| 75 75 |  | 
| 76 76 | 
             
                #locale
         | 
| @@ -95,100 +95,100 @@ feature "copycat index" do | |
| 95 95 |  | 
| 96 96 | 
             
                it "nil locale, nil search" do
         | 
| 97 97 | 
             
                  visit copycat_translations_path
         | 
| 98 | 
            -
                  page. | 
| 98 | 
            +
                  expect(page).not_to have_content 'foo'
         | 
| 99 99 | 
             
                end
         | 
| 100 100 |  | 
| 101 101 | 
             
                it "nil locale, blank search" do
         | 
| 102 102 | 
             
                  # impossible for user to replicate this case
         | 
| 103 103 | 
             
                  visit copycat_translations_path('search' => '', 'commit' => 'Search')
         | 
| 104 | 
            -
                  page. | 
| 105 | 
            -
                  page. | 
| 106 | 
            -
                  page. | 
| 104 | 
            +
                  expect(page).to have_content 'bar1'
         | 
| 105 | 
            +
                  expect(page).not_to have_content 'bar2'
         | 
| 106 | 
            +
                  expect(page).not_to have_content 'bar3'
         | 
| 107 107 | 
             
                end
         | 
| 108 108 |  | 
| 109 109 | 
             
                it "nil locale, present search" do
         | 
| 110 110 | 
             
                  # impossible for user to replicate this case
         | 
| 111 111 | 
             
                  visit copycat_translations_path('search' => 'foo', 'commit' => 'Search')
         | 
| 112 | 
            -
                  page. | 
| 113 | 
            -
                  page. | 
| 114 | 
            -
                  page. | 
| 112 | 
            +
                  expect(page).to have_content 'bar1'
         | 
| 113 | 
            +
                  expect(page).not_to have_content 'bar2'
         | 
| 114 | 
            +
                  expect(page).not_to have_content 'bar3'
         | 
| 115 115 | 
             
                  visit copycat_translations_path('search' => 'fuu', 'commit' => 'Search')
         | 
| 116 | 
            -
                  page. | 
| 116 | 
            +
                  expect(page).not_to have_content 'foo'
         | 
| 117 117 | 
             
                end
         | 
| 118 118 |  | 
| 119 119 | 
             
                it "blank locale, nil search" do
         | 
| 120 120 | 
             
                  # impossible for user to replicate this case
         | 
| 121 121 | 
             
                  visit copycat_translations_path('locale' => '', 'commit' => 'Search')
         | 
| 122 | 
            -
                  page. | 
| 122 | 
            +
                  expect(page).not_to have_content 'foo'
         | 
| 123 123 | 
             
                end
         | 
| 124 124 |  | 
| 125 125 | 
             
                it "blank locale, blank search" do
         | 
| 126 126 | 
             
                  select '', :from => 'locale'
         | 
| 127 127 | 
             
                  click_button 'Search'
         | 
| 128 | 
            -
                  page. | 
| 129 | 
            -
                  page. | 
| 130 | 
            -
                  page. | 
| 128 | 
            +
                  expect(page).to have_content 'bar1'
         | 
| 129 | 
            +
                  expect(page).to have_content 'bar2'
         | 
| 130 | 
            +
                  expect(page).to have_content 'bar3'
         | 
| 131 131 | 
             
                end
         | 
| 132 132 |  | 
| 133 133 | 
             
                it "blank locale, present search" do
         | 
| 134 134 | 
             
                  select '', :from => 'locale'
         | 
| 135 135 | 
             
                  fill_in 'search', :with => 'foo'
         | 
| 136 136 | 
             
                  click_button 'Search'
         | 
| 137 | 
            -
                  page. | 
| 138 | 
            -
                  page. | 
| 139 | 
            -
                  page. | 
| 137 | 
            +
                  expect(page).to have_content 'bar1'
         | 
| 138 | 
            +
                  expect(page).to have_content 'bar2'
         | 
| 139 | 
            +
                  expect(page).to have_content 'bar3'
         | 
| 140 140 | 
             
                  fill_in 'search', :with => 'fuu'
         | 
| 141 141 | 
             
                  click_button 'Search'
         | 
| 142 | 
            -
                  page. | 
| 142 | 
            +
                  expect(page).not_to have_content 'foo'
         | 
| 143 143 | 
             
                end
         | 
| 144 144 |  | 
| 145 145 | 
             
                it "present locale, nil search" do
         | 
| 146 146 | 
             
                  # impossible for user to replicate this case
         | 
| 147 147 | 
             
                  visit copycat_translations_path('locale' => 'en', 'commit' => 'Search')
         | 
| 148 | 
            -
                  page. | 
| 148 | 
            +
                  expect(page).not_to have_content 'foo'
         | 
| 149 149 | 
             
                end
         | 
| 150 150 |  | 
| 151 151 | 
             
                it "present locale, blank search" do
         | 
| 152 152 | 
             
                  select 'en', :from => 'locale'
         | 
| 153 153 | 
             
                  click_button 'Search'
         | 
| 154 | 
            -
                  page. | 
| 155 | 
            -
                  page. | 
| 156 | 
            -
                  page. | 
| 154 | 
            +
                  expect(page).to have_content 'bar1'
         | 
| 155 | 
            +
                  expect(page).not_to have_content 'bar2'
         | 
| 156 | 
            +
                  expect(page).not_to have_content 'bar3'
         | 
| 157 157 | 
             
                  select 'fa', :from => 'locale'
         | 
| 158 158 | 
             
                  click_button 'Search'
         | 
| 159 | 
            -
                  page. | 
| 160 | 
            -
                  page. | 
| 161 | 
            -
                  page. | 
| 159 | 
            +
                  expect(page).not_to have_content 'bar1'
         | 
| 160 | 
            +
                  expect(page).to have_content 'bar2'
         | 
| 161 | 
            +
                  expect(page).not_to have_content 'bar3'
         | 
| 162 162 | 
             
                  select 'it', :from => 'locale'
         | 
| 163 163 | 
             
                  click_button 'Search'
         | 
| 164 | 
            -
                  page. | 
| 165 | 
            -
                  page. | 
| 166 | 
            -
                  page. | 
| 164 | 
            +
                  expect(page).not_to have_content 'bar1'
         | 
| 165 | 
            +
                  expect(page).not_to have_content 'bar2'
         | 
| 166 | 
            +
                  expect(page).to have_content 'bar3'
         | 
| 167 167 | 
             
                end
         | 
| 168 168 |  | 
| 169 169 | 
             
                it "present locale, present search" do
         | 
| 170 170 | 
             
                  select 'en', :from => 'locale'
         | 
| 171 171 | 
             
                  fill_in 'search', :with => 'foo'
         | 
| 172 172 | 
             
                  click_button 'Search'
         | 
| 173 | 
            -
                  page. | 
| 174 | 
            -
                  page. | 
| 175 | 
            -
                  page. | 
| 173 | 
            +
                  expect(page).to have_content 'bar1'
         | 
| 174 | 
            +
                  expect(page).not_to have_content 'bar2'
         | 
| 175 | 
            +
                  expect(page).not_to have_content 'bar3'
         | 
| 176 176 | 
             
                  select 'fa', :from => 'locale'
         | 
| 177 177 | 
             
                  fill_in 'search', :with => 'foo'
         | 
| 178 178 | 
             
                  click_button 'Search'
         | 
| 179 | 
            -
                  page. | 
| 180 | 
            -
                  page. | 
| 181 | 
            -
                  page. | 
| 179 | 
            +
                  expect(page).not_to have_content 'bar1'
         | 
| 180 | 
            +
                  expect(page).to have_content 'bar2'
         | 
| 181 | 
            +
                  expect(page).not_to have_content 'bar3'
         | 
| 182 182 | 
             
                  select 'it', :from => 'locale'
         | 
| 183 183 | 
             
                  fill_in 'search', :with => 'foo'
         | 
| 184 184 | 
             
                  click_button 'Search'
         | 
| 185 | 
            -
                  page. | 
| 186 | 
            -
                  page. | 
| 187 | 
            -
                  page. | 
| 185 | 
            +
                  expect(page).not_to have_content 'bar1'
         | 
| 186 | 
            +
                  expect(page).not_to have_content 'bar2'
         | 
| 187 | 
            +
                  expect(page).to have_content 'bar3'
         | 
| 188 188 | 
             
                  select 'en', :from => 'locale'
         | 
| 189 189 | 
             
                  fill_in 'search', :with => 'fuu'
         | 
| 190 190 | 
             
                  click_button 'Search'
         | 
| 191 | 
            -
                  page. | 
| 191 | 
            +
                  expect(page).not_to have_content 'foo'
         | 
| 192 192 | 
             
                end
         | 
| 193 193 |  | 
| 194 194 | 
             
              end
         | 
| @@ -197,7 +197,7 @@ end | |
| 197 197 |  | 
| 198 198 | 
             
            feature "copycat edit" do
         | 
| 199 199 | 
             
              before do
         | 
| 200 | 
            -
                 | 
| 200 | 
            +
                create(:copycat_translation, :key => "foo", :value => "bar")
         | 
| 201 201 | 
             
                page.driver.browser.basic_authorize Copycat.username, Copycat.password
         | 
| 202 202 | 
             
                visit copycat_translations_path
         | 
| 203 203 | 
             
              end
         | 
| @@ -212,7 +212,7 @@ end | |
| 212 212 |  | 
| 213 213 | 
             
            feature "copycat update, delete" do
         | 
| 214 214 | 
             
              before do
         | 
| 215 | 
            -
                 | 
| 215 | 
            +
                create(:copycat_translation, :key => "foo", :value => "bar")
         | 
| 216 216 | 
             
                page.driver.browser.basic_authorize Copycat.username, Copycat.password
         | 
| 217 217 | 
             
                visit copycat_translations_path
         | 
| 218 218 | 
             
                fill_in 'search', :with => 'foo'
         | 
| @@ -223,16 +223,16 @@ feature "copycat update, delete" do | |
| 223 223 | 
             
              scenario "update" do
         | 
| 224 224 | 
             
                fill_in "copycat_translation[value]", :with => 'baz'
         | 
| 225 225 | 
             
                click_button "Update"
         | 
| 226 | 
            -
                current_path. | 
| 227 | 
            -
                CopycatTranslation.find_by_key("foo").value. | 
| 228 | 
            -
                page. | 
| 226 | 
            +
                expect(current_path).to eq(copycat_translations_path)
         | 
| 227 | 
            +
                expect(CopycatTranslation.find_by_key("foo").value).to eq('baz')
         | 
| 228 | 
            +
                expect(page).to have_content "foo updated!"
         | 
| 229 229 | 
             
              end
         | 
| 230 230 |  | 
| 231 231 | 
             
              scenario "delete" do
         | 
| 232 232 | 
             
                click_button "Delete this item"
         | 
| 233 | 
            -
                current_path. | 
| 234 | 
            -
                CopycatTranslation.find_by_key("foo"). | 
| 235 | 
            -
                page. | 
| 233 | 
            +
                expect(current_path).to eq(copycat_translations_path)
         | 
| 234 | 
            +
                expect(CopycatTranslation.find_by_key("foo")).to be_nil
         | 
| 235 | 
            +
                expect(page).to have_content "foo deleted!"
         | 
| 236 236 | 
             
              end
         | 
| 237 237 | 
             
            end
         | 
| 238 238 |  | 
| @@ -242,11 +242,11 @@ feature "downloading and uploading yaml files" do | |
| 242 242 | 
             
              end
         | 
| 243 243 |  | 
| 244 244 | 
             
              it "round-trips the YAML" do
         | 
| 245 | 
            -
                 | 
| 246 | 
            -
                 | 
| 247 | 
            -
                 | 
| 248 | 
            -
                 | 
| 249 | 
            -
                 | 
| 245 | 
            +
                create(:copycat_translation, :key => "a.foo1", :value => "bar1")
         | 
| 246 | 
            +
                create(:copycat_translation, :key => "a.foo2:", :value => "bar2")
         | 
| 247 | 
            +
                create(:copycat_translation, :key => "a.b.foo3", :value => "bar3")
         | 
| 248 | 
            +
                create(:copycat_translation, :key => "c.foo4", :value => "bar4")
         | 
| 249 | 
            +
                create(:copycat_translation, :key => 2, :value => "bar5")
         | 
| 250 250 | 
             
                assert CopycatTranslation.count == 5
         | 
| 251 251 |  | 
| 252 252 | 
             
                visit import_export_copycat_translations_path
         | 
| @@ -254,7 +254,7 @@ feature "downloading and uploading yaml files" do | |
| 254 254 | 
             
                CopycatTranslation.destroy_all
         | 
| 255 255 | 
             
                assert CopycatTranslation.count == 0
         | 
| 256 256 |  | 
| 257 | 
            -
                yaml = page. | 
| 257 | 
            +
                yaml = page.body
         | 
| 258 258 | 
             
                file = Tempfile.new 'copycat'
         | 
| 259 259 | 
             
                file.write yaml
         | 
| 260 260 | 
             
                file.close
         | 
| @@ -274,13 +274,13 @@ feature "downloading and uploading yaml files" do | |
| 274 274 |  | 
| 275 275 | 
             
              it "round-trips the yaml with complicated text" do
         | 
| 276 276 | 
             
                value = "“hello world“ üokåa®fgsdf;::fs;kdf"
         | 
| 277 | 
            -
                 | 
| 277 | 
            +
                create(:copycat_translation, :key => "a.foo", :value => value)
         | 
| 278 278 |  | 
| 279 279 | 
             
                visit import_export_copycat_translations_path
         | 
| 280 280 | 
             
                click_link 'Download as YAML'
         | 
| 281 281 | 
             
                CopycatTranslation.destroy_all
         | 
| 282 282 |  | 
| 283 | 
            -
                yaml = page. | 
| 283 | 
            +
                yaml = page.body
         | 
| 284 284 | 
             
                file = Tempfile.new 'copycat'
         | 
| 285 285 | 
             
                file.write yaml
         | 
| 286 286 | 
             
                file.close
         | 
| @@ -301,8 +301,8 @@ feature "downloading and uploading yaml files" do | |
| 301 301 | 
             
                attach_file "file", file.path
         | 
| 302 302 | 
             
                click_button "Upload"
         | 
| 303 303 | 
             
                file.unlink
         | 
| 304 | 
            -
                page.status_code. | 
| 305 | 
            -
                page. | 
| 304 | 
            +
                expect(page.status_code).to eq(400)
         | 
| 305 | 
            +
                expect(page).to have_content("There was an error processing your upload!")
         | 
| 306 306 | 
             
                assert CopycatTranslation.count == 0
         | 
| 307 307 | 
             
              end
         | 
| 308 308 |  | 
| @@ -339,13 +339,13 @@ feature "locales" do | |
| 339 339 | 
             
              end
         | 
| 340 340 |  | 
| 341 341 | 
             
              it "exports yaml containing multiple locales" do
         | 
| 342 | 
            -
                 | 
| 343 | 
            -
                 | 
| 342 | 
            +
                create(:copycat_translation, locale: 'en', key: 'hello', value: 'world')
         | 
| 343 | 
            +
                create(:copycat_translation, locale: 'es', key: 'hello', value: 'mundo')
         | 
| 344 344 |  | 
| 345 345 | 
             
                visit download_copycat_translations_path
         | 
| 346 346 | 
             
                yaml = page.text
         | 
| 347 347 | 
             
                assert yaml =~ /en:\s*hello: world/
         | 
| 348 | 
            -
                assert yaml =~ /es:\s*hello: mundo/ | 
| 348 | 
            +
                assert yaml =~ /es:\s*hello: mundo/
         | 
| 349 349 | 
             
              end
         | 
| 350 350 |  | 
| 351 351 | 
             
            end
         | 
| @@ -0,0 +1,92 @@ | |
| 1 | 
            +
            #encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            feature "use #t" do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              it "the dummy app has a translation for site.index.header but not site.index.intro" do
         | 
| 8 | 
            +
                expect(I18n.t('site.index.header')).to eq('The Header')
         | 
| 9 | 
            +
                expect(I18n.t('site.index.intro')).to eq("translation missing: en.site.index.intro")
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              it "uses i18n.t" do
         | 
| 13 | 
            +
                visit root_path
         | 
| 14 | 
            +
                expect(page).to have_content 'The Header'
         | 
| 15 | 
            +
                expect(page).to have_content 'Intro' #ActionView::Helpers::TranslationHelper#translate wrapper
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              it "creates a copycat_translation if the yaml has an entry" do
         | 
| 19 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.header')).to be_nil
         | 
| 20 | 
            +
                visit root_path
         | 
| 21 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.header')).not_to be_nil
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              it "creates a copycat_translation if the yaml does not have an entry" do
         | 
| 25 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.intro')).to be_nil
         | 
| 26 | 
            +
                visit root_path
         | 
| 27 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.intro')).not_to be_nil
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              it "shows the copycat_translation instead of the yaml" do
         | 
| 31 | 
            +
                create(:copycat_translation, key: 'site.index.header', value: 'A different header')
         | 
| 32 | 
            +
                visit root_path
         | 
| 33 | 
            +
                expect(page).not_to have_content 'The Header'
         | 
| 34 | 
            +
                expect(page).to have_content 'A different header'
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            feature "locales" do
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              it "displays different text based on users' locale" do
         | 
| 42 | 
            +
                create(:copycat_translation, locale: 'en', key: 'site.index.intro', value: 'world')
         | 
| 43 | 
            +
                create(:copycat_translation, locale: 'es', key: 'site.index.intro', value: 'mundo')
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                I18n.locale = :en
         | 
| 46 | 
            +
                visit root_path
         | 
| 47 | 
            +
                expect(page).to have_content 'world'
         | 
| 48 | 
            +
                expect(page).not_to have_content 'mundo'
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                I18n.locale = :es
         | 
| 51 | 
            +
                visit root_path
         | 
| 52 | 
            +
                expect(page).to have_content 'mundo'
         | 
| 53 | 
            +
                expect(page).not_to have_content 'world'
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                I18n.locale = :fa
         | 
| 56 | 
            +
                visit root_path
         | 
| 57 | 
            +
                expect(page).not_to have_content 'world'
         | 
| 58 | 
            +
                expect(page).not_to have_content 'mundo'
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                I18n.locale = :en  # reset
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
            feature "yaml" do
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              it "round-trips both translations correctly (and doesn't export nils)" do
         | 
| 68 | 
            +
                visit root_path
         | 
| 69 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.intro').value).to be_nil
         | 
| 70 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.header').value).to eq('The Header')
         | 
| 71 | 
            +
                expect(CopycatTranslation.count).to eq(2)
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                page.driver.browser.basic_authorize Copycat.username, Copycat.password
         | 
| 74 | 
            +
                visit import_export_copycat_translations_path
         | 
| 75 | 
            +
                click_link 'Download as YAML'
         | 
| 76 | 
            +
                CopycatTranslation.destroy_all
         | 
| 77 | 
            +
                expect(CopycatTranslation.count).to eq(0)
         | 
| 78 | 
            +
                yaml = page.body
         | 
| 79 | 
            +
                file = Tempfile.new 'copycat'
         | 
| 80 | 
            +
                file.write yaml
         | 
| 81 | 
            +
                file.close
         | 
| 82 | 
            +
                visit import_export_copycat_translations_path
         | 
| 83 | 
            +
                attach_file "file", file.path
         | 
| 84 | 
            +
                click_button "Upload"
         | 
| 85 | 
            +
                file.unlink
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                expect(CopycatTranslation.count).to eq(1)
         | 
| 88 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.intro')).to be_nil
         | 
| 89 | 
            +
                expect(CopycatTranslation.find_by_key('site.index.header').value).to eq('The Header')
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            end
         |