cloudrider 0.3.21 → 0.3.22

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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/generica/Gemfile +1 -1
  3. data/generica/Gemfile.lock +91 -51
  4. data/generica/app/assets/javascripts/components/product-display.js.em +4 -1
  5. data/generica/app/assets/javascripts/components/product-listing.js.em +4 -1
  6. data/generica/app/assets/javascripts/components/site-footer.js.em +12 -0
  7. data/generica/app/assets/javascripts/components/site-nav.js.em +15 -0
  8. data/generica/app/assets/javascripts/config/router.js.ls +18 -2
  9. data/generica/app/assets/javascripts/controllers/modals/fork_controller.js.em +4 -0
  10. data/generica/app/assets/javascripts/controllers/modals/login_controller.js.em +1 -4
  11. data/generica/app/assets/javascripts/controllers/modals/register_controller.js.em +1 -1
  12. data/generica/app/assets/javascripts/controllers/users/contact/edit_controller.js.em +16 -0
  13. data/generica/app/assets/javascripts/controllers/users/contacts/index_controller.js.em +21 -0
  14. data/generica/app/assets/javascripts/controllers/users/contacts/new_controller.js.em +16 -0
  15. data/generica/app/assets/javascripts/controllers/users/index_controller.js.em +19 -0
  16. data/generica/app/assets/javascripts/models/contact.js.em +11 -0
  17. data/generica/app/assets/javascripts/routes/users/contact_route.js.em +3 -0
  18. data/generica/app/assets/javascripts/routes/users/contacts/index_route.js.em +7 -0
  19. data/generica/app/assets/javascripts/routes/users/contacts/new_route.js.em +3 -0
  20. data/generica/app/assets/javascripts/routes/users/index_route.js.em +3 -0
  21. data/generica/app/assets/javascripts/templates/components/site-footer.emblem +18 -9
  22. data/generica/app/assets/javascripts/templates/users.emblem +11 -3
  23. data/generica/app/assets/javascripts/templates/users/contact/edit.emblem +16 -0
  24. data/generica/app/assets/javascripts/templates/users/contacts/_form-core.emblem +19 -0
  25. data/generica/app/assets/javascripts/templates/users/contacts/index.emblem +62 -0
  26. data/generica/app/assets/javascripts/templates/users/contacts/new.emblem +16 -0
  27. data/generica/app/assets/javascripts/templates/users/index.emblem +36 -2
  28. data/generica/app/assets/stylesheets/apiv1/components/_product-display.css.scss +7 -2
  29. data/generica/app/assets/stylesheets/apiv1/shared/_constants.css.scss +3 -0
  30. data/generica/app/controllers/apiv1/contacts/create_controller.rb +26 -0
  31. data/generica/app/controllers/apiv1/contacts/destroy_controller.rb +9 -0
  32. data/generica/app/controllers/apiv1/contacts/index_controller.rb +27 -0
  33. data/generica/app/controllers/apiv1/contacts/show_controller.rb +9 -0
  34. data/generica/app/controllers/apiv1/contacts/update_controller.rb +51 -0
  35. data/generica/app/controllers/apiv1/products/destroy_controller.rb +1 -1
  36. data/generica/app/models/admin/user.rb +20 -1
  37. data/generica/app/models/apiv1/user_contact.rb +51 -0
  38. data/generica/app/varissets/javascripts/templates/components/product-display.emblem.erb +34 -40
  39. data/generica/app/varissets/javascripts/templates/components/product-listing.emblem.erb +24 -16
  40. data/generica/app/varissets/javascripts/templates/components/site-nav.emblem.erb +12 -2
  41. data/generica/app/varissets/stylesheets/apiv1/components/_product-display.css.scss.erb +68 -31
  42. data/generica/app/varissets/stylesheets/apiv1/components/_product-listing.css.scss.erb +52 -14
  43. data/generica/config/routes.rb +5 -0
  44. data/generica/db/migrate/20141209185352_create_apiv1_user_contacts.rb +14 -0
  45. data/generica/spec/controllers/apiv1/contacts/update_controller_spec.rb +59 -0
  46. data/generica/spec/factories/admin/user_factory.rb +22 -4
  47. data/generica/spec/models/apiv1/user_contact_spec.rb +70 -0
  48. data/lib/cloudrider/version.rb +1 -1
  49. metadata +25 -2
@@ -28,6 +28,11 @@ Rails.application.routes.draw do
28
28
  resources :offers, only: [:show], controller: 'offers/show'
29
29
  resources :offers, only: [:destroy], controller: 'offers/destroy'
30
30
  resources :offers, only: [:index], controller: 'offers/index'
31
+ resources :contacts, only: [:create], controller: 'contacts/create'
32
+ resources :contacts, only: [:update], controller: 'contacts/update'
33
+ resources :contacts, only: [:destroy], controller: 'contacts/destroy'
34
+ resources :contacts, only: [:index], controller: 'contacts/index'
35
+ resources :contacts, only: [:show], controller: 'contacts/show'
31
36
  end
32
37
 
33
38
  namespace :users do
@@ -0,0 +1,14 @@
1
+ class CreateApiv1UserContacts < ActiveRecord::Migration
2
+ def change
3
+ create_table :apiv1_user_contacts do |t|
4
+ t.references :user, index: true
5
+ t.string :name
6
+ t.string :phone
7
+ t.string :email
8
+ t.string :address
9
+ t.datetime :made_primary_at
10
+ t.datetime :deleted_at
11
+ t.timestamps
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,59 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Apiv1::Contacts::UpdateController do
4
+ let(:user) { Admin::UserFactory.mock }
5
+ let(:contact) { user.raw_contacts.create! @contact_params }
6
+ before do
7
+ @contact_params = {
8
+ name: 'The Dog',
9
+ phone: '123 41234',
10
+ email: 'doggie@rat.co',
11
+ address: '654 Doggie Lane'
12
+ }
13
+ controller.auto_login user
14
+ end
15
+
16
+ describe '#update' do
17
+ before do
18
+ time = DateTime.now
19
+ @update_params = {
20
+ name: 'End of Disc 3',
21
+ phone: 'Disc 4',
22
+ email: 'curious@yes.there',
23
+ address: 'come across somthing',
24
+ made_primary_at: time
25
+ }
26
+ @expected = {
27
+ id: contact.id,
28
+ user_id: user.id,
29
+ name: 'End of Disc 3',
30
+ phone: 'Disc 4',
31
+ email: 'curious@yes.there',
32
+ address: 'come across somthing'
33
+ }
34
+ end
35
+ let(:update) { -> { put :update, contact: @update_params, id: contact.id } }
36
+ context 'contact' do
37
+ before { update.call }
38
+ subject { JSON.parse(response.body)["contact"].permit("id", "user_id", "name", "phone", "email", "address") }
39
+ specify { should eq @expected.stringify_keys }
40
+ end
41
+ context 'primary' do
42
+ let(:contact_fetcher) { -> { Admin::User.find(user.id).primary_contact } }
43
+ subject { update }
44
+ specify { should change(contact_fetcher, :call).from(nil).to(contact) }
45
+ end
46
+ context 'change' do
47
+ before { update.call }
48
+ let(:cont) { Apiv1::UserContact.find contact.id }
49
+ context 'name' do
50
+ subject { cont.name }
51
+ specify { should eq @expected[:name] }
52
+ end
53
+ context 'status' do
54
+ subject { cont.made_primary_at.to_formatted_s(:db) }
55
+ specify { should > @update_params[:made_primary_at].to_formatted_s(:db) }
56
+ end
57
+ end
58
+ end
59
+ end
@@ -10,13 +10,31 @@
10
10
  # updated_at :datetime
11
11
  # remember_me_token :string(255)
12
12
  # remember_me_token_expires_at :datetime
13
+ # user_rank :string(255)
14
+ # company_name :string(255)
15
+ # phone_number :string(255)
16
+ # about_me :text
17
+ # address :string(255)
13
18
  #
14
19
 
15
20
  class Admin::UserFactory < Apiv1::BaseFactory
21
+ class << self
22
+ def mock
23
+ Admin::User.new(attributes).tap(&:save!)
24
+ end
25
+ def attributes
26
+ {
27
+ email: Faker::Internet.email,
28
+ password: "asdf123",
29
+ password_confirmation: "asdf123",
30
+ company_name: Faker::Company.name,
31
+ phone_number: '554654',
32
+ address: Faker::AddressUS.street_address,
33
+ user_rank: 'admin'
34
+ }
35
+ end
36
+ end
16
37
  def attributes
17
- {
18
- email: Faker::Internet.email,
19
- password: "asdf123"
20
- }
38
+ self.class.attributes
21
39
  end
22
40
  end
@@ -0,0 +1,70 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: apiv1_user_contacts
4
+ #
5
+ # id :integer not null, primary key
6
+ # user_id :integer
7
+ # name :string(255)
8
+ # phone :string(255)
9
+ # email :string(255)
10
+ # address :string(255)
11
+ # made_primary_at :datetime
12
+ # deleted_at :datetime
13
+ # created_at :datetime
14
+ # updated_at :datetime
15
+ #
16
+
17
+ require 'rails_helper'
18
+
19
+ RSpec.describe Apiv1::UserContact do
20
+ let(:user) { Admin::UserFactory.mock }
21
+ let(:contact) { user.contacts.new @contact_params }
22
+ before do
23
+ @contact_params = {
24
+ name: 'Harold Hardcastle Co.',
25
+ phone: 'Devonture 314',
26
+ email: 'hardcastle@police.co.uk',
27
+ address: '44 Wilbehelm Crescent, Devonture England',
28
+ status: 'primary'
29
+ }
30
+ end
31
+ context '#to_ember_hash' do
32
+ before { contact.save! }
33
+ context 'ownership' do
34
+ subject { contact.user }
35
+ specify { should eq user }
36
+ end
37
+ context 'equality' do
38
+ before do
39
+ @expected = {
40
+ id: user.id,
41
+ email: contact.email,
42
+ user_rank: user.user_rank,
43
+ company_name: contact.name,
44
+ phone_number: contact.phone,
45
+ address: contact.address,
46
+ about_me: nil
47
+ }
48
+ end
49
+ subject { user.to_ember_hash }
50
+ specify { should eq @expected }
51
+ end
52
+ end
53
+ describe '#make_primary!' do
54
+ let(:alt_contact) { user.contacts.create! @alt_params }
55
+ let(:contact_fetcher) { -> { Admin::User.find(user.id).primary_contact } }
56
+ before do
57
+ @alt_params = {
58
+ name: 'Following Day',
59
+ phone: '23 23423',
60
+ email: 'american@sharp.co',
61
+ address: 'stuff where nowhere'
62
+ }
63
+ @contact_fetcher = -> { Apiv1::UserContact.find(contact.id).status }
64
+ contact.save!
65
+ end
66
+ subject { -> { alt_contact.make_primary! } }
67
+ specify { should change(contact_fetcher, :call).from(contact).to(alt_contact) }
68
+ specify { should change(@contact_fetcher, :call).from('primary').to(nil) }
69
+ end
70
+ end
@@ -1,3 +1,3 @@
1
1
  module Cloudrider
2
- VERSION = "0.3.21"
2
+ VERSION = "0.3.22"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudrider
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.21
4
+ version: 0.3.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Chen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-08 00:00:00.000000000 Z
11
+ date: 2014-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -197,11 +197,16 @@ files:
197
197
  - generica/app/assets/javascripts/controllers/application_controller.js.em
198
198
  - generica/app/assets/javascripts/controllers/index_controller.js.em
199
199
  - generica/app/assets/javascripts/controllers/messages/new_controller.js.em
200
+ - generica/app/assets/javascripts/controllers/modals/fork_controller.js.em
200
201
  - generica/app/assets/javascripts/controllers/modals/login_controller.js.em
201
202
  - generica/app/assets/javascripts/controllers/modals/register_controller.js.em
202
203
  - generica/app/assets/javascripts/controllers/products/index_controller.js.em
203
204
  - generica/app/assets/javascripts/controllers/products/product/offers/new_controller.js.em
204
205
  - generica/app/assets/javascripts/controllers/products/product/show_controller.js.em
206
+ - generica/app/assets/javascripts/controllers/users/contact/edit_controller.js.em
207
+ - generica/app/assets/javascripts/controllers/users/contacts/index_controller.js.em
208
+ - generica/app/assets/javascripts/controllers/users/contacts/new_controller.js.em
209
+ - generica/app/assets/javascripts/controllers/users/index_controller.js.em
205
210
  - generica/app/assets/javascripts/controllers/users/offers/index_controller.js.em
206
211
  - generica/app/assets/javascripts/controllers/users/product/edit_controller.js.em
207
212
  - generica/app/assets/javascripts/controllers/users/products/index_controller.js.em
@@ -224,6 +229,7 @@ files:
224
229
  - generica/app/assets/javascripts/models/admin/session.js.em
225
230
  - generica/app/assets/javascripts/models/admin/taxon.js.em
226
231
  - generica/app/assets/javascripts/models/attachment.js.em
232
+ - generica/app/assets/javascripts/models/contact.js.em
227
233
  - generica/app/assets/javascripts/models/employee.js.em
228
234
  - generica/app/assets/javascripts/models/listing.js.em
229
235
  - generica/app/assets/javascripts/models/message.js.em
@@ -259,6 +265,10 @@ files:
259
265
  - generica/app/assets/javascripts/routes/products/index_route.js.em
260
266
  - generica/app/assets/javascripts/routes/products/product/offers/new_route.js.em
261
267
  - generica/app/assets/javascripts/routes/products_route.js.em
268
+ - generica/app/assets/javascripts/routes/users/contact_route.js.em
269
+ - generica/app/assets/javascripts/routes/users/contacts/index_route.js.em
270
+ - generica/app/assets/javascripts/routes/users/contacts/new_route.js.em
271
+ - generica/app/assets/javascripts/routes/users/index_route.js.em
262
272
  - generica/app/assets/javascripts/routes/users/offers/index_route.js.em
263
273
  - generica/app/assets/javascripts/routes/users/product_route.js.em
264
274
  - generica/app/assets/javascripts/routes/users/products/index_route.js.em
@@ -334,6 +344,10 @@ files:
334
344
  - generica/app/assets/javascripts/templates/products/product/offers/new.emblem
335
345
  - generica/app/assets/javascripts/templates/products/product/show.emblem
336
346
  - generica/app/assets/javascripts/templates/users.emblem
347
+ - generica/app/assets/javascripts/templates/users/contact/edit.emblem
348
+ - generica/app/assets/javascripts/templates/users/contacts/_form-core.emblem
349
+ - generica/app/assets/javascripts/templates/users/contacts/index.emblem
350
+ - generica/app/assets/javascripts/templates/users/contacts/new.emblem
337
351
  - generica/app/assets/javascripts/templates/users/index.emblem
338
352
  - generica/app/assets/javascripts/templates/users/offers/index.emblem
339
353
  - generica/app/assets/javascripts/templates/users/offers/slice.emblem
@@ -395,6 +409,11 @@ files:
395
409
  - generica/app/controllers/admin/sessions/create_controller.rb
396
410
  - generica/app/controllers/admin/sessions/destroy_controller.rb
397
411
  - generica/app/controllers/admin/taxons/create_controller.rb
412
+ - generica/app/controllers/apiv1/contacts/create_controller.rb
413
+ - generica/app/controllers/apiv1/contacts/destroy_controller.rb
414
+ - generica/app/controllers/apiv1/contacts/index_controller.rb
415
+ - generica/app/controllers/apiv1/contacts/show_controller.rb
416
+ - generica/app/controllers/apiv1/contacts/update_controller.rb
398
417
  - generica/app/controllers/apiv1/employees/destroy_controller.rb
399
418
  - generica/app/controllers/apiv1/employees/index_controller.rb
400
419
  - generica/app/controllers/apiv1/home_controller.rb
@@ -460,6 +479,7 @@ files:
460
479
  - generica/app/models/apiv1/taxon.rb
461
480
  - generica/app/models/apiv1/translation.rb
462
481
  - generica/app/models/apiv1/translation_machine.rb
482
+ - generica/app/models/apiv1/user_contact.rb
463
483
  - generica/app/models/apiv1/users/product_factory.rb
464
484
  - generica/app/models/apiv1/users/product_relationship.rb
465
485
  - generica/app/models/concerns/.keep
@@ -570,6 +590,7 @@ files:
570
590
  - generica/db/migrate/20141116235808_add_deleted_at_to_apiv1_attachments.rb
571
591
  - generica/db/migrate/20141127230304_create_apiv1_email_requests.rb
572
592
  - generica/db/migrate/20141127230455_create_apiv1_email_objects.rb
593
+ - generica/db/migrate/20141209185352_create_apiv1_user_contacts.rb
573
594
  - generica/db/schema.rb
574
595
  - generica/db/seeds.rb
575
596
  - generica/db/seeds/dimensions.rb
@@ -614,6 +635,7 @@ files:
614
635
  - generica/spec/controllers/admin/products/update_controller_spec.rb
615
636
  - generica/spec/controllers/admin/sessions/create_controller_spec.rb
616
637
  - generica/spec/controllers/admin/taxons/create_controller_spec.rb
638
+ - generica/spec/controllers/apiv1/contacts/update_controller_spec.rb
617
639
  - generica/spec/controllers/apiv1/messages/index_controller_spec.rb
618
640
  - generica/spec/controllers/apiv1/pictures/destroy_controller_spec.rb
619
641
  - generica/spec/controllers/apiv1/taxons/index_controller_spec.rb
@@ -640,6 +662,7 @@ files:
640
662
  - generica/spec/models/apiv1/products/offer_message_factory_spec.rb
641
663
  - generica/spec/models/apiv1/products_machine_spec.rb
642
664
  - generica/spec/models/apiv1/translation_spec.rb
665
+ - generica/spec/models/apiv1/user_contact_spec.rb
643
666
  - generica/spec/models/apiv1/users/product_factory_spec.rb
644
667
  - generica/spec/models/i18n/backend/active_record_spec.rb
645
668
  - generica/spec/models/users/products/offer_factory_spec.rb