cypress-on-rails 1.4.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3539179f3a9e5d659797959cb90076cc26fab30195d4692f5c6baa01adf44b0
4
- data.tar.gz: d87eca7c08735de0fa4ab81a107e924b2e61d21857df79bd56c92afaca3ac1c9
3
+ metadata.gz: 423d83b19153f88f90b88295c62934aeb0a20e79cd1e4d700e9a01990972c400
4
+ data.tar.gz: a5c6a528c074c22ce50206c8120290d9bf12d576348cd033342f593c3efd2d38
5
5
  SHA512:
6
- metadata.gz: 3059da5ecf3664939b2151609f921a434863725e716606a681bec9f74e677319d9e7a3078830a63262a8805c9584120d0d05f7bce08ad2f7101e2f3363bcf29e
7
- data.tar.gz: 032c375f6ed7b145f7f6aa9a496f7d123a346c9efa084936f86f0f0b27cc3ac335c5d2b0bb07015b3a4abc7edfe745fbc2f65fb1b5872bbbfd69c7949acc0b86
6
+ metadata.gz: 309a6837d21c5cd1814a3b84f9903edcc9d4ddb035f4f0dd8e435640ce16b96e21d51f52b7715d3b88f3f87956143bb53db9434cd151b1c53ba5505316f46cf4
7
+ data.tar.gz: ec631f2f6a4a48240d1314911076888557da7f24e62ea7b9e0ad50be33f2367fd5581fe09699790a0cd55aa9dbc44d911252284d48e3aee595e5c4765790c91c
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ Gemfile.lock
4
4
  spec/examples.txt
5
5
  .idea
6
6
  spec/test.log
7
+ pkg/*.gem
@@ -25,6 +25,6 @@ before_install:
25
25
 
26
26
  script:
27
27
  - bundle exec rake
28
- - ./spec/integrations/rails_3_2/test.sh
29
- - ./spec/integrations/rails_4_2/test.sh
30
28
  - ./spec/integrations/rails_5_2/test.sh
29
+ - ./spec/integrations/rails_4_2/test.sh
30
+ - ./spec/integrations/rails_3_2/test.sh
@@ -1,9 +1,21 @@
1
+ ## [1.5.0]
2
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.2...v1.5.0
3
+
4
+ ### Added
5
+ * Serialize and return responses to be used in tests [PR 34](https://github.com/shakacode/cypress-on-rails/pull/34).
6
+ * Update generator to make it easier to update core generated files [PR 35](https://github.com/shakacode/cypress-on-rails/pull/35).
7
+
8
+ ### Tasks
9
+ * Update integration tests [PR 36](https://github.com/shakacode/cypress-on-rails/pull/36).
10
+
1
11
  ## [1.4.2]
12
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.1...v1.4.2
2
13
 
3
14
  ### Fixed
4
15
  * update generator to use full paths for Factory files [PR 33](https://github.com/shakacode/cypress-on-rails/pull/33).
5
16
 
6
17
  ## [1.4.1]
18
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.0...v1.4.1
7
19
 
8
20
  ### Fixed
9
21
  * fix install generator when using npm [PR 22](https://github.com/shakacode/cypress-on-rails/pull/22) by [josephan](https://github.com/josephan).
@@ -15,6 +27,8 @@
15
27
  * Fix CI by Installing cypress dependencies on Travis CI [PR 31](https://github.com/shakacode/cypress-on-rails/pull/31)
16
28
 
17
29
  ## [1.4.0]
30
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.3.0...v1.4.0
31
+
18
32
  * Accept an options argument for scenarios. [PR 18](https://github.com/shakacode/cypress-on-rails/pull/18) by [ericraio](https://github.com/ericraio).
19
33
 
20
34
  ### Changed
@@ -78,10 +92,6 @@
78
92
  ## 0.1.2 (2017-10-31)
79
93
  * First release.
80
94
 
81
- [Unreleased]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.2...master
82
- [1.4.2]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.1...v1.4.2
83
- [1.4.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.0...v1.4.1
84
- [1.4.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.3.0...v1.4.0
85
95
  [1.3.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.2.1...v1.3.0
86
96
  [1.2.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.2.0...v1.2.1
87
97
  [1.2.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.1.1...v1.2.0
data/README.md CHANGED
@@ -31,7 +31,7 @@ group :test, :development do
31
31
  end
32
32
  ```
33
33
 
34
- The generate the boilerplate code using:
34
+ Generate the boilerplate code using:
35
35
  ```
36
36
  bin/rails g cypress_on_rails:install
37
37
 
@@ -40,6 +40,9 @@ bin/rails g cypress_on_rails:install --cypress_folder=test/cypress
40
40
 
41
41
  # if you want to install cypress with npm
42
42
  bin/rails g cypress_on_rails:install --install_cypress_with=npm
43
+
44
+ # to update the generated files run
45
+ bin/rails g cypress_on_rails:update
43
46
  ```
44
47
 
45
48
  The generator adds the following files/directory to your application:
@@ -99,6 +102,11 @@ describe('My First Test', function() {
99
102
  cy.visit('/')
100
103
 
101
104
  cy.contains("Hello World")
105
+
106
+ // Accessing result
107
+ cy.appFactories([['create', 'invoice', { paid: false }]]).then((records) => {
108
+ cy.visit(`/invoices/${records[0].id}`);
109
+ });
102
110
  })
103
111
  })
104
112
  ```
@@ -54,9 +54,17 @@ module CypressOnRails
54
54
  logger.info "handle_command: #{body}"
55
55
  commands = Command.from_body(body, configuration)
56
56
  missing_command = commands.find {|command| !@file.exists?(command.file_path) }
57
+
57
58
  if missing_command.nil?
58
- commands.each { |command| @command_executor.load(command.file_path, command.options) }
59
- [201, {}, ['success']]
59
+ results = commands.map { |command| @command_executor.load(command.file_path, command.options) }
60
+
61
+ begin
62
+ output = results.to_json
63
+ rescue NoMethodError
64
+ output = {"message" => "Cannot convert to json"}.to_json
65
+ end
66
+
67
+ [201, {'Content-Type' => 'application/json'}, [output]]
60
68
  else
61
69
  [404, {}, ["could not find command file: #{missing_command.file_path}"]]
62
70
  end
@@ -1,3 +1,3 @@
1
1
  module CypressOnRails
2
- VERSION = '1.4.2'
2
+ VERSION = '1.5.0'
3
3
  end
@@ -12,6 +12,7 @@ if defined?(ActiveRecord)
12
12
  logger.debug "loading fixtures: { dir: #{fixtures_dir}, files: #{fixture_files} }"
13
13
  ActiveRecord::FixtureSet.reset_cache
14
14
  ActiveRecord::FixtureSet.create_fixtures(fixtures_dir, fixture_files)
15
+ "Fixtures Done" # this gets returned
15
16
  else # this else part can be removed
16
17
  logger.error "Looks like activerecord_fixtures has to be modified to suite your need"
17
18
  Post.create(title: 'MyCypressFixtures')
@@ -1,4 +1,4 @@
1
- Array.wrap(command_options).each do |factory_options|
1
+ Array.wrap(command_options).map do |factory_options|
2
2
  factory_method = factory_options.shift
3
3
  begin
4
4
  logger.debug "running #{factory_method}, #{factory_options}"
@@ -0,0 +1,27 @@
1
+ describe('More Rails using factory bot examples', function() {
2
+ beforeEach(() => {
3
+ cy.app('clean') // have a look at cypress/app_commands/clean.rb
4
+ })
5
+
6
+ it('using response from factory bot', function() {
7
+ cy.appFactories([['create', 'post', { title: 'Good bye Mars'} ]]).then((results) => {
8
+ const record = results[0];
9
+
10
+ cy.visit(`/posts/${record.id}`);
11
+ });
12
+ cy.contains("Good bye Mars")
13
+ })
14
+
15
+ it('using response from multiple factory bot', function() {
16
+ cy.appFactories([
17
+ ['create', 'post', { title: 'My First Post'} ],
18
+ ['create', 'post', { title: 'My Second Post'} ]
19
+ ]).then((results) => {
20
+ cy.visit(`/posts/${results[0].id}`);
21
+ cy.contains("My First Post")
22
+
23
+ cy.visit(`/posts/${results[1].id}`);
24
+ cy.contains("My Second Post")
25
+ });
26
+ })
27
+ })
@@ -1,29 +1,33 @@
1
1
  // CypressOnRails: dont remove these command
2
2
  Cypress.Commands.add('appCommands', function (body) {
3
3
  cy.log("APP: " + JSON.stringify(body))
4
- cy.request({
4
+ return cy.request({
5
5
  method: 'POST',
6
6
  url: "/__cypress__/command",
7
7
  body: JSON.stringify(body),
8
8
  log: true,
9
9
  failOnStatusCode: true
10
- })
10
+ }).then((response) => {
11
+ return response.body
12
+ });
11
13
  });
12
14
 
13
15
  Cypress.Commands.add('app', function (name, command_options) {
14
- cy.appCommands({name: name, options: command_options})
16
+ return cy.appCommands({name: name, options: command_options}).then((body) => {
17
+ return body[0]
18
+ });
15
19
  });
16
20
 
17
21
  Cypress.Commands.add('appScenario', function (name, options = {}) {
18
- cy.app('scenarios/' + name, options)
22
+ return cy.app('scenarios/' + name, options)
19
23
  });
20
24
 
21
25
  Cypress.Commands.add('appEval', function (code) {
22
- cy.app('eval', code)
26
+ return cy.app('eval', code)
23
27
  });
24
28
 
25
29
  Cypress.Commands.add('appFactories', function (options) {
26
- cy.app('factory_bot', options)
30
+ return cy.app('factory_bot', options)
27
31
  });
28
32
 
29
33
  Cypress.Commands.add('appFixtures', function (options) {
@@ -0,0 +1,13 @@
1
+ module CypressOnRails
2
+ class UpdateGenerator < Rails::Generators::Base
3
+ class_option :cypress_folder, type: :string, default: 'spec/cypress'
4
+ source_root File.expand_path('../templates', __FILE__)
5
+
6
+ def update_generated_files
7
+ template "config/initializers/cypress_on_rails.rb.erb", "config/initializers/cypress_on_rails.rb"
8
+ copy_file "spec/cypress/cypress_helper.rb", "#{options.cypress_folder}/cypress_helper.rb"
9
+ copy_file "spec/cypress/support/on-rails.js", "#{options.cypress_folder}/support/on-rails.js"
10
+ directory 'spec/cypress/app_commands', "#{options.cypress_folder}/app_commands"
11
+ end
12
+ end
13
+ end
@@ -16,17 +16,20 @@ RSpec.describe CypressOnRails::Middleware do
16
16
 
17
17
  context '/__cypress__/command' do
18
18
  before do
19
- allow(command_executor).to receive(:load)
19
+ allow(command_executor).to receive(:load).and_return({ id: 1, title: 'some result' })
20
20
  allow(file).to receive(:exists?)
21
21
  env['PATH_INFO'] = '/__cypress__/command'
22
22
  end
23
23
 
24
24
  it 'command file exists' do
25
+ allow(command_executor).to receive(:load).and_return({ id: 1, title: 'some result' })
25
26
  env['rack.input'] = rack_input(name: 'seed')
26
27
  allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(true)
27
28
 
28
29
  aggregate_failures do
29
- expect(response).to eq([201, {}, ['success']])
30
+ expect(response).to eq([201,
31
+ {"Content-Type"=>"application/json"},
32
+ ["[{\"id\":1,\"title\":\"some result\"}]"]])
30
33
  expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', nil)
31
34
  end
32
35
  end
@@ -36,18 +39,36 @@ RSpec.describe CypressOnRails::Middleware do
36
39
  allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(true)
37
40
 
38
41
  aggregate_failures do
39
- expect(response).to eq([201, {}, ['success']])
42
+ expect(response).to eq([201,
43
+ {"Content-Type"=>"application/json"},
44
+ ["[{\"id\":1,\"title\":\"some result\"}]"]])
40
45
  expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', ['my_options'])
41
46
  end
42
47
  end
43
48
 
44
49
  it 'command file does not exists' do
50
+ object = BasicObject.new
51
+ allow(command_executor).to receive(:load).and_return(object)
45
52
  env['rack.input'] = rack_input(name: 'seed')
46
- allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(false)
53
+ allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(true)
47
54
 
48
55
  aggregate_failures do
49
- expect(response).to eq([404, {}, ['could not find command file: spec/cypress/app_commands/seed.rb']])
50
- expect(command_executor).to_not have_received(:load)
56
+ expect(response).to eq([201,
57
+ {"Content-Type"=>"application/json"},
58
+ ["{\"message\":\"Cannot convert to json\"}"]])
59
+ expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', nil)
60
+ end
61
+ end
62
+
63
+ it 'command result does not respond to to_json' do
64
+ env['rack.input'] = rack_input(name: 'seed')
65
+ allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(true)
66
+
67
+ aggregate_failures do
68
+ expect(response).to eq([201,
69
+ {"Content-Type"=>"application/json"},
70
+ ["[{\"id\":1,\"title\":\"some result\"}]"]])
71
+ expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', nil)
51
72
  end
52
73
  end
53
74
 
@@ -58,7 +79,9 @@ RSpec.describe CypressOnRails::Middleware do
58
79
  allow(file).to receive(:exists?).with('spec/cypress/app_commands/load_sample.rb').and_return(true)
59
80
 
60
81
  aggregate_failures do
61
- expect(response).to eq([201, {}, ['success']])
82
+ expect(response).to eq([201,
83
+ {"Content-Type"=>"application/json"},
84
+ ["[{\"id\":1,\"title\":\"some result\"},{\"id\":1,\"title\":\"some result\"}]"]])
62
85
  expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/load_user.rb', nil)
63
86
  expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/load_sample.rb', {'all' => 'true'})
64
87
  end
@@ -15,6 +15,7 @@ bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
15
 
16
16
  echo '-- cypress install'
17
17
  bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=cypress --install_cypress_with=npm --no-install-cypress-examples
18
+ rm -vf cypress/integration/rails_examples/advance_factory_bot_spec.js
18
19
 
19
20
  echo '-- start rails server'
20
21
  # make sure the server is not running
@@ -15,6 +15,7 @@ bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
15
 
16
16
  echo '-- cypress install'
17
17
  bundle exec ./bin/rails g cypress_on_rails:install --no-install-cypress-examples
18
+ rm -vf spec/cypress/integration/rails_examples/advance_factory_bot_spec.js
18
19
 
19
20
  echo '-- start rails server'
20
21
  # make sure the server is not running
@@ -33,6 +34,5 @@ else
33
34
  yarn run cypress run --record
34
35
  fi
35
36
 
36
-
37
37
  echo '-- stop rails server'
38
38
  kill -9 `cat ../tmp/pids/server.pid`
@@ -6,7 +6,7 @@ test/yarn.lock
6
6
  test/cypress/
7
7
  config/initializers/cypress_on_rails.rb
8
8
  vendor/bundle
9
- tmp/pids
10
9
  db/*.sqlite3
11
10
  db/schema.rb
12
- tmp/cache
11
+ tmp/*
12
+ log/*
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cypress-on-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - miceportal team
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-08-23 00:00:00.000000000 Z
12
+ date: 2019-10-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -127,13 +127,15 @@ files:
127
127
  - lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/viewport.spec.js
128
128
  - lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/waiting.spec.js
129
129
  - lib/generators/cypress_on_rails/templates/spec/cypress/integration/examples/window.spec.js
130
+ - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/advance_factory_bot_spec.js
130
131
  - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/other_spec.js
131
- - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/using_factory_bot.js
132
- - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/using_fixtures.js
132
+ - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/using_factory_bot_spec.js
133
+ - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/using_fixtures_spec.js
133
134
  - lib/generators/cypress_on_rails/templates/spec/cypress/integration/rails_examples/using_scenarios_spec.js
134
135
  - lib/generators/cypress_on_rails/templates/spec/cypress/support/commands.js
135
136
  - lib/generators/cypress_on_rails/templates/spec/cypress/support/index.js
136
137
  - lib/generators/cypress_on_rails/templates/spec/cypress/support/on-rails.js
138
+ - lib/generators/cypress_on_rails/update_generator.rb
137
139
  - spec/cypress_on_rails/command_executor/cypress_helper.rb
138
140
  - spec/cypress_on_rails/command_executor/test_command.rb
139
141
  - spec/cypress_on_rails/command_executor/test_command_with_options.rb
@@ -301,8 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
301
303
  - !ruby/object:Gem::Version
302
304
  version: '0'
303
305
  requirements: []
304
- rubyforge_project:
305
- rubygems_version: 2.7.6
306
+ rubygems_version: 3.0.3
306
307
  signing_key:
307
308
  specification_version: 4
308
309
  summary: Integrates cypress with rails or rack applications