pliny 0.6.3 → 0.7.0

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: 004648bb41bd9b42b488da08c6bfb88c511cb9e9
4
- data.tar.gz: 028e79c785b698a736c844f55b7d6b893c981fc8
3
+ metadata.gz: 1d36f4a628a9157de2ecfa657662a5a638944e2f
4
+ data.tar.gz: 5c5f671fec1d136e0968bdfe8b6b743fec540d36
5
5
  SHA512:
6
- metadata.gz: c8f55bc31871bd47ad2097ef2ab00810d117c9a3b132099e78177749fa7dfcd6103d8c71aacd0f42e8872facd17659e8779901d3a7eea590c237d308a0903477
7
- data.tar.gz: b5320ef0938d9ace02977eb8639e70be0957ac2df3bc1d66f463143a95449555fd2011c1dd65b5693331f06cf27c29052ed18707c1ae45f60a6434b79a6f6d75
6
+ metadata.gz: acea4ff673529b2218632bf1e44711cc3d998e24d2134fbb38859509494388f571cac7e7842d0fa0acdc18ed775ee05e907ecfada795d4d5bb9381d3d10df11c
7
+ data.tar.gz: a2bdb510b4ae82de58cf6ea001a0dce1dc0d1474695c6e0a2a185bd7a4ca669eca4c7ee1c2b6fdb43b00eae7534a4f2c7c5f6b898ae85cbb85297f864fb6283d
@@ -4,8 +4,15 @@ require 'prmd'
4
4
  module Pliny::Commands
5
5
  class Generator
6
6
  class Schema < Base
7
+ def initialize(*)
8
+ super
9
+ @warned_legacy = false
10
+ end
11
+
7
12
  def create
8
- schema = "./docs/schema/schemata/#{field_name}.yaml"
13
+ warn_legacy if legacy?
14
+
15
+ schema = schema_yaml_path(field_name)
9
16
  write_file(schema) do
10
17
  Prmd.init(name.singularize, yaml: true)
11
18
  end
@@ -13,11 +20,54 @@ module Pliny::Commands
13
20
  end
14
21
 
15
22
  def rebuild
16
- schemata = './docs/schema.json'
17
- write_file(schemata) do
18
- Prmd.combine('./docs/schema/schemata', meta: './docs/schema/meta.json')
23
+ warn_legacy if legacy?
24
+
25
+ write_file(schema_json_path) do
26
+ Prmd.combine(schemata_path, meta: meta_path)
27
+ end
28
+ display "rebuilt #{schema_json_path}"
29
+ end
30
+
31
+ def legacy?
32
+ File.exist?("./docs/schema.json") || File.directory?("./docs/schema/schemata")
33
+ end
34
+
35
+ def warn_legacy
36
+ return if @warned_legacy
37
+ display "WARNING: Using legacy schema layout under docs/. To use new layout under schema/, run `mkdir -p schema && git mv docs/schema.json docs/schema/meta.* docs/schema/schemata schema` then check for remaining schema-related files under docs/."
38
+ @warned_legacy = true
39
+ end
40
+
41
+ def schema_json_path
42
+ if legacy?
43
+ "./docs/schema.json"
44
+ else
45
+ "./schema/schema.json"
19
46
  end
20
- display "rebuilt #{schemata}"
47
+ end
48
+
49
+ def meta_path
50
+ if legacy?
51
+ "./docs/schema/meta.json"
52
+ else
53
+ "./schema/meta.json"
54
+ end
55
+ end
56
+
57
+ def schemata_path
58
+ if legacy?
59
+ "./docs/schema/schemata"
60
+ else
61
+ "./schema/schemata"
62
+ end
63
+ end
64
+
65
+ def schema_base
66
+ Pathname.new("./schema")
67
+ end
68
+
69
+ def schema_yaml_path(field_name)
70
+ File.join(schemata_path, "#{field_name}.yaml")
21
71
  end
22
72
  end
23
73
  end
data/lib/pliny/errors.rb CHANGED
@@ -62,6 +62,7 @@ module Pliny
62
62
  class RequestedRangeNotSatisfiable < HTTPStatusError; end # 416
63
63
  class ExpectationFailed < HTTPStatusError; end # 417
64
64
  class UnprocessableEntity < HTTPStatusError; end # 422
65
+ class TooManyRequests < HTTPStatusError; end # 429
65
66
  class InternalServerError < HTTPStatusError; end # 500
66
67
  class NotImplemented < HTTPStatusError; end # 501
67
68
  class BadGateway < HTTPStatusError; end # 502
@@ -105,6 +106,7 @@ module Pliny
105
106
  RequestedRangeNotSatisfiable => [416, 'Requested range not satisfiable'],
106
107
  ExpectationFailed => [417, 'Expectation failed'],
107
108
  UnprocessableEntity => [422, 'Unprocessable entity'],
109
+ TooManyRequests => [429, 'Too many requests'],
108
110
  InternalServerError => [500, 'Internal server error'],
109
111
  NotImplemented => [501, 'Not implemented'],
110
112
  BadGateway => [502, 'Bad gateway'],
@@ -23,7 +23,7 @@ describe Endpoints::<%= plural_class_name %> do
23
23
  describe 'GET <%= url_path %>' do
24
24
  it 'returns correct status code and conforms to schema' do
25
25
  get '<%= url_path %>'
26
- expect(last_response.status).to eq(200)
26
+ assert_equal 200, last_response.status
27
27
  assert_schema_conform
28
28
  end
29
29
  end
@@ -33,7 +33,7 @@ describe Endpoints::<%= plural_class_name %> do
33
33
  it 'returns correct status code and conforms to schema' do
34
34
  header "Content-Type", "application/json"
35
35
  post '<%= url_path %>', MultiJson.encode({})
36
- expect(last_response.status).to eq(201)
36
+ assert_equal 201, last_response.status
37
37
  assert_schema_conform
38
38
  end
39
39
  end
@@ -42,7 +42,7 @@ describe Endpoints::<%= plural_class_name %> do
42
42
  describe 'GET <%= url_path %>/:id' do
43
43
  it 'returns correct status code and conforms to schema' do
44
44
  get "<%= url_path %>/#{@<%= field_name %>.uuid}"
45
- expect(last_response.status).to eq(200)
45
+ assert_equal 200, last_response.status
46
46
  assert_schema_conform
47
47
  end
48
48
  end
@@ -51,7 +51,7 @@ describe Endpoints::<%= plural_class_name %> do
51
51
  it 'returns correct status code and conforms to schema' do
52
52
  header "Content-Type", "application/json"
53
53
  patch "<%= url_path %>/#{@<%= field_name %>.uuid}", MultiJson.encode({})
54
- expect(last_response.status).to eq(200)
54
+ assert_equal 200, last_response.status
55
55
  assert_schema_conform
56
56
  end
57
57
  end
@@ -59,7 +59,7 @@ describe Endpoints::<%= plural_class_name %> do
59
59
  describe 'DELETE <%= url_path %>/:id' do
60
60
  it 'returns correct status code and conforms to schema' do
61
61
  delete "<%= url_path %>/#{@<%= field_name %>.uuid}"
62
- expect(last_response.status).to eq(200)
62
+ assert_equal 200, last_response.status
63
63
  assert_schema_conform
64
64
  end
65
65
  end
data/lib/pliny/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pliny
2
- VERSION = "0.6.3"
2
+ VERSION = "0.7.0"
3
3
  end
data/lib/template/Gemfile CHANGED
@@ -4,7 +4,7 @@ ruby "2.2.0"
4
4
  gem "multi_json"
5
5
  gem "oj"
6
6
  gem "pg"
7
- gem "pliny", "~> 0.6"
7
+ gem "pliny", "~> 0.7"
8
8
  gem "pry"
9
9
  gem "puma", "~> 2.10"
10
10
  gem "rack-ssl"
File without changes
@@ -0,0 +1,73 @@
1
+ require 'pliny/commands/generator'
2
+ require 'pliny/commands/generator/schema'
3
+ require 'spec_helper'
4
+
5
+ describe Pliny::Commands::Generator::Schema do
6
+ let(:stream) { StringIO.new }
7
+ subject { Pliny::Commands::Generator::Schema.new('artist', {}, stream) }
8
+
9
+ around do |example|
10
+ Dir.mktmpdir do |dir|
11
+ app_dir = File.join(dir, "app")
12
+ # schema work depends on files seeded by the template
13
+ Pliny::Commands::Creator.run([app_dir], {}, StringIO.new)
14
+ Dir.chdir(app_dir, &example)
15
+ end
16
+ end
17
+
18
+ describe '#create' do
19
+ context 'with new layout' do
20
+ before do
21
+ subject.create
22
+ end
23
+
24
+ it 'creates a schema' do
25
+ assert File.exist?('schema/schemata/artist.yaml')
26
+ end
27
+ end
28
+
29
+ context 'with legacy layout' do
30
+ before do
31
+ FileUtils.mkdir_p('./docs/schema/schemata')
32
+ FileUtils.cp('./schema/meta.json', './docs/schema')
33
+ subject.create
34
+ end
35
+
36
+ it 'creates a legacy schema' do
37
+ assert File.exist?('docs/schema/schemata/artist.yaml')
38
+ end
39
+
40
+ it 'warns' do
41
+ assert_match(/WARNING/m, stream.string)
42
+ end
43
+ end
44
+ end
45
+
46
+ describe '#rebuild' do
47
+ context 'with new layout' do
48
+ before do
49
+ subject.rebuild
50
+ end
51
+
52
+ it 'rebuilds schema.json' do
53
+ assert File.exist?('./schema/schema.json')
54
+ end
55
+ end
56
+
57
+ context 'with legacy layout' do
58
+ before do
59
+ FileUtils.mkdir_p('./docs/schema/schemata')
60
+ FileUtils.cp('./schema/meta.json', './docs/schema')
61
+ subject.rebuild
62
+ end
63
+
64
+ it 'rebuilds legacy schema.json' do
65
+ assert File.exist?('docs/schema.json')
66
+ end
67
+
68
+ it 'warns' do
69
+ assert_match(/WARNING/m, stream.string)
70
+ end
71
+ end
72
+ end
73
+ end
@@ -4,7 +4,7 @@ require 'pliny/commands/generator/base'
4
4
  require 'spec_helper'
5
5
 
6
6
  describe Pliny::Commands::Generator do
7
- subject { Pliny::Commands::Generator.new }
7
+ subject { Pliny::Commands::Generator.new }
8
8
 
9
9
  before do
10
10
  Timecop.freeze(@t = Time.now)
@@ -127,7 +127,7 @@ subject { Pliny::Commands::Generator.new }
127
127
  end
128
128
 
129
129
  it 'creates a schema' do
130
- assert File.exist?('docs/schema/schemata/artist.yaml')
130
+ assert File.exist?('schema/schemata/artist.yaml')
131
131
  end
132
132
 
133
133
  it 'creates a new serializer module' do
@@ -145,7 +145,7 @@ subject { Pliny::Commands::Generator.new }
145
145
  end
146
146
 
147
147
  it 'creates a schema' do
148
- assert File.exist?('docs/schema/schemata/artist.yaml')
148
+ assert File.exist?('schema/schemata/artist.yaml')
149
149
  end
150
150
  end
151
151
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pliny
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandur Leach
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-02-19 00:00:00.000000000 Z
12
+ date: 2015-03-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -395,8 +395,6 @@ files:
395
395
  - lib/template/config/puma.rb
396
396
  - lib/template/db/schema.sql
397
397
  - lib/template/db/seeds.rb
398
- - lib/template/docs/schema/meta.json
399
- - lib/template/docs/schema/schemata/.gitkeep
400
398
  - lib/template/lib/application.rb
401
399
  - lib/template/lib/endpoints/base.rb
402
400
  - lib/template/lib/endpoints/root.rb
@@ -405,12 +403,15 @@ files:
405
403
  - lib/template/lib/routes.rb
406
404
  - lib/template/lib/serializers/base.rb
407
405
  - lib/template/lib/tasks/spec.rake
406
+ - lib/template/schema/meta.json
407
+ - lib/template/schema/schemata/.gitkeep
408
408
  - lib/template/spec/spec_helper.rb
409
409
  - lib/template/spec/support/auto_define_rack_app.rb
410
410
  - lib/template/spec/support/log.rb
411
411
  - spec/commands/creator_spec.rb
412
412
  - spec/commands/generator/base_spec.rb
413
413
  - spec/commands/generator/endpoint_spec.rb
414
+ - spec/commands/generator/schema_spec.rb
414
415
  - spec/commands/generator_spec.rb
415
416
  - spec/errors_spec.rb
416
417
  - spec/extensions/instruments_spec.rb
@@ -452,4 +453,3 @@ signing_key:
452
453
  specification_version: 4
453
454
  summary: Basic tooling to support API apps in Sinatra
454
455
  test_files: []
455
- has_rdoc: