cross_spec_rails 0.1.3 → 0.1.4

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
2
  SHA1:
3
- metadata.gz: 61b512fd901ad710a9dbb92e8bc6aab4f601f462
4
- data.tar.gz: e695105c0fcb859ad72f4b62a01b5b094031e679
3
+ metadata.gz: 2d1f9ef42638747daf1d61f6dce14595d9d152c3
4
+ data.tar.gz: d725d3601926ad2e3e17d078e885b34f433004d0
5
5
  SHA512:
6
- metadata.gz: 41072a45608e4cd56473e1b120d8c87c4d0ac5afabae868ee7cdddb21ce4b3cbf5a869153d5aaa26ef41d517dfebfcec1fd4d5b1ab29e0fa5f3c1797e4ecbfdf
7
- data.tar.gz: 3b6545d08a47420bd2ef774a1f80e96e3a882c5a8b872d306ec44173b6676b5ff080f07853cb123e50f9f46d6b8036ceb5215694c061776efd1c84f9951d0d88
6
+ metadata.gz: 201c7f4e80d97cc27ec1b94f31ee6840e1d88ee599745b95ebc6ec8c124a266bb30ea052f59b217bc9641714e0190e3433c32f4d1f0d4a7ad4c0691affb4e1cd
7
+ data.tar.gz: 523da1fd1c4bc4a8451f0a90dc0a0a019dac481b8c9b0ca71debd47ba9014feaf920a63bb1865d4ca4f43bebe576a5f62e8d21d6fd3d6b4179ef6c1e08c43fa8
data/README.md CHANGED
@@ -1,13 +1,28 @@
1
1
  # CrossSpecRails
2
- Short description and motivation.
2
+ Provides integrations between [cross spec ruby](https://github.com/doximity/cross_spec_ruby) and Rails.
3
+
4
+ ## Installation
5
+ Add this line to your application's Gemfile:
6
+
7
+ ```ruby
8
+ gem 'cross_spec_rails'
9
+ ```
10
+
11
+ And then execute:
12
+ ```bash
13
+ $ bundle
14
+ ```
3
15
 
4
16
  ## Usage
5
17
  Mount the engine in your routes file like
6
18
  ```
7
- mount CrossSpecRails::Engine, at: "/cross_spec"
19
+ if Rails.env.test?
20
+ mount CrossSpecRails::Engine, at: "/cross_spec"
21
+ end
8
22
  ```
9
23
 
10
24
  ### Requesting factory data over http
25
+ _N.B only FactoryGirl/FactoryBot are supported right now._
11
26
 
12
27
  ```
13
28
  curl -X POST http://localhost:5020/cross_spec/factories/user
@@ -16,7 +31,7 @@ Note the URL namespace from the routes.rb of `cross_spec` followed by the `/fact
16
31
 
17
32
  You can also specify attributes for the factory using a query string like
18
33
  ```
19
- curl -X POST http://localhost:5020/cross_spec/factories/user?email=julie@example.com&name=Julie
34
+ curl -X POST http://localhost:5020/cross_spec/factories/user?attributes[email]=julie@example.com&attributes[name]=Julie
20
35
  ```
21
36
 
22
37
  Traits are supported as well
@@ -24,24 +39,15 @@ Traits are supported as well
24
39
  curl -X POST http://localhost:5020/cross_spec/factories/user?traits[]=admin&traits[]=with_articles
25
40
  ```
26
41
 
27
- The data doesn't have to be in the query string it can be part of the request body as well (it uses what is available in the params hash).
28
-
29
-
30
- ## Installation
31
- Add this line to your application's Gemfile:
32
-
33
- ```ruby
34
- gem 'cross_spec_rails'
42
+ You can control the response format with `to_json_args`
35
43
  ```
44
+ curl -X POST http://localhost:5020/cross_spec/factories/user?to_json_args[include]=articles
36
45
 
37
- And then execute:
38
- ```bash
39
- $ bundle
40
- ```
46
+ See the [to_json docs](https://apidock.com/rails/ActiveRecord/Serialization/to_json) for supported params. The object provided in the request is passed directly to that method
41
47
 
42
- Or install it yourself as:
43
- ```bash
44
- $ gem install cross_spec_rails
48
+ Finally the bulk api is also supported
49
+ ```
50
+ curl -X POST http://localhost:5020/cross_spec/factories_list/user?num=4
45
51
  ```
46
52
 
47
53
  ## Contributing
@@ -17,26 +17,37 @@ module CrossSpecRails
17
17
  skip_before_action :verify_authenticity_token
18
18
 
19
19
  def create
20
- factory = params[:factory]
21
- traits = Array(params[:traits]).map(&:to_sym)
22
- attributes = params[:attributes]&.permit!.to_h
23
- includes = params[:includes]
24
20
  instance = factory_klass.create(factory, *traits, attributes)
25
- render json: instance.to_json(params[:to_json_args])
21
+ render json: instance.to_json(to_json_args)
26
22
  end
27
23
 
28
24
  def create_list
29
- factory = params[:factory]
30
- traits = Array(params[:traits]).map(&:to_sym)
31
- attributes = params[:attributes]&.permit!.to_h
32
- includes = params[:includes]
33
- num = params[:num].to_i
34
25
  instances = factory_klass.create_list(factory, num, *traits, attributes)
35
- render json: instance.map { |instance| instance.to_json(params[:to_json_args]) }
26
+ render json: instances.map { |instance| instance.to_json(to_json_args) }
36
27
  end
37
28
 
38
29
  private
39
30
 
31
+ def factory
32
+ params[:factory]
33
+ end
34
+
35
+ def traits
36
+ Array(params[:traits]).map(&:to_sym)
37
+ end
38
+
39
+ def attributes
40
+ params[:attributes]&.permit!.to_h
41
+ end
42
+
43
+ def to_json_args
44
+ params[:to_json_args]
45
+ end
46
+
47
+ def num
48
+ params[:num].to_i
49
+ end
50
+
40
51
  def factory_klass
41
52
  return FactoryBot if defined? FactoryBot
42
53
  return FactoryGirl if defined? FactoryGirl
@@ -1,3 +1,3 @@
1
1
  module CrossSpecRails
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cross_spec_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Fischer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-21 00:00:00.000000000 Z
11
+ date: 2018-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails