lhs 2.2.2 → 3.0.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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +296 -30
  3. data/lhs.gemspec +3 -3
  4. data/lib/lhs.rb +0 -7
  5. data/lib/lhs/collection.rb +4 -4
  6. data/lib/lhs/concerns/item/destroy.rb +2 -2
  7. data/lib/lhs/concerns/item/save.rb +3 -3
  8. data/lib/lhs/concerns/item/update.rb +2 -2
  9. data/lib/lhs/concerns/item/validation.rb +4 -5
  10. data/lib/lhs/concerns/{service → record}/all.rb +2 -2
  11. data/lib/lhs/concerns/{service → record}/batch.rb +3 -3
  12. data/lib/lhs/concerns/{service → record}/create.rb +4 -3
  13. data/lib/lhs/concerns/{service → record}/endpoints.rb +6 -6
  14. data/lib/lhs/concerns/{service → record}/find.rb +3 -2
  15. data/lib/lhs/concerns/{service → record}/find_by.rb +3 -2
  16. data/lib/lhs/concerns/{service → record}/first.rb +1 -1
  17. data/lib/lhs/concerns/{service → record}/includes.rb +4 -2
  18. data/lib/lhs/concerns/{service → record}/mapping.rb +1 -1
  19. data/lib/lhs/concerns/{service → record}/model.rb +1 -1
  20. data/lib/lhs/concerns/{service → record}/request.rb +12 -12
  21. data/lib/lhs/concerns/{service → record}/where.rb +3 -2
  22. data/lib/lhs/data.rb +25 -53
  23. data/lib/lhs/endpoint.rb +2 -2
  24. data/lib/lhs/item.rb +8 -2
  25. data/lib/lhs/proxy.rb +2 -2
  26. data/lib/lhs/record.rb +42 -0
  27. data/lib/lhs/version.rb +1 -1
  28. data/spec/collection/meta_data_spec.rb +2 -2
  29. data/spec/collection/without_object_items_spec.rb +1 -1
  30. data/spec/data/item_spec.rb +2 -14
  31. data/spec/data/merge_spec.rb +3 -3
  32. data/spec/data/raw_spec.rb +1 -1
  33. data/spec/data/respond_to_spec.rb +3 -3
  34. data/spec/data/root_spec.rb +2 -2
  35. data/spec/data/to_json_spec.rb +2 -2
  36. data/spec/endpoint/for_url_spec.rb +1 -1
  37. data/spec/item/delegate_spec.rb +2 -2
  38. data/spec/item/destroy_spec.rb +4 -4
  39. data/spec/item/errors_spec.rb +4 -4
  40. data/spec/item/getter_spec.rb +2 -2
  41. data/spec/item/internal_data_structure_spec.rb +1 -1
  42. data/spec/item/save_spec.rb +3 -4
  43. data/spec/item/setter_spec.rb +2 -2
  44. data/spec/item/update_spec.rb +2 -2
  45. data/spec/item/validation_spec.rb +47 -75
  46. data/spec/proxy/load_spec.rb +2 -2
  47. data/spec/{service → record}/all_spec.rb +7 -7
  48. data/spec/{service → record}/build_spec.rb +5 -4
  49. data/spec/{service → record}/create_spec.rb +6 -5
  50. data/spec/{service → record}/creation_failed_spec.rb +6 -5
  51. data/spec/record/definitions_spec.rb +29 -0
  52. data/spec/{service → record}/endpoint_misconfiguration_spec.rb +3 -3
  53. data/spec/{service → record}/endpoint_options_spec.rb +4 -4
  54. data/spec/{service → record}/endpoints_spec.rb +15 -15
  55. data/spec/{service → record}/find_by_spec.rb +8 -8
  56. data/spec/{service → record}/find_each_spec.rb +3 -3
  57. data/spec/{service → record}/find_in_batches_spec.rb +6 -6
  58. data/spec/{service → record}/find_spec.rb +10 -9
  59. data/spec/{service → record}/first_spec.rb +7 -6
  60. data/spec/{service → record}/includes_spec.rb +7 -7
  61. data/spec/{service → record}/mapping_spec.rb +27 -16
  62. data/spec/{service → record}/model_name_spec.rb +2 -2
  63. data/spec/{service → record}/new_spec.rb +4 -3
  64. data/spec/{service → record}/request_spec.rb +3 -3
  65. data/spec/record/where_spec.rb +34 -0
  66. data/spec/support/cleanup_endpoints.rb +1 -1
  67. data/spec/support/{cleanup_services.rb → cleanup_records.rb} +2 -2
  68. metadata +60 -67
  69. data/docs/collections.md +0 -28
  70. data/docs/data.md +0 -39
  71. data/docs/items.md +0 -79
  72. data/docs/service.jpg +0 -0
  73. data/docs/service.pdf +2 -650
  74. data/docs/services.md +0 -266
  75. data/lib/lhs/concerns/service/build.rb +0 -19
  76. data/lib/lhs/service.rb +0 -18
  77. data/spec/data/pagination_spec.rb +0 -60
  78. data/spec/dummy/README.rdoc +0 -28
  79. data/spec/service/where_spec.rb +0 -33
@@ -17,8 +17,8 @@ class LHS::Proxy
17
17
 
18
18
  def reload!
19
19
  fail 'No href found' unless _data.href
20
- service = _data._root._service
21
- data = service.request(url: _data.href, method: :get)
20
+ record = _data._root._record_class
21
+ data = record.request(url: _data.href, method: :get)
22
22
  _data.merge_raw!(data)
23
23
  self._loaded = true
24
24
  self
@@ -0,0 +1,42 @@
1
+ Dir[File.dirname(__FILE__) + '/concerns/record/*.rb'].each {|file| require file }
2
+
3
+ class LHS::Record
4
+ include All
5
+ include Batch
6
+ include Create
7
+ include Endpoints
8
+ include Find
9
+ include FindBy
10
+ include First
11
+ include Mapping
12
+ include Model
13
+ include Includes
14
+ include Request
15
+ include Where
16
+
17
+ def initialize(data = nil)
18
+ data = LHS::Data.new({}, nil, self.class) unless data
19
+ data = LHS::Data.new(data, nil, self.class) unless data.is_a?(LHS::Data)
20
+ define_singleton_method(:_data) { data }
21
+ if data._proxy.is_a?(LHS::Item) and data._raw.is_a?(Hash)
22
+ data._raw.each { |k, v| instance_variable_set("@#{k}", v) }
23
+ elsif data._proxy.is_a? LHS::Collection
24
+ instance_variable_set('@collection', data._collection.raw)
25
+ end
26
+ end
27
+
28
+ def self.build(data = nil)
29
+ self.new(data)
30
+ end
31
+
32
+ protected
33
+
34
+ def method_missing(name, *args, &block)
35
+ _data.send(name, *args, &block)
36
+ end
37
+
38
+ def respond_to_missing?(name, include_all = false)
39
+ (_data.root_item? && _data._root._record_class.instance_methods.include?(name)) ||
40
+ _data._proxy.respond_to?(name, include_all)
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "2.2.2"
2
+ VERSION = "3.0.0"
3
3
  end
@@ -29,11 +29,11 @@ describe LHS::Collection do
29
29
 
30
30
  before(:each) do
31
31
  LHC.config.placeholder('datastore', datastore)
32
- class Feedback < LHS::Service
32
+ class Feedback < LHS::Record
33
33
  endpoint ':datastore/feedbacks'
34
34
  endpoint ':datastore/feedbacks/:id'
35
35
  end
36
- class User < LHS::Service
36
+ class User < LHS::Record
37
37
  endpoint ':datastore/users'
38
38
  endpoint ':datastore/users/:id'
39
39
  end
@@ -6,7 +6,7 @@ describe LHS::Collection do
6
6
 
7
7
  before(:each) do
8
8
  LHC.config.placeholder('datastore', datastore)
9
- class Account < LHS::Service
9
+ class Account < LHS::Record
10
10
  endpoint ':datastore/accounts/:id'
11
11
  end
12
12
  end
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Data do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -14,7 +14,7 @@ describe LHS::Data do
14
14
  end
15
15
 
16
16
  let(:data) do
17
- LHS::Data.new(json, nil, SomeService)
17
+ LHS::Data.new(json, nil, Record)
18
18
  end
19
19
 
20
20
  let(:item) do
@@ -41,16 +41,4 @@ describe LHS::Data do
41
41
  expect(item.valid_from).to be_kind_of Date
42
42
  end
43
43
  end
44
-
45
- context 'different date time formats' do
46
- let(:item) do
47
- item = data[0]
48
- item._raw[:created_date] = '2016-07-09T13:45:00+00:00'
49
- item
50
- end
51
-
52
- it 'returns TimeWithZone if string can be parsed as date_time' do
53
- expect(item.created_date).to be_kind_of ActiveSupport::TimeWithZone
54
- end
55
- end
56
44
  end
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Data do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -12,14 +12,14 @@ describe LHS::Data do
12
12
  let(:data) do
13
13
  LHS::Data.new({
14
14
  href: 'http://www.local.ch/v2/stuff'
15
- }, nil, SomeService)
15
+ }, nil, Record)
16
16
  end
17
17
 
18
18
  let(:loaded_data) do
19
19
  LHS::Data.new({
20
20
  href: 'http://www.local.ch/v2/stuff',
21
21
  id: '123123123'
22
- }, nil, SomeService)
22
+ }, nil, Record)
23
23
  end
24
24
 
25
25
  context 'merging' do
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Data do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/entries/:entry_id/content-ads/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/:campaign_id/feedbacks'
9
9
  endpoint ':datastore/v2/feedbacks'
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Data do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  map :test_mapping?, ->(item){ true }
8
8
  end
9
9
  end
@@ -11,14 +11,14 @@ describe LHS::Data do
11
11
  context '#respond_to?' do
12
12
 
13
13
  it 'it is true for mappings that are defined' do
14
- data = described_class.new({'campaign' => {'id' => 123}}, nil, SomeService)
14
+ data = described_class.new({'campaign' => {'id' => 123}}, nil, Record)
15
15
 
16
16
  expect(data.respond_to?(:test_mapping?)).to be(true)
17
17
  end
18
18
 
19
19
  # proxy for this example is LHC::Collection which implements total
20
20
  it 'it is true for calls forwarded to proxy' do
21
- data = described_class.new({'items' => [{'campaign' => {'id' => 123}}]}, nil, SomeService)
21
+ data = described_class.new({'items' => [{'campaign' => {'id' => 123}}]}, nil, Record)
22
22
 
23
23
  expect(data.respond_to?(:total)).to be(true)
24
24
  end
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Data do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/entries/:entry_id/content-ads/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/:campaign_id/feedbacks'
9
9
  endpoint ':datastore/v2/feedbacks'
@@ -13,7 +13,7 @@ describe LHS::Data do
13
13
  context 'root' do
14
14
 
15
15
  it 'is navigateable from nested data' do
16
- root = LHS::Data.new({'items' => [{'campaign' => {'id' => 123}}]}, nil, SomeService)
16
+ root = LHS::Data.new({'items' => [{'campaign' => {'id' => 123}}]}, nil, Record)
17
17
  child = root.first
18
18
  leafe = child.campaign
19
19
  expect(leafe._root).to eq root
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Data do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -14,7 +14,7 @@ describe LHS::Data do
14
14
  end
15
15
 
16
16
  let(:collection) do
17
- LHS::Data.new(json, nil, SomeService)
17
+ LHS::Data.new(json, nil, Record)
18
18
  end
19
19
 
20
20
  let(:item) do
@@ -5,7 +5,7 @@ describe LHS::Endpoint do
5
5
  context 'for url' do
6
6
 
7
7
  before(:each) do
8
- class SomeService < LHS::Service
8
+ class Record < LHS::Record
9
9
  endpoint ':datastore/entries/:entry_id/content-ads/:campaign_id/feedbacks'
10
10
  endpoint ':datastore/:campaign_id/feedbacks'
11
11
  endpoint ':datastore/feedbacks'
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -14,7 +14,7 @@ describe LHS::Item do
14
14
  end
15
15
 
16
16
  let(:data) do
17
- LHS::Data.new(json, nil, SomeService)
17
+ LHS::Data.new(json, nil, Record)
18
18
  end
19
19
 
20
20
  let(:item) do
@@ -4,7 +4,7 @@ describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
6
  LHC.config.placeholder('datastore', datastore)
7
- class SomeService < LHS::Service
7
+ class Record < LHS::Record
8
8
  endpoint ':datastore/v2/:campaign_id/feedbacks'
9
9
  endpoint ':datastore/v2/feedbacks'
10
10
  end
@@ -19,7 +19,7 @@ describe LHS::Item do
19
19
  end
20
20
 
21
21
  let(:data) do
22
- LHS::Data.new(json, nil, SomeService)
22
+ LHS::Data.new(json, nil, Record)
23
23
  end
24
24
 
25
25
  let(:item) do
@@ -43,7 +43,7 @@ describe LHS::Item do
43
43
 
44
44
  context 'includes and empty response' do
45
45
  before(:each) do
46
- class AnotherService < LHS::Service
46
+ class AnotherRecord < LHS::Record
47
47
  endpoint ':datastore/v2/:campaign_id/restaurants'
48
48
  end
49
49
  end
@@ -56,7 +56,7 @@ describe LHS::Item do
56
56
  .to_return(status: 200, body: data.to_json)
57
57
  stub_request(:get, "#{datastore}/v2/restaurants/1")
58
58
  .to_return(status: 200, body: {name: 'Casa Ferlin'}.to_json)
59
- item = SomeService.includes(:restaurant).find(1)
59
+ item = Record.includes(:restaurant).find(1)
60
60
  item.destroy
61
61
  end
62
62
  end
@@ -42,7 +42,7 @@ describe LHS::Item do
42
42
 
43
43
  before(:each) do
44
44
  LHC.config.placeholder(:datastore, datastore)
45
- class SomeService < LHS::Service
45
+ class Record < LHS::Record
46
46
  endpoint ':datastore/:campaign_id/feedbacks'
47
47
  endpoint ':datastore/feedbacks'
48
48
  end
@@ -53,7 +53,7 @@ describe LHS::Item do
53
53
  it 'parses fields correctly when creation failed' do
54
54
  stub_request(:post, "#{datastore}/feedbacks")
55
55
  .to_return(status: 400, body: error_format_fields.to_json)
56
- record = SomeService.build
56
+ record = Record.build
57
57
  record.name = 'Steve'
58
58
  result = record.save
59
59
  expect(result).to eq false
@@ -68,7 +68,7 @@ describe LHS::Item do
68
68
  it 'parses field errors correctly when creation failed' do
69
69
  stub_request(:post, "#{datastore}/feedbacks")
70
70
  .to_return(status: 400, body: error_format_field_errors.to_json)
71
- record = SomeService.build
71
+ record = Record.build
72
72
  record.name = 'Steve'
73
73
  result = record.save
74
74
  expect(result).to eq false
@@ -85,7 +85,7 @@ describe LHS::Item do
85
85
  it 'provides access to raw error data' do
86
86
  stub_request(:post, "#{datastore}/feedbacks")
87
87
  .to_return(status: 400, body: error_format_field_errors.to_json)
88
- record = SomeService.build
88
+ record = Record.build
89
89
  record.save
90
90
  expect(record.errors.raw).to be
91
91
  json = JSON.parse(record.errors.raw)
@@ -3,14 +3,14 @@ require 'rails_helper'
3
3
  describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
10
10
  end
11
11
 
12
12
  let(:data) do
13
- LHS::Data.new({addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}, nil, SomeService)
13
+ LHS::Data.new({addresses: [{business: {identities: [{name: 'Löwenzorn'}]}}]}, nil, Record)
14
14
  end
15
15
 
16
16
  context 'item getter' do
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
- class Feedback < LHS::Service
6
+ class Feedback < LHS::Record
7
7
  endpoint ':datastore/v2/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks/:id'
9
9
  end
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -14,7 +14,7 @@ describe LHS::Item do
14
14
  end
15
15
 
16
16
  let(:data) do
17
- LHS::Data.new(json, nil, SomeService)
17
+ LHS::Data.new(json, nil, Record)
18
18
  end
19
19
 
20
20
  let(:item) do
@@ -24,8 +24,7 @@ describe LHS::Item do
24
24
  context 'save' do
25
25
 
26
26
  it 'persists changes on the backend' do
27
- stub_request(:post, item.href)
28
- .with(body: item._raw.merge(name: 'Steve').to_json)
27
+ stub_request(:post, item.href).with(body: item._raw.merge(name: 'Steve').to_json)
29
28
  item.name = 'Steve'
30
29
  expect(item.save).to eq true
31
30
  end
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -14,7 +14,7 @@ describe LHS::Item do
14
14
  end
15
15
 
16
16
  let(:data) do
17
- LHS::Data.new(json, nil, SomeService)
17
+ LHS::Data.new(json, nil, Record)
18
18
  end
19
19
 
20
20
  let(:item) do
@@ -3,7 +3,7 @@ require 'rails_helper'
3
3
  describe LHS::Item do
4
4
 
5
5
  before(:each) do
6
- class SomeService < LHS::Service
6
+ class Record < LHS::Record
7
7
  endpoint ':datastore/v2/:campaign_id/feedbacks'
8
8
  endpoint ':datastore/v2/feedbacks'
9
9
  end
@@ -14,7 +14,7 @@ describe LHS::Item do
14
14
  end
15
15
 
16
16
  let(:data) do
17
- LHS::Data.new(json, nil, SomeService)
17
+ LHS::Data.new(json, nil, Record)
18
18
  end
19
19
 
20
20
  let(:item) do
@@ -4,112 +4,84 @@ describe LHS::Item do
4
4
 
5
5
  let(:datastore) { 'http://local.ch' }
6
6
 
7
- let(:validation_parameter) { 'persist' }
7
+ before(:each) do
8
+ LHC.config.placeholder('datastore', datastore)
9
+ class User < LHS::Record
10
+ endpoint ':datastore/v2/users', validates: true
11
+ end
12
+ mock_validation
13
+ end
8
14
 
9
15
  let(:mock_validation) do
10
16
  successful_validation
11
17
  end
12
18
 
13
19
  let(:successful_validation) do
14
- stub_request(:post, "#{datastore}/v2/users?#{validation_parameter}=false").to_return(body: '{}')
20
+ stub_request(:post, "#{datastore}/v2/users?persist=false").to_return(body: '{}')
15
21
  end
16
22
 
17
- before(:each) do
18
- mock_validation
23
+ let(:failing_validation) do
24
+ stub_request(:post, "#{datastore}/v2/users?persist=false")
25
+ .to_return(status: 400,
26
+ body: {
27
+ field_errors: [{code: "UNSUPPORTED_PROPERTY_VALUE", "path" => [ "email" ]}]
28
+ }.to_json
29
+ )
19
30
  end
20
31
 
21
- context 'custom validation parameter' do
22
-
23
- let(:validation_parameter) { 'publish' }
24
-
32
+ context 'valid data' do
25
33
  let(:user) do
26
34
  User.build(email: 'steve@local.ch')
27
35
  end
28
36
 
29
- before(:each) do
30
- LHC.config.placeholder('datastore', datastore)
31
- class User < LHS::Service
32
- endpoint ':datastore/v2/users', validates: 'publish'
33
- end
34
- end
35
-
36
37
  it 'validates' do
37
38
  expect(user.valid?).to eq true
38
39
  end
39
40
 
41
+ it 'turns to be invalid if validating on changed, invalid data' do
42
+ expect(user.valid?).to eq true
43
+ user.email = 'not a valid email'
44
+ failing_validation
45
+ expect(user.valid?).to eq false
46
+ expect(user.errors[:email]).to be
47
+ end
40
48
  end
41
49
 
42
- context 'default parameter' do
50
+ context 'invalid data' do
43
51
 
44
- before(:each) do
45
- LHC.config.placeholder('datastore', datastore)
46
- class User < LHS::Service
47
- endpoint ':datastore/v2/users', validates: true
48
- end
52
+ let(:user) do
53
+ User.build(email: 'im not an email address')
49
54
  end
50
55
 
51
- let(:failing_validation) do
52
- stub_request(:post, "#{datastore}/v2/users?persist=false")
53
- .to_return(status: 400,
54
- body: {
55
- field_errors: [{ code: "UNSUPPORTED_PROPERTY_VALUE", "path" => ["email"] }]
56
- }.to_json
57
- )
56
+ let(:mock_validation) do
57
+ failing_validation
58
58
  end
59
59
 
60
- context 'valid data' do
61
- let(:user) do
62
- User.build(email: 'steve@local.ch')
63
- end
64
-
65
- it 'validates' do
66
- expect(user.valid?).to eq true
67
- end
68
-
69
- it 'turns to be invalid if validating on changed, invalid data' do
70
- expect(user.valid?).to eq true
71
- user.email = 'not a valid email'
72
- failing_validation
73
- expect(user.valid?).to eq false
74
- expect(user.errors[:email]).to be
75
- end
60
+ it 'does not validate and provides error messages' do
61
+ expect(user.valid?).to eq false
62
+ expect(user.errors[:email]).to be
76
63
  end
77
64
 
78
- context 'invalid data' do
79
- let(:user) do
80
- User.build(email: 'im not an email address')
81
- end
82
-
83
- let(:mock_validation) do
84
- failing_validation
85
- end
86
-
87
- it 'does not validate and provides error messages' do
88
- expect(user.valid?).to eq false
89
- expect(user.errors[:email]).to be
90
- end
91
-
92
- it 'resets errors when revalidating' do
93
- expect(user.valid?).to eq false
94
- user.email = 'steve@local.ch'
95
- successful_validation
96
- expect(user.valid?).to eq true
97
- expect(user.errors).to be_nil
98
- end
65
+ it 'resets errors when revalidating' do
66
+ expect(user.valid?).to eq false
67
+ user.email = 'steve@local.ch'
68
+ successful_validation
69
+ expect(user.valid?).to eq true
70
+ expect(user.errors).to be_nil
99
71
  end
72
+ end
100
73
 
101
- context 'endpoint does not support validations' do
102
- before(:each) do
103
- class Favorite < LHS::Service
104
- endpoint ':datastore/v2/favorites'
105
- end
74
+ context 'endpoint does not support validations' do
75
+ before(:each) do
76
+ class Favorite < LHS::Record
77
+ endpoint ':datastore/v2/favorites'
106
78
  end
79
+ end
107
80
 
108
- it 'fails when trying to use an endpoint for validations that does not support it' do
109
- expect(lambda {
110
- Favorite.build.valid?
111
- }).to raise_error('Endpoint does not support validations!')
112
- end
81
+ it 'fails when trying to use an endpoint for validations that does not support it' do
82
+ expect(->{
83
+ Favorite.build.valid?
84
+ }).to raise_error('Endpoint does not support validations!')
113
85
  end
114
86
  end
115
87
  end