cypress-on-rails 1.6.0 → 1.9.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: c704c33fe50fb989eaf131934d0210c112005e96
4
- data.tar.gz: b53f4ce2fea91a67744f0432a736dd1021fb3c7d
2
+ SHA256:
3
+ metadata.gz: df550a0ca15f4fe35c0bdf3227596ea79e6cbb9c407117592383466c81f45447
4
+ data.tar.gz: 6dc7c397f9e13dd6ad7f60e5d0bb929bb1aa0a65dab9ed5992f1d260686316ba
5
5
  SHA512:
6
- metadata.gz: 9f5bff901ec22f23d785eb19597b07fce18ecd87bea209464ce4bc9de4f6ce2238bd5f760f02d98443aa540e32147be1b06cc2dbc33e105d31364c8cfb4c7d91
7
- data.tar.gz: 01c2e5fb7d24cac595e56e1ed24e4b0ed0643715dd4f51b11056806f456867bd2d72dd1cf15c5e583f1d3543ca131eda5783faa15fb9f6be0060134fdb15ae65
6
+ metadata.gz: cd12f10387af1cd51f91e65acea0b2705970487e101fe963273a70982c0f789a00896bab78ea461a2fee1dab3e1aa63be8d0e9d45e8ab39b8bee7b0c3821a5cb
7
+ data.tar.gz: dbf5569c5d5b71bd737b28f656f2c9993a0235ebc9e87c8f42def465521900c713fa9ffe33035b5603d00796c7c6bae39941e36f261b17266159567addf470ff
@@ -0,0 +1 @@
1
+ github: [shakacode]
data/.gitignore CHANGED
@@ -5,3 +5,4 @@ spec/examples.txt
5
5
  .idea
6
6
  spec/test.log
7
7
  pkg/*.gem
8
+ vendor/bundle
data/.travis.yml CHANGED
@@ -26,6 +26,9 @@ before_install:
26
26
  - sudo apt-get -qq update
27
27
  - sudo apt-get install -y build-essential patch ruby-dev zlib1g-dev liblzma-dev libxml2-dev
28
28
  - sudo apt-get install -y xvfb libgtk2.0-0 libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2
29
+ - travis_retry nvm install 14.13.1
30
+ - node -v
31
+ - nvm alias default 14.13.1
29
32
 
30
33
  script:
31
34
  - bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,3 +1,40 @@
1
+ ## [1.9.1]
2
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.9.0...v1.9.1
3
+
4
+ ### Fixed
5
+ * fix using `load` in command files
6
+
7
+ ## [1.9.0]
8
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.8.1...v1.9.0
9
+
10
+ ### Changed
11
+ * Update default generated folder to cypress instead of spec/cypress
12
+ * Add a generator option to not install cypress
13
+ * generator by default does not include examples
14
+ * default on local to run cypress in development mode
15
+
16
+ ## [1.8.1]
17
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.8.0...v1.8.1
18
+
19
+ ### Fixed
20
+ * remove "--silent" option when adding cypress [PR 76](https://github.com/shakacode/cypress-on-rails/pull/76)
21
+ * update cypress examples to use "preserve" instead of "whitelist" [PR 75](https://github.com/shakacode/cypress-on-rails/pull/75) by [alvincrespo](https://github.com/alvincrespo)
22
+
23
+ ## [1.8.0]
24
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.7.0...v1.8.0
25
+
26
+ ### Changed
27
+ * Use `FactoryBo#reload` to reset factory bot
28
+
29
+ ## [1.7.0]
30
+ [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.6.0...v1.7.0
31
+
32
+ ### Changed
33
+ * Improve eval() in command executor [PR 46](https://github.com/shakacode/cypress-on-rails/pull/46) by [Systho](https://github.com/Systho)
34
+
35
+ ### Fixed
36
+ * Add middleware after load_config_initializers [PR 62](https://github.com/shakacode/cypress-on-rails/pull/62) by [duytd](https://github.com/duytd)
37
+
1
38
  ## [1.6.0]
2
39
  [Compare]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.1...v1.6.0
3
40
 
@@ -107,6 +144,14 @@
107
144
  ## 0.1.2 (2017-10-31)
108
145
  * First release.
109
146
 
147
+ [1.8.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.7.0...v1.8.0
148
+ [1.7.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.6.0...v1.7.0
149
+ [1.6.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.1...v1.6.0
150
+ [1.5.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.5.0...v1.5.1
151
+ [1.5.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.2...v1.5.0
152
+ [1.4.2]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.1...v1.4.2
153
+ [1.4.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.4.0...v1.4.1
154
+ [1.4.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.3.0...v1.4.0
110
155
  [1.3.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.2.1...v1.3.0
111
156
  [1.2.1]: https://github.com/shakacode/cypress-on-rails/compare/v1.2.0...v1.2.1
112
157
  [1.2.0]: https://github.com/shakacode/cypress-on-rails/compare/v1.1.1...v1.2.0
data/README.md CHANGED
@@ -8,6 +8,13 @@ This project is sponsored by the software consulting firm [ShakaCode](https://ww
8
8
 
9
9
  ----
10
10
 
11
+ # Totally new to Cypress?
12
+ Suggest you first learn the basics of Cypress before attempting to integrate with Ruby on Rails
13
+
14
+ * [Good start Here](https://docs.cypress.io/examples/examples/tutorials.html#Best-Practices)
15
+
16
+ ## Overview
17
+
11
18
  Gem for using [cypress.io](http://github.com/cypress-io/) in Rails and ruby rack applications
12
19
  with the goal of controlling State as mentioned in [Cypress Best Practices](https://docs.cypress.io/guides/references/best-practices.html#Organizing-Tests-Logging-In-Controlling-State)
13
20
 
@@ -24,9 +31,11 @@ Has examples of setting up state with:
24
31
  * scenarios
25
32
  * custom commands
26
33
 
27
- Video of getting started with this gem https://grant-ps.blog/2018/08/10/getting-started-with-cypress-io-and-ruby-on-rails/
34
+ ## Resources
35
+ * [Video of getting started with this gem](https://grant-ps.blog/2018/08/10/getting-started-with-cypress-io-and-ruby-on-rails/)
36
+ * [Article: Introduction to Cypress on Rails](https://www.shakacode.com/blog/introduction-to-cypress-on-rails/)
28
37
 
29
- ## Getting started
38
+ ## Installation
30
39
 
31
40
  Add this to your Gemfile:
32
41
 
@@ -41,12 +50,15 @@ Generate the boilerplate code using:
41
50
  ```shell
42
51
  bin/rails g cypress_on_rails:install
43
52
 
44
- # if you have/want a different cypress folder (default is spec/cypress)
45
- bin/rails g cypress_on_rails:install --cypress_folder=test/cypress
53
+ # if you have/want a different cypress folder (default is cypress)
54
+ bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress
46
55
 
47
56
  # if you want to install cypress with npm
48
57
  bin/rails g cypress_on_rails:install --install_cypress_with=npm
49
58
 
59
+ # if you already have cypress installed globally
60
+ bin/rails g cypress_on_rails:install --no-install-cypress
61
+
50
62
  # to update the generated files run
51
63
  bin/rails g cypress_on_rails:update
52
64
  ```
@@ -64,24 +76,57 @@ if you are not using factory_bot look at `spec/cypress/app_commands/factory_bot.
64
76
 
65
77
  Now you can create scenarios and commands that are plain ruby files that get loaded through middleware, the ruby sky is your limit.
66
78
 
79
+ ### Update your database.yml
80
+
81
+ When writing cypress test on your local it's recommended to start your server in development mode so that changes you
82
+ make are picked up without having to restart the server.
83
+ It's recommend you update your database.yml to check if the CYPRESS environment variable is set and switch it to the test database
84
+ otherwise cypress will keep clearing your development database.
85
+
86
+ for example:
87
+
88
+ ```yaml
89
+ development:
90
+ <<: *default
91
+ database: <%= ENV['CYPRESS'] ? 'my_db_test' : 'my_db_development' %>
92
+ test:
93
+ <<: *default
94
+ database: my_db_test
95
+ ```
96
+
67
97
  ### WARNING
68
98
  *WARNING!!:* cypress-on-rails can execute arbitrary ruby code
69
99
  Please use with extra caution if starting your local server on 0.0.0.0 or running the gem on a hosted server
70
100
 
71
101
  ## Usage
72
102
 
73
- Start the rails server in test mode and start cypress
103
+ Getting started on your local environment
74
104
 
75
105
  ```shell
76
106
  # start rails
77
- RAILS_ENV=test bin/rake db:create db:schema:load
78
- bin/rails server -e test -p 5017
107
+ CYPRESS=1 bin/rails server -p 5017
79
108
 
80
109
  # in separate window start cypress
110
+ yarn cypress open
111
+ # or for npm
112
+ node_modules/.bin/cypress open
113
+ # or if you changed the cypress folder to spec/cypress
81
114
  yarn cypress open --project ./spec
82
115
  ```
83
116
 
117
+ How to run cypress on CI
118
+
119
+ ```shell
120
+ # setup rails and start server in background
121
+ # ...
122
+
123
+ yarn run cypress run
124
+ # or for npm
125
+ node_modules/.bin/cypress run
126
+ ```
127
+
84
128
  ### Example of using factory bot
129
+
85
130
  You can run your [factory_bot](https://github.com/thoughtbot/factory_bot) directly as well
86
131
 
87
132
  ```ruby
@@ -102,7 +147,8 @@ describe('My First Test', function() {
102
147
  // This calls to the backend to prepare the application state
103
148
  cy.appFactories([
104
149
  ['create_list', 'post', 10],
105
- ['create', 'post', {title: 'Hello World'} ]
150
+ ['create', 'post', {title: 'Hello World'} ],
151
+ ['create', 'post', 'with_comments', {title: 'Factory_bot Traits here'} ] // use traits
106
152
  ])
107
153
 
108
154
  // Visit the application under test
@@ -249,7 +295,7 @@ beforeEach(() => {
249
295
 
250
296
  ## Contributing
251
297
 
252
- 1. Fork it ( https://github.com/[my-github-username]/cypress-on-rails/fork )
298
+ 1. Fork it ( https://github.com/shakacode/cypress-on-rails/fork )
253
299
  2. Create your feature branch (`git checkout -b my-new-feature`)
254
300
  3. Commit your changes (`git commit -am 'Add some feature'`)
255
301
  4. Push to the branch (`git push origin my-new-feature`)
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = CypressOnRails::VERSION
8
8
  s.author = ["miceportal team", 'Grant Petersen-Speelman']
9
9
  s.email = ["info@miceportal.de", 'grantspeelman@gmail.com']
10
- s.homepage = "http://github.com/grantspeelman/cypress-on-rails"
10
+ s.homepage = "http://github.com/shakacode/cypress-on-rails"
11
11
  s.summary = "Integrates cypress with rails or rack applications"
12
12
  s.description = "Integrates cypress with rails or rack applications"
13
13
  s.post_install_message = 'The CypressDev constant is being deprecated and will be completely removed and replaced with CypressOnRails.'
@@ -19,4 +19,12 @@ Gem::Specification.new do |s|
19
19
  s.add_development_dependency 'rake'
20
20
  s.add_development_dependency 'rspec'
21
21
  s.add_development_dependency 'railties', '>= 3.2'
22
+ s.add_development_dependency 'factory_bot'
23
+ s.metadata = {
24
+ "bug_tracker_uri" => "https://github.com/shakacode/cypress-on-rails/issues",
25
+ "changelog_uri" => "https://github.com/shakacode/cypress-on-rails/blob/master/CHANGELOG.md",
26
+ "documentation_uri" => "https://github.com/shakacode/cypress-on-rails/blob/master/README.md",
27
+ "homepage_uri" => "http://github.com/shakacode/cypress-on-rails",
28
+ "source_code_uri" => "http://github.com/shakacode/cypress-on-rails"
29
+ }
22
30
  end
@@ -3,10 +3,10 @@ require 'cypress_on_rails/configuration'
3
3
  module CypressOnRails
4
4
  # loads and evals the command files
5
5
  class CommandExecutor
6
- def self.load(file,command_options = nil)
6
+ def self.perform(file,command_options = nil)
7
7
  load_cypress_helper
8
8
  file_data = File.read(file)
9
- eval file_data
9
+ eval file_data, binding, file
10
10
  rescue => e
11
11
  logger.error("fail to execute #{file}: #{e.message}")
12
12
  logger.error(e.backtrace.join("\n"))
@@ -56,7 +56,7 @@ module CypressOnRails
56
56
  missing_command = commands.find {|command| !@file.exists?(command.file_path) }
57
57
 
58
58
  if missing_command.nil?
59
- results = commands.map { |command| @command_executor.load(command.file_path, command.options) }
59
+ results = commands.map { |command| @command_executor.perform(command.file_path, command.options) }
60
60
 
61
61
  begin
62
62
  output = results.to_json
@@ -4,7 +4,7 @@ require 'cypress_on_rails/middleware'
4
4
 
5
5
  module CypressOnRails
6
6
  class Railtie < Rails::Railtie
7
- initializer :setup_cypress_middleware do |app|
7
+ initializer :setup_cypress_middleware, after: :load_config_initializers do |app|
8
8
  if CypressOnRails.configuration.use_middleware?
9
9
  app.middleware.use Middleware
10
10
  end
@@ -12,5 +12,9 @@ module CypressOnRails
12
12
  create(type,*params)
13
13
  end
14
14
  end
15
+
16
+ # to be API compatible with factorybot
17
+ def self.definition_file_paths=(*); end
18
+ def self.reload; end
15
19
  end
16
20
  end
@@ -3,15 +3,6 @@ require 'cypress_on_rails/simple_rails_factory'
3
3
 
4
4
  module CypressOnRails
5
5
  class SmartFactoryWrapper
6
- module FactoryCleaner
7
- def self.clean(f = FactoryBot)
8
- f.factories.clear if f.respond_to?(:factories)
9
- f.traits.clear if f.respond_to?(:traits)
10
- f.callbacks.clear if f.respond_to?(:callbacks)
11
- f.sequences.clear if f.respond_to?(:sequences)
12
- end
13
- end
14
-
15
6
  def self.instance
16
7
  @instance ||= new(files: [], factory: SimpleRailsFactory)
17
8
  end
@@ -33,14 +24,13 @@ module CypressOnRails
33
24
  attr_accessor :always_reload
34
25
 
35
26
  def initialize(files:, factory:, always_reload: false,
36
- factory_cleaner: FactoryCleaner, kernel: Kernel, file_system: File,
37
- dir_system: Dir)
27
+ kernel: Kernel, file_system: File, dir_system: Dir)
38
28
  self.files = files
39
29
  self.factory = factory
30
+ factory.definition_file_paths = []
40
31
  self.always_reload = always_reload
41
32
  @kernel = kernel
42
33
  @file_system = file_system
43
- @factory_cleaner = factory_cleaner
44
34
  @latest_mtime = nil
45
35
  @dir_system = dir_system
46
36
  end
@@ -83,7 +73,7 @@ module CypressOnRails
83
73
  return unless should_reload?(current_latest_mtime)
84
74
  logger.info 'Loading Factories'
85
75
  @latest_mtime = current_latest_mtime
86
- @factory_cleaner.clean(factory)
76
+ factory.reload
87
77
  files.each do |file|
88
78
  logger.debug "-- Loading: #{file}"
89
79
  @kernel.load(file)
@@ -1,3 +1,3 @@
1
1
  module CypressOnRails
2
- VERSION = '1.6.0'
2
+ VERSION = '1.9.1'.freeze
3
3
  end
@@ -1,8 +1,9 @@
1
1
  module CypressOnRails
2
2
  class InstallGenerator < Rails::Generators::Base
3
- class_option :cypress_folder, type: :string, default: 'spec/cypress'
3
+ class_option :cypress_folder, type: :string, default: 'cypress'
4
+ class_option :install_cypress, type: :boolean, default: true
4
5
  class_option :install_cypress_with, type: :string, default: 'yarn'
5
- class_option :install_cypress_examples, type: :boolean, default: true
6
+ class_option :install_cypress_examples, type: :boolean, default: false
6
7
  source_root File.expand_path('../templates', __FILE__)
7
8
 
8
9
  def install_cypress
@@ -11,14 +12,16 @@ module CypressOnRails
11
12
  directories.pop
12
13
  install_dir = "#{Dir.pwd}/#{directories.join('/')}"
13
14
  command = nil
14
- if options.install_cypress_with == 'yarn'
15
- command = "yarn --cwd=#{install_dir} add cypress --dev --silent"
16
- elsif options.install_cypress_with == 'npm'
17
- command = "cd #{install_dir}; npm install cypress --save-dev --silent"
18
- end
19
- if command
20
- say command
21
- fail 'failed to install cypress' unless system(command)
15
+ if options.install_cypress
16
+ if options.install_cypress_with == 'yarn'
17
+ command = "yarn --cwd=#{install_dir} add cypress --dev"
18
+ elsif options.install_cypress_with == 'npm'
19
+ command = "cd #{install_dir}; npm install cypress --save-dev"
20
+ end
21
+ if command
22
+ say command
23
+ fail 'failed to install cypress' unless system(command)
24
+ end
22
25
  end
23
26
  if options.install_cypress_examples
24
27
  directory 'spec/cypress/integration/examples', "#{options.cypress_folder}/integration/examples"
@@ -43,19 +46,5 @@ module CypressOnRails
43
46
  "\nimport './on-rails'",
44
47
  after: 'import \'./commands\''
45
48
  end
46
-
47
-
48
- def update_test_rb
49
- if File.exist?('config/environments/test.rb')
50
- gsub_file 'config/environments/test.rb',
51
- 'config.cache_classes = true',
52
- 'config.cache_classes = ENV[\'CI\'].present?'
53
- end
54
- if File.exist?('spec/dummy/config/environments/test.rb')
55
- gsub_file 'spec/dummy/config/environments/test.rb',
56
- 'config.cache_classes = true',
57
- 'config.cache_classes = ENV[\'CI\'].present?'
58
- end
59
- end
60
49
  end
61
50
  end
@@ -3,7 +3,15 @@ if defined?(CypressOnRails)
3
3
  c.cypress_folder = File.expand_path("#{__dir__}/../../<%= options.cypress_folder %>")
4
4
  # WARNING!! CypressOnRails can execute arbitrary ruby code
5
5
  # please use with extra caution if enabling on hosted servers or starting your local server on 0.0.0.0
6
- c.use_middleware = Rails.env.test?
6
+ c.use_middleware = !Rails.env.production?
7
7
  c.logger = Rails.logger
8
8
  end
9
+
10
+ # # if you compile your asssets on CI
11
+ # if ENV['CYPRESS'].present? && ENV['CI'].present?
12
+ # Rails.application.configure do
13
+ # config.assets.compile = false
14
+ # config.assets.unknown_asset_fallback = false
15
+ # end
16
+ # end
9
17
  end
@@ -1,9 +1,14 @@
1
1
  # This is loaded once before the first command is executed
2
2
 
3
3
  begin
4
- require 'database_cleaner'
4
+ require 'database_cleaner-active_record'
5
5
  rescue LoadError => e
6
- puts e.message
6
+ puts e.message
7
+ begin
8
+ require 'database_cleaner'
9
+ rescue LoadError => e
10
+ puts e.message
11
+ end
7
12
  end
8
13
 
9
14
  begin
@@ -65,7 +65,7 @@ context('Cypress.Cookies', () => {
65
65
  // now any cookie with the name 'session_id' will
66
66
  // not be cleared before each new test runs
67
67
  Cypress.Cookies.defaults({
68
- whitelist: 'session_id',
68
+ preserve: 'session_id',
69
69
  })
70
70
  })
71
71
  })
@@ -84,8 +84,8 @@ context('Cypress.Server', () => {
84
84
  Cypress.Server.defaults({
85
85
  delay: 0,
86
86
  force404: false,
87
- whitelist (xhr) {
88
- // handle custom logic for whitelisting
87
+ preserve (xhr) {
88
+ // handle custom logic for preserving
89
89
  },
90
90
  })
91
91
  })
@@ -1,12 +1,12 @@
1
1
  require 'cypress_on_rails/command_executor'
2
2
 
3
3
  RSpec.describe CypressOnRails::CommandExecutor do
4
- describe '.load' do
4
+ describe '.perform' do
5
5
  let(:folder) { "#{__dir__}/command_executor" }
6
6
  subject { described_class }
7
7
 
8
- def executor_load(*values)
9
- subject.load(*values)
8
+ def executor_perform(*values)
9
+ subject.perform(*values)
10
10
  end
11
11
 
12
12
  before do
@@ -15,18 +15,18 @@ RSpec.describe CypressOnRails::CommandExecutor do
15
15
  end
16
16
 
17
17
  it 'runs test command' do
18
- executor_load("#{folder}/test_command.rb")
18
+ executor_perform("#{folder}/test_command.rb")
19
19
  expect(DummyTest.values).to eq(%w(hello))
20
20
  end
21
21
 
22
22
  it 'runs test command twice' do
23
- executor_load("#{folder}/test_command.rb")
24
- executor_load("#{folder}/test_command.rb")
23
+ executor_perform("#{folder}/test_command.rb")
24
+ executor_perform("#{folder}/test_command.rb")
25
25
  expect(DummyTest.values).to eq(%w(hello hello))
26
26
  end
27
27
 
28
28
  it 'runs command with options' do
29
- executor_load("#{folder}/test_command_with_options.rb", 'my_string')
29
+ executor_perform("#{folder}/test_command_with_options.rb", 'my_string')
30
30
  expect(DummyTest.values).to eq(%w(my_string))
31
31
  end
32
32
  end
@@ -16,13 +16,13 @@ RSpec.describe CypressOnRails::Middleware do
16
16
 
17
17
  context '/__cypress__/command' do
18
18
  before do
19
- allow(command_executor).to receive(:load).and_return({ id: 1, title: 'some result' })
19
+ allow(command_executor).to receive(:perform).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
+ allow(command_executor).to receive(:perform).and_return({ id: 1, title: 'some result' })
26
26
  env['rack.input'] = rack_input(name: 'seed')
27
27
  allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(true)
28
28
 
@@ -30,7 +30,7 @@ RSpec.describe CypressOnRails::Middleware do
30
30
  expect(response).to eq([201,
31
31
  {"Content-Type"=>"application/json"},
32
32
  ["[{\"id\":1,\"title\":\"some result\"}]"]])
33
- expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', nil)
33
+ expect(command_executor).to have_received(:perform).with('spec/cypress/app_commands/seed.rb', nil)
34
34
  end
35
35
  end
36
36
 
@@ -42,13 +42,13 @@ RSpec.describe CypressOnRails::Middleware do
42
42
  expect(response).to eq([201,
43
43
  {"Content-Type"=>"application/json"},
44
44
  ["[{\"id\":1,\"title\":\"some result\"}]"]])
45
- expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', ['my_options'])
45
+ expect(command_executor).to have_received(:perform).with('spec/cypress/app_commands/seed.rb', ['my_options'])
46
46
  end
47
47
  end
48
48
 
49
49
  it 'command file does not exists' do
50
50
  object = BasicObject.new
51
- allow(command_executor).to receive(:load).and_return(object)
51
+ allow(command_executor).to receive(:perform).and_return(object)
52
52
  env['rack.input'] = rack_input(name: 'seed')
53
53
  allow(file).to receive(:exists?).with('spec/cypress/app_commands/seed.rb').and_return(true)
54
54
 
@@ -56,7 +56,7 @@ RSpec.describe CypressOnRails::Middleware do
56
56
  expect(response).to eq([201,
57
57
  {"Content-Type"=>"application/json"},
58
58
  ["{\"message\":\"Cannot convert to json\"}"]])
59
- expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', nil)
59
+ expect(command_executor).to have_received(:perform).with('spec/cypress/app_commands/seed.rb', nil)
60
60
  end
61
61
  end
62
62
 
@@ -68,7 +68,7 @@ RSpec.describe CypressOnRails::Middleware do
68
68
  expect(response).to eq([201,
69
69
  {"Content-Type"=>"application/json"},
70
70
  ["[{\"id\":1,\"title\":\"some result\"}]"]])
71
- expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/seed.rb', nil)
71
+ expect(command_executor).to have_received(:perform).with('spec/cypress/app_commands/seed.rb', nil)
72
72
  end
73
73
  end
74
74
 
@@ -82,8 +82,8 @@ RSpec.describe CypressOnRails::Middleware do
82
82
  expect(response).to eq([201,
83
83
  {"Content-Type"=>"application/json"},
84
84
  ["[{\"id\":1,\"title\":\"some result\"},{\"id\":1,\"title\":\"some result\"}]"]])
85
- expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/load_user.rb', nil)
86
- expect(command_executor).to have_received(:load).with('spec/cypress/app_commands/load_sample.rb', {'all' => 'true'})
85
+ expect(command_executor).to have_received(:perform).with('spec/cypress/app_commands/load_user.rb', nil)
86
+ expect(command_executor).to have_received(:perform).with('spec/cypress/app_commands/load_sample.rb', {'all' => 'true'})
87
87
  end
88
88
  end
89
89
 
@@ -94,7 +94,7 @@ RSpec.describe CypressOnRails::Middleware do
94
94
 
95
95
  aggregate_failures do
96
96
  expect(response).to eq([404, {}, ['could not find command file: spec/cypress/app_commands/load_sample.rb']])
97
- expect(command_executor).to_not have_received(:load)
97
+ expect(command_executor).to_not have_received(:perform)
98
98
  end
99
99
  end
100
100
  end
@@ -1,4 +1,5 @@
1
1
  require 'cypress_on_rails/smart_factory_wrapper'
2
+ require 'factory_bot'
2
3
 
3
4
  RSpec.describe CypressOnRails::SmartFactoryWrapper do
4
5
  FileSystemDummy = Struct.new(:file_hash) do
@@ -10,8 +11,9 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
10
11
  let(:time_now) { Time.now }
11
12
  let(:mtime_hash) { {'file1.rb' => time_now, 'file2.rb' => time_now } }
12
13
  let(:files) { %w(file1.rb file2.rb) }
13
- let(:factory_double) { double('FactoryBot', create: true, create_list: true) }
14
- let(:factory_cleaner) { class_double(CypressOnRails::SmartFactoryWrapper::FactoryCleaner, clean: true) }
14
+ let(:factory_double) do
15
+ class_double(FactoryBot, create: nil, create_list: nil, "definition_file_paths=": nil, reload: nil)
16
+ end
15
17
  let(:kernel_double) { class_double(Kernel, load: true) }
16
18
  let(:file_double) { FileSystemDummy.new(mtime_hash) }
17
19
  let(:dir_double) { class_double(Dir) }
@@ -25,8 +27,7 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
25
27
  factory: factory_double,
26
28
  kernel: kernel_double,
27
29
  file_system: file_double,
28
- dir_system: dir_double,
29
- factory_cleaner: factory_cleaner)
30
+ dir_system: dir_double)
30
31
  end
31
32
 
32
33
  it 'loads all the files on first create it' do
@@ -68,7 +69,7 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
68
69
 
69
70
  it 'wont load the files if they have not changed' do
70
71
  subject.create(:user)
71
- subject.create_list(:user)
72
+ subject.create_list(:user, 2)
72
73
  expect(kernel_double).to have_received(:load).with('file1.rb').once
73
74
  expect(kernel_double).to have_received(:load).with('file2.rb').once
74
75
  end
@@ -79,7 +80,7 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
79
80
  expect(kernel_double).to have_received(:load).with('file2.rb').once
80
81
 
81
82
  mtime_hash['file1.rb'] = Time.now
82
- subject.create_list(:user)
83
+ subject.create_list(:user, 2)
83
84
  expect(kernel_double).to have_received(:load).with('file1.rb').twice
84
85
  expect(kernel_double).to have_received(:load).with('file2.rb').twice
85
86
  end
@@ -91,24 +92,24 @@ RSpec.describe CypressOnRails::SmartFactoryWrapper do
91
92
  expect(kernel_double).to have_received(:load).with('file2.rb').once
92
93
 
93
94
  mtime_hash.delete('file1.rb')
94
- subject.create_list(:user)
95
+ subject.create_list(:user, 2)
95
96
  expect(kernel_double).to have_received(:load).with('file1.rb').once
96
97
  expect(kernel_double).to have_received(:load).with('file2.rb').twice
97
98
  end
98
99
 
99
- it 'will reset factory if a has changed' do
100
+ it 'will reset factory if a file has changed' do
100
101
  subject.create(:user)
101
- expect(factory_cleaner).to have_received(:clean).with(factory_double)
102
+ expect(factory_double).to have_received(:reload)
102
103
 
103
104
  mtime_hash['file1.rb'] = Time.now
104
- subject.create_list(:user)
105
+ subject.create_list(:user, 2)
105
106
 
106
- expect(factory_cleaner).to have_received(:clean).with(factory_double).twice
107
+ expect(factory_double).to have_received(:reload).twice
107
108
  end
108
109
 
109
110
  it 'will always reload the files enabled' do
110
111
  subject.always_reload = true
111
- subject.create_list(:user)
112
+ subject.create_list(:user, 2)
112
113
  subject.create(:user)
113
114
  expect(kernel_double).to have_received(:load).with('file1.rb').twice
114
115
  expect(kernel_double).to have_received(:load).with('file2.rb').twice
@@ -14,7 +14,7 @@ bundle --version
14
14
  bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
15
 
16
16
  echo '-- cypress install'
17
- bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=cypress --install_cypress_with=npm --no-install-cypress-examples
17
+ bundle exec ./bin/rails g cypress_on_rails:install --install_cypress_with=npm
18
18
  rm -vf cypress/integration/rails_examples/advance_factory_bot_spec.js
19
19
 
20
20
  echo '-- start rails server'
@@ -14,7 +14,7 @@ bundle --version
14
14
  bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
15
 
16
16
  echo '-- cypress install'
17
- bundle exec ./bin/rails g cypress_on_rails:install --no-install-cypress-examples
17
+ bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=spec/cypress
18
18
  rm -vf spec/cypress/integration/rails_examples/advance_factory_bot_spec.js
19
19
 
20
20
  echo '-- start rails server'
@@ -14,7 +14,8 @@ bundle --version
14
14
  bundle install --quiet --gemfile="$DIR/Gemfile" --retry 2 --path vendor/bundle
15
15
 
16
16
  echo '-- migration'
17
- bin/rails db:migrate
17
+ bundle exec ./bin/rails db:drop || true
18
+ bundle exec ./bin/rails db:create db:migrate
18
19
 
19
20
  echo '-- cypress install'
20
21
  bundle exec ./bin/rails g cypress_on_rails:install --cypress_folder=test/cypress --no-install-cypress-examples
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.6.0
4
+ version: 1.9.1
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: 2020-04-14 00:00:00.000000000 Z
12
+ date: 2021-03-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -67,6 +67,20 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '3.2'
70
+ - !ruby/object:Gem::Dependency
71
+ name: factory_bot
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
70
84
  description: Integrates cypress with rails or rack applications
71
85
  email:
72
86
  - info@miceportal.de
@@ -75,6 +89,7 @@ executables: []
75
89
  extensions: []
76
90
  extra_rdoc_files: []
77
91
  files:
92
+ - ".github/FUNDING.yml"
78
93
  - ".gitignore"
79
94
  - ".rspec"
80
95
  - ".travis.yml"
@@ -284,9 +299,14 @@ files:
284
299
  - spec/integrations/rails_5_2/tmp/.keep
285
300
  - spec/integrations/rails_5_2/vendor/.keep
286
301
  - spec/spec_helper.rb
287
- homepage: http://github.com/grantspeelman/cypress-on-rails
302
+ homepage: http://github.com/shakacode/cypress-on-rails
288
303
  licenses: []
289
- metadata: {}
304
+ metadata:
305
+ bug_tracker_uri: https://github.com/shakacode/cypress-on-rails/issues
306
+ changelog_uri: https://github.com/shakacode/cypress-on-rails/blob/master/CHANGELOG.md
307
+ documentation_uri: https://github.com/shakacode/cypress-on-rails/blob/master/README.md
308
+ homepage_uri: http://github.com/shakacode/cypress-on-rails
309
+ source_code_uri: http://github.com/shakacode/cypress-on-rails
290
310
  post_install_message: The CypressDev constant is being deprecated and will be completely
291
311
  removed and replaced with CypressOnRails.
292
312
  rdoc_options: []
@@ -303,8 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
323
  - !ruby/object:Gem::Version
304
324
  version: '0'
305
325
  requirements: []
306
- rubyforge_project:
307
- rubygems_version: 2.6.14.4
326
+ rubygems_version: 3.2.11
308
327
  signing_key:
309
328
  specification_version: 4
310
329
  summary: Integrates cypress with rails or rack applications