lhs 2.2.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
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