So it is Rails....
Yes, I have *RAILS_ENV* set up to test in *rails_helper.rb*

require 'spec_helper'
ENV['RAILS_ENV'] ||= 'test'

This file is copied to spec/ when you run 'rails generate rspec:install'.

On Fri, 29 Jun 2018 at 12:03, Jon Rowe <[email protected]> wrote:

> You need to give your test mode a safe DB to talk to, Rails will not like
> not having a connection.
>
> Again this has nothing to do with RSpec, RSpec is not configuring anything
> it is all Rails.
>
> You will need to have `RAILS_ENV=“test”` somewhere before Rails is loaded
> in order for your bypass to work, and if theres another
> `establish_connection` somewhere it will override it.
>
> Also if you are using spring you will need to restart it when modifying
> this check.
>
> Jon Rowe
> ---------------------------
> [email protected]
> jonrowe.co.uk
>
> On Friday, 29 June 2018 at 10:05, belgoros wrote:
>
>
>
> On Thursday, 28 June 2018 13:57:18 UTC+2, Jon Rowe wrote:
>
> Without knowing the specifics of the figaro gem I would wager yes, as they
> would appear to be blank.
>
>
> OK, figaro gem <https://github.com/laserlemon/figaro> makes it possible
> to separate the variables by environment
> <https://github.com/laserlemon/figaro#environment-specific-configuration> in
> its appication.yml file.
> If I add *mystore* connection variables to *test* environment in
> *application.yml*, - IT WORKS.
> What is weird is that why RSpec is trying to check the connection to *mystore
> * and ignores the below check in my base model class:
>
> module MystoreMigration
>   class MystoreModel < ApplicationRecord
>     establish_connection(:mystore) unless Rails.env.test?
>   end
> end
>
> A simple test fails even if I use double to mock a mystore related model:
>
> require 'rails_helper'
>
>
> RSpec.describe MystoreMigration::StoreMigrator do
>
>   let(:shop) { build(:shop) }
>   let(:store) { double(MystoreMigration::StoreInfo)}
>   let(:store_migrator) { MystoreMigration::StoreMigrator.new([store]) }
>
>   describe 'initialization' do
>     it 'should have stores initialized' do
>       expect(store_migrator.stores).not_to be_empty
>     end
>   end
>
> Here is the class under test:
>
> require_relative 'store_schedule_period'
> require_relative 'store_welcome'
>
>
> module MystoreMigration
>   class StoreMigrator
>
>     MIGRATOR = 'mystore.store.migrator'.freeze
>     DEFAULT_SHOP_CATEGORY = 'decathlon'.freeze
>
>     attr_reader :stores
>
>     def initialize(stores = [])
>       @stores = stores
>     end
>
> ...
>
> Is it Rails loading stuff or smth else ?
> Sure, I would not like to connect to mystore database in test mode and do
> whatever operations. That's why I'll have to mock all the methods calls to
> it.
> Any idea ? Thank you.
>
>
>
>
> Jon Rowe
> ---------------------------
> [email protected]
> jonrowe.co.uk
>
> On Thursday, 28 June 2018 at 12:52, Serguei Cambour wrote:
>
> I have the following environment variables for mystore environment in
> *database.yml:*
>
> mystore:
>   adapter: oracle_enhanced
>   host: <%= ENV['mystore_db_host']%>
>   port: <%= ENV['mystore_db_port']%>
>   database: <%= ENV['mystore_db_name']%>
>   username: <%= ENV['mystore_db_user']%>
>   password: <%= ENV['mystore_db_password']%>
>
> defined in 'development' section in *application.yml* (I'm using Figaro
> gem):
>
> development:
>   mystore_db_port: "XXXX"
>   mystore_db_name: "XXXX"
>   mystore_db_user: "XXXX"
>   mystore_db_password: "XXXX"
>
> test:
>   client_id: "XXX"
>   client_secret: "XXX
> ....
>
> Should I add them to *test section* as well ?
>
> On Thu, 28 Jun 2018 at 09:37, Jon Rowe <[email protected]> wrote:
>
> Sorry, no it doesn’t, RSpec doesn’t do *any* database connection work.
>
> Your code is trying to access the database :mystore from your
> `config/database.yml` as thats what you’ve told it to do, perhaps your
> environment variables are empty on your local machine?
>
> Jon Rowe
> ---------------------------
> [email protected]
> jonrowe.co.uk
>
> On Wednesday, 27 June 2018 at 16:06, belgoros wrote:
>
>
>
> On Wednesday, 27 June 2018 17:04:35 UTC+2, belgoros wrote:
>
>
>
> On Wednesday, 27 June 2018 16:26:36 UTC+2, Jon Rowe wrote:
>
> > Sure, I'd like to write some tests and I had an impression that when
> accessing a class that used mystore connection, RSpec tried to use the
> default connection defined in test group of database.yml. Is the way I'm
> truing to do that in testing correct ?
>
> No, RSpec doesn’t do *any* database configuration, Rails will use the
> environment named configuration by default, but `establish_connection`
> *should* override it.
>
> If it’s not behaving as you expect you might want to check that Rails is
> loading your files correctly (as until `establish_connection` is called you
> won’t have configured the other database).
>
>
> Finally, it does not work as expected when using
>
> establish_connection(:mystore) unless Rails.env.test?
>
> If I use just
>
> establish_connection(:mystore)
>
> I have another error when calling new on one of the *mystore* DB models:
>
> ORA-12162: TNS:net service name is incorrectly specified
>
> Does RSpec tries to access mystore_test table ?
>
>
>
> Sorry, I meant *mystore_test* *database. *Thank you.
>
>
> Cheers
>
> Jon Rowe
> ---------------------------
> [email protected]
> jonrowe.co.uk
>
> On Wednesday, 27 June 2018 at 14:48, Serguei Cambour wrote:
>
> Thank you John !
> What I need is to migrate some data from one DB (*mystore* connection) to
> another. That's why I had to write some specific Rake tasks to match tables
> attributes to be imported (*mystore* connection) to another DB defined in
> development group in *database.yml*. Sure, I'd like to write some tests
> and I had an impression that when accessing a class that used *mystore*
> connection, RSpec tried to use the default connection defined in test group
> of *database.yml.* Is the way I'm truing to do that in testing correct ?
> Thank you.
>
> On Wed, 27 Jun 2018 at 15:43, Jon Rowe <[email protected]> wrote:
>
> Sorry I misunderstood your question!
>
> What you need to do is specify multiple environments for your second
> database, so you can establish an environment specific connection. As you
> can see from your own configuration thats the standard pattern, so you
> could then use `establish_connection` with the appropriate db e.g.
> `establish_connection(:”mystore_#{Rails.env}”)` and have a test version of
> your second DB
>
> Cheers
> Jon Rowe
> ---------------------------
> [email protected]
> jonrowe.co.uk
>
> On Wednesday, 27 June 2018 at 14:06, belgoros wrote:
>
> I had to modify my base class by adding
> unless Rails.env.test?
>
> condition:
>
>
> module MystoreMigration
>   class MystoreModel < ActiveRecord::Base
>     self.abstract_class = true
>     establish_connection(:mystore) unless Rails.env.test?
>   end
> end
>
>
> All other model classes used by rake tasks inherit from the above model.
> In this case I'll have to mock all the DB calls related to this rake task
> to avoid it to establish *mystore*  connection defined in `database.yml`
> and used by all the tasks models.
>
>
>
> On Wednesday, 27 June 2018 14:16:22 UTC+2, Jon Rowe wrote:
>
> Hi Javix
>
> RSpec itself has no database integration so it's certainly possible,
> you'll need to either configure a connection manually to talk through or
> use however you'd normally talk to your other database.
>
> If you’re using rspec-rails you’ll need to figure out how Rails does it’s
> transactional testing for multiple databases, but most 3rd party gems
> support “cleaning” multiple databases, including DatabaseCleaner.
>
> HTH
> Jon
>
> On Wed, 27 Jun 2018 at 09:53, Javix <[email protected]> wrote:
>
> I need to execute some rake tasks agains a database other than defined in
> database.yml, test group. Here is how database.yml looks like:
>
> default: &default
>   adapter: postgresql
>   encoding: unicode
>   user: postgres
>   password:
>   pool: 5
>
>
> development:
>   <<: *default
>   database: decastore_development
>   host: <%= ENV['DECASTORE_DATABASE_HOST'] %>
>
>
> test:
>   <<: *default
>   database: decastore_test
>   host: <%= ENV['DECASTORE_DATABASE_HOST'] %>
>
>
> production:
>   <<: *default
>   host: <%= ENV['DECASTORE_DATABASE_HOST'] %>
>   database: XXXX
>   username: XXXXX
>   password: <%= ENV['DECASTORE_DATABASE_PASSWORD'] %>
>
>
> mystore:
>   adapter: oracle_enhanced
>   host: <%= ENV['mystore_db_host']%>
>   port: <%= ENV['mystore_db_port']%>
>   database: <%= ENV['mystore_db_name']%>
>   username: <%= ENV['mystore_db_user']%>
>   password: <%= ENV['mystore_db_password']%>
>
>
> Is it possible to mix 2 database settings when running tests or I have to
> mock it everywhere ?
> Thank you.
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/f723fd63-26b2-4ff7-a9ff-b8a3a69567f3%40googlegroups.com
> <https://groups.google.com/d/msgid/rspec/f723fd63-26b2-4ff7-a9ff-b8a3a69567f3%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/b5fa5aad-7a2a-4b53-875f-8bda30682c1d%40googlegroups.com
> <https://groups.google.com/d/msgid/rspec/b5fa5aad-7a2a-4b53-875f-8bda30682c1d%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "rspec" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/rspec/sbRqzLR_Lug/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/74587C34A93D431CB66AE4B35D84EC2B%40jonrowe.co.uk
> <https://groups.google.com/d/msgid/rspec/74587C34A93D431CB66AE4B35D84EC2B%40jonrowe.co.uk?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/CAJGQ%3DvbsA2GkxtTuUCqKSChAe8YRf-Yeafv68qgSFvQ5X8qCXw%40mail.gmail.com
> <https://groups.google.com/d/msgid/rspec/CAJGQ%3DvbsA2GkxtTuUCqKSChAe8YRf-Yeafv68qgSFvQ5X8qCXw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/4b796b81-d1ce-4109-827f-efccf085d743%40googlegroups.com
> <https://groups.google.com/d/msgid/rspec/4b796b81-d1ce-4109-827f-efccf085d743%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "rspec" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/rspec/sbRqzLR_Lug/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/2EDF7B26264448B5BE512774CA7A042F%40jonrowe.co.uk
> <https://groups.google.com/d/msgid/rspec/2EDF7B26264448B5BE512774CA7A042F%40jonrowe.co.uk?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/CAJGQ%3DvY8y2mYyC44DTTm2qppoCzCw11LvDv7%3DdC6eVyRJG%3DeMw%40mail.gmail.com
> <https://groups.google.com/d/msgid/rspec/CAJGQ%3DvY8y2mYyC44DTTm2qppoCzCw11LvDv7%3DdC6eVyRJG%3DeMw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "rspec" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/11fa1aa7-249a-429b-8cf5-ec94a4a30b57%40googlegroups.com
> <https://groups.google.com/d/msgid/rspec/11fa1aa7-249a-429b-8cf5-ec94a4a30b57%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "rspec" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/rspec/sbRqzLR_Lug/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rspec/27419AEAC05B43C9A90C257B0D4A458D%40jonrowe.co.uk
> <https://groups.google.com/d/msgid/rspec/27419AEAC05B43C9A90C257B0D4A458D%40jonrowe.co.uk?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"rspec" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rspec/CAJGQ%3DvZtdS2MCum58YgOrTgsh8WF3SUNMo%2BOD_eDC1%3DUA6Ze%2BA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to