lanes 0.0.5 → 0.0.8
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 +4 -4
- data/.gitignore +0 -1
- data/Gemfile +0 -1
- data/README.md +2 -0
- data/client/lanes/data/Bootstrap.coffee +2 -2
- data/client/lanes/data/Collection.coffee +4 -0
- data/client/lanes/data/Config.coffee +0 -5
- data/client/lanes/data/Model.coffee +236 -150
- data/client/lanes/data/PubSub.coffee +6 -12
- data/client/lanes/data/Sync.coffee +1 -0
- data/client/lanes/extension/Extensions.coffee +4 -2
- data/client/lanes/lib/MakeBaseClass.coffee +1 -1
- data/client/lanes/minimal.js +11 -0
- data/client/lanes/minimal.scss.erb +12 -0
- data/client/lanes/screens/Base.coffee +1 -2
- data/client/lanes/screens/Instance.coffee +52 -0
- data/client/lanes/vendor/packaged.js +1 -2
- data/client/lanes/views/Base.coffee +12 -10
- data/client/lanes/workspace.scss.erb +3 -0
- data/client/lanes/workspace/index.js +2 -12
- data/docs/command.md +111 -0
- data/docs/model.md +188 -0
- data/docs/todo-example-part-1.md +71 -0
- data/docs/view.md +275 -0
- data/{spec/client/jasmine_examples/PlayerSpec.js → docs/welcome.md} +0 -0
- data/lanes.gemspec +3 -1
- data/lib/lanes/api/helper_methods.rb +8 -0
- data/lib/lanes/api/javascript_processor.rb +14 -10
- data/lib/lanes/api/pub_sub.rb +7 -7
- data/lib/lanes/api/request_wrapper.rb +1 -0
- data/lib/lanes/api/root.rb +2 -7
- data/lib/lanes/api/sprockets_compressor.rb +6 -2
- data/lib/lanes/api/sprockets_extension.rb +25 -9
- data/lib/lanes/api/test_specs.rb +13 -9
- data/lib/lanes/command.rb +16 -6
- data/lib/lanes/command/app.rb +11 -5
- data/lib/lanes/command/generate_model.rb +4 -3
- data/lib/lanes/command/generate_screen.rb +2 -1
- data/lib/lanes/command/generate_view.rb +1 -1
- data/lib/lanes/command/named_command.rb +5 -4
- data/lib/lanes/command/templates/Gemfile +1 -2
- data/lib/lanes/command/templates/client/data/Model.coffee +3 -3
- data/lib/lanes/command/templates/client/{namespace-extension.js → index.js} +0 -0
- data/lib/lanes/command/templates/client/screens/Screen.coffee +1 -3
- data/lib/lanes/command/templates/client/{styles/styles.scss → styles.scss} +0 -0
- data/lib/lanes/command/templates/client/views/View.coffee +1 -3
- data/lib/lanes/command/templates/config/lanes.rb +1 -1
- data/lib/lanes/command/templates/gitignore +1 -0
- data/lib/lanes/command/templates/lib/namespace/screen.rb +1 -1
- data/lib/lanes/command/templates/public/.gitkeep +0 -0
- data/lib/lanes/command/templates/spec/client/Screen.coffee +7 -0
- data/lib/lanes/command/templates/spec/client/views/ViewSpec.coffee +2 -2
- data/lib/lanes/concerns/all.rb +1 -1
- data/lib/lanes/concerns/sanitize_fields.rb +32 -0
- data/lib/lanes/concerns/set_attribute_data.rb +4 -4
- data/lib/lanes/db.rb +7 -8
- data/lib/lanes/extension.rb +37 -3
- data/lib/lanes/guard_tasks.rb +2 -2
- data/lib/lanes/model.rb +2 -2
- data/lib/lanes/screens.rb +1 -0
- data/lib/lanes/spec_helper.rb +17 -6
- data/{spec → lib/lanes}/testing_models.rb +1 -1
- data/lib/lanes/version.rb +1 -1
- data/npm-build/compile.coffee +1 -6
- data/public/javascripts/jasmine_examples/Player.js +22 -0
- data/public/javascripts/jasmine_examples/Song.js +7 -0
- data/spec/api/javascript_processor_spec.rb +6 -3
- data/spec/concerns/api_path_spec.rb +1 -1
- data/spec/concerns/association_extensions_spec.rb +7 -3
- data/spec/concerns/attr_accessor_with_default_spec.rb +1 -1
- data/spec/concerns/code_identifier_spec.rb +1 -1
- data/spec/concerns/export_associations_spec.rb +1 -1
- data/spec/concerns/export_methods_spec.rb +1 -14
- data/spec/concerns/export_scope_spec.rb +7 -9
- data/spec/concerns/exported_limits_spec.rb +1 -1
- data/spec/concerns/pub_sub_spec.rb +1 -1
- data/spec/concerns/set_attribute_data_spec.rb +16 -24
- data/spec/configuration_spec.rb +1 -1
- data/spec/helpers/lanes-helpers.coffee +61 -0
- data/spec/lanes/data/ModelSpec.coffee +152 -0
- data/spec/lanes/data/PubSubSpec.coffee +21 -0
- data/spec/{client/view → lanes/views}/BaseSpec.coffee +6 -26
- data/spec/numbers_spec.rb +1 -1
- data/spec/strings_spec.rb +1 -1
- data/views/index.erb +3 -10
- data/views/specs.erb +4 -1
- metadata +62 -16
- data/client/lanes/plugins/trigger.coffee +0 -15
- data/client/lanes/workspace/Instance.es6 +0 -64
- data/lib/lanes/concerns/sanitize_api_data.rb +0 -15
- data/spec/api/user_spec.rb +0 -52
- data/spec/fixtures/lanes/users.yml +0 -13
- data/spec/locked_fields_spec.rb +0 -27
- data/spec/role_collection_spec.rb +0 -19
- data/spec/user_role_spec.rb +0 -7
- data/spec/user_spec.rb +0 -53
data/views/specs.erb
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, minimal-ui"/>
|
7
7
|
<title>Lanes Specs</title>
|
8
8
|
|
9
|
-
<%= javascript_tag 'lanes
|
9
|
+
<%= javascript_tag 'lanes/workspace.js' %>
|
10
10
|
|
11
11
|
<% specs.css_files.each do |css_file| %>
|
12
12
|
<link rel="stylesheet" href="<%= css_file %>" type="text/css" media="screen"/>
|
@@ -15,6 +15,9 @@
|
|
15
15
|
<% specs.js_files.each do | js_file | %>
|
16
16
|
<script src="<%= js_file %>" type="text/javascript"></script>
|
17
17
|
<% end %>
|
18
|
+
<script type="text/javascript">
|
19
|
+
Lanes.Data.Bootstrap.initialize( <%= client_bootstrap_data %> );
|
20
|
+
</script>
|
18
21
|
|
19
22
|
</head>
|
20
23
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lanes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Stitt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -262,6 +262,20 @@ dependencies:
|
|
262
262
|
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: '0.2'
|
265
|
+
- !ruby/object:Gem::Dependency
|
266
|
+
name: mocha
|
267
|
+
requirement: !ruby/object:Gem::Requirement
|
268
|
+
requirements:
|
269
|
+
- - "~>"
|
270
|
+
- !ruby/object:Gem::Version
|
271
|
+
version: '1.1'
|
272
|
+
type: :runtime
|
273
|
+
prerelease: false
|
274
|
+
version_requirements: !ruby/object:Gem::Requirement
|
275
|
+
requirements:
|
276
|
+
- - "~>"
|
277
|
+
- !ruby/object:Gem::Version
|
278
|
+
version: '1.1'
|
265
279
|
- !ruby/object:Gem::Dependency
|
266
280
|
name: guard-minitest
|
267
281
|
requirement: !ruby/object:Gem::Requirement
|
@@ -290,6 +304,20 @@ dependencies:
|
|
290
304
|
- - "~>"
|
291
305
|
- !ruby/object:Gem::Version
|
292
306
|
version: '0.12'
|
307
|
+
- !ruby/object:Gem::Dependency
|
308
|
+
name: closure-compiler
|
309
|
+
requirement: !ruby/object:Gem::Requirement
|
310
|
+
requirements:
|
311
|
+
- - "~>"
|
312
|
+
- !ruby/object:Gem::Version
|
313
|
+
version: '1.1'
|
314
|
+
type: :runtime
|
315
|
+
prerelease: false
|
316
|
+
version_requirements: !ruby/object:Gem::Requirement
|
317
|
+
requirements:
|
318
|
+
- - "~>"
|
319
|
+
- !ruby/object:Gem::Version
|
320
|
+
version: '1.1'
|
293
321
|
- !ruby/object:Gem::Dependency
|
294
322
|
name: guard-jasmine
|
295
323
|
requirement: !ruby/object:Gem::Requirement
|
@@ -346,6 +374,20 @@ dependencies:
|
|
346
374
|
- - "~>"
|
347
375
|
- !ruby/object:Gem::Version
|
348
376
|
version: '1.3'
|
377
|
+
- !ruby/object:Gem::Dependency
|
378
|
+
name: sanitize
|
379
|
+
requirement: !ruby/object:Gem::Requirement
|
380
|
+
requirements:
|
381
|
+
- - "~>"
|
382
|
+
- !ruby/object:Gem::Version
|
383
|
+
version: '3.0'
|
384
|
+
type: :runtime
|
385
|
+
prerelease: false
|
386
|
+
version_requirements: !ruby/object:Gem::Requirement
|
387
|
+
requirements:
|
388
|
+
- - "~>"
|
389
|
+
- !ruby/object:Gem::Version
|
390
|
+
version: '3.0'
|
349
391
|
- !ruby/object:Gem::Dependency
|
350
392
|
name: bundler
|
351
393
|
requirement: !ruby/object:Gem::Requirement
|
@@ -494,12 +536,14 @@ files:
|
|
494
536
|
- client/lanes/lib/promise_helpers.coffee
|
495
537
|
- client/lanes/lib/results.coffee
|
496
538
|
- client/lanes/lib/utilFunctions.coffee
|
539
|
+
- client/lanes/minimal.js
|
540
|
+
- client/lanes/minimal.scss.erb
|
497
541
|
- client/lanes/plugins/ResizeSensor.js
|
498
542
|
- client/lanes/plugins/index.js
|
499
543
|
- client/lanes/plugins/overlay.coffee
|
500
|
-
- client/lanes/plugins/trigger.coffee
|
501
544
|
- client/lanes/screens/Base.coffee
|
502
545
|
- client/lanes/screens/ChangeListener.coffee
|
546
|
+
- client/lanes/screens/Instance.coffee
|
503
547
|
- client/lanes/screens/Router.coffee
|
504
548
|
- client/lanes/screens/index.js
|
505
549
|
- client/lanes/screens/screen-definitions.js.erb
|
@@ -541,7 +585,6 @@ files:
|
|
541
585
|
- client/lanes/views/model-update.html
|
542
586
|
- client/lanes/workspace.scss.erb
|
543
587
|
- client/lanes/workspace/ActiveScreensSwitcher.coffee
|
544
|
-
- client/lanes/workspace/Instance.es6
|
545
588
|
- client/lanes/workspace/Layout.coffee
|
546
589
|
- client/lanes/workspace/Navbar.coffee
|
547
590
|
- client/lanes/workspace/Pages.coffee
|
@@ -721,6 +764,11 @@ files:
|
|
721
764
|
- config.ru
|
722
765
|
- config/database.yml
|
723
766
|
- db/migrate/20140615031600_create_hip_users.rb
|
767
|
+
- docs/command.md
|
768
|
+
- docs/model.md
|
769
|
+
- docs/todo-example-part-1.md
|
770
|
+
- docs/view.md
|
771
|
+
- docs/welcome.md
|
724
772
|
- lanes.gemspec
|
725
773
|
- lib/generators/lanes/migrations/install_generator.rb
|
726
774
|
- lib/lanes.rb
|
@@ -764,12 +812,12 @@ files:
|
|
764
812
|
- lib/lanes/command/templates/client/components/.gitkeep
|
765
813
|
- lib/lanes/command/templates/client/components/Component.coffee
|
766
814
|
- lib/lanes/command/templates/client/data/Model.coffee
|
767
|
-
- lib/lanes/command/templates/client/
|
815
|
+
- lib/lanes/command/templates/client/index.js
|
768
816
|
- lib/lanes/command/templates/client/screens/Screen.coffee
|
769
817
|
- lib/lanes/command/templates/client/screens/index.js
|
770
818
|
- lib/lanes/command/templates/client/screens/layout.html
|
771
819
|
- lib/lanes/command/templates/client/screens/styles.scss
|
772
|
-
- lib/lanes/command/templates/client/styles
|
820
|
+
- lib/lanes/command/templates/client/styles.scss
|
773
821
|
- lib/lanes/command/templates/client/views/.gitkeep
|
774
822
|
- lib/lanes/command/templates/client/views/View.coffee
|
775
823
|
- lib/lanes/command/templates/client/views/template.html
|
@@ -784,6 +832,8 @@ files:
|
|
784
832
|
- lib/lanes/command/templates/lib/namespace/model.rb
|
785
833
|
- lib/lanes/command/templates/lib/namespace/screen.rb
|
786
834
|
- lib/lanes/command/templates/lib/namespace/version.rb
|
835
|
+
- lib/lanes/command/templates/public/.gitkeep
|
836
|
+
- lib/lanes/command/templates/spec/client/Screen.coffee
|
787
837
|
- lib/lanes/command/templates/spec/client/data/ModelSpec.coffee
|
788
838
|
- lib/lanes/command/templates/spec/client/views/ViewSpec.coffee
|
789
839
|
- lib/lanes/command/templates/spec/fixtures/namespace/model.yml
|
@@ -808,7 +858,7 @@ files:
|
|
808
858
|
- lib/lanes/concerns/pub_sub.rb
|
809
859
|
- lib/lanes/concerns/queries.rb
|
810
860
|
- lib/lanes/concerns/random_hash_code.rb
|
811
|
-
- lib/lanes/concerns/
|
861
|
+
- lib/lanes/concerns/sanitize_fields.rb
|
812
862
|
- lib/lanes/concerns/set_attribute_data.rb
|
813
863
|
- lib/lanes/concerns/visible_id_identifier.rb
|
814
864
|
- lib/lanes/configuration.rb
|
@@ -827,6 +877,7 @@ files:
|
|
827
877
|
- lib/lanes/spec_asset_expander.rb
|
828
878
|
- lib/lanes/spec_helper.rb
|
829
879
|
- lib/lanes/strings.rb
|
880
|
+
- lib/lanes/testing_models.rb
|
830
881
|
- lib/lanes/validators/all.rb
|
831
882
|
- lib/lanes/validators/email.rb
|
832
883
|
- lib/lanes/validators/set.rb
|
@@ -839,9 +890,6 @@ files:
|
|
839
890
|
- public/javascripts/jasmine_examples/Player.js
|
840
891
|
- public/javascripts/jasmine_examples/Song.js
|
841
892
|
- spec/api/javascript_processor_spec.rb
|
842
|
-
- spec/api/user_spec.rb
|
843
|
-
- spec/client/jasmine_examples/PlayerSpec.js
|
844
|
-
- spec/client/view/BaseSpec.coffee
|
845
893
|
- spec/concerns/api_path_spec.rb
|
846
894
|
- spec/concerns/association_extensions_spec.rb
|
847
895
|
- spec/concerns/attr_accessor_with_default_spec.rb
|
@@ -853,17 +901,15 @@ files:
|
|
853
901
|
- spec/concerns/pub_sub_spec.rb
|
854
902
|
- spec/concerns/set_attribute_data_spec.rb
|
855
903
|
- spec/configuration_spec.rb
|
856
|
-
- spec/fixtures/lanes/users.yml
|
857
904
|
- spec/helpers/.gitkeep
|
858
905
|
- spec/helpers/jasmine-jquery.js
|
859
906
|
- spec/helpers/jasmine-matchers.js
|
860
|
-
- spec/
|
907
|
+
- spec/helpers/lanes-helpers.coffee
|
908
|
+
- spec/lanes/data/ModelSpec.coffee
|
909
|
+
- spec/lanes/data/PubSubSpec.coffee
|
910
|
+
- spec/lanes/views/BaseSpec.coffee
|
861
911
|
- spec/numbers_spec.rb
|
862
|
-
- spec/role_collection_spec.rb
|
863
912
|
- spec/strings_spec.rb
|
864
|
-
- spec/testing_models.rb
|
865
|
-
- spec/user_role_spec.rb
|
866
|
-
- spec/user_spec.rb
|
867
913
|
- tasks/migrations.rake
|
868
914
|
- tasks/publish.rake
|
869
915
|
- views/index.erb
|
@@ -1,15 +0,0 @@
|
|
1
|
-
|
2
|
-
jqTrigger = Lanes.$.fn.trigger
|
3
|
-
|
4
|
-
Lanes.$.fn.trigger = ( event, data, elem, onlyHandlers ) ->
|
5
|
-
evt = window.document.createEvent('CustomEvent')
|
6
|
-
event_name = if _.isObject(event)
|
7
|
-
data ||= event
|
8
|
-
event.type
|
9
|
-
else
|
10
|
-
event
|
11
|
-
evt.initCustomEvent(event_name, true, true, data )
|
12
|
-
this.each( (index,el)->
|
13
|
-
el.dispatchEvent(evt) unless _.isFunction(el[event_name])
|
14
|
-
)
|
15
|
-
jqTrigger.apply(this, arguments);
|
@@ -1,64 +0,0 @@
|
|
1
|
-
Lanes.Workspace.create = function(selector, options, extension_data){
|
2
|
-
return new Lanes.Workspace.Instance(selector, options, extension_data);
|
3
|
-
};
|
4
|
-
|
5
|
-
Lanes.Workspace.Instance = class Instance {
|
6
|
-
|
7
|
-
constructor(selector, options, extension_data){
|
8
|
-
_.extend(this,options);
|
9
|
-
|
10
|
-
this.viewport = new Lanes.Views.Viewport({ selector: selector, instance: this });
|
11
|
-
Lanes.Data.Bootstrap.initialize({
|
12
|
-
csrf: options.csrf_token,
|
13
|
-
root: options.root_path,
|
14
|
-
data: extension_data
|
15
|
-
});
|
16
|
-
Lanes.$(document).ready( ()=> {
|
17
|
-
this.boot();
|
18
|
-
});
|
19
|
-
}
|
20
|
-
|
21
|
-
boot(){
|
22
|
-
this.root = Lanes.$( this.viewport.selector );
|
23
|
-
this.root.data().workspace = this;
|
24
|
-
this.viewport.root = this.root;
|
25
|
-
|
26
|
-
Lanes.lib.ResizeSensor(this.root[0], _.bind( _.debounce( function(){
|
27
|
-
this.viewport.set({ width: this.root.width(), height: this.root.height() });
|
28
|
-
}, 250 ), this) );
|
29
|
-
|
30
|
-
this.root.addClass('lanes root');
|
31
|
-
this.root.tooltip({
|
32
|
-
viewport: '.lanes',
|
33
|
-
selector: '[data-tooltip-message]',
|
34
|
-
title: function(){ return this.getAttribute('data-tooltip-message'); }
|
35
|
-
});
|
36
|
-
var view = Lanes.getPath(this.view);
|
37
|
-
if (view){
|
38
|
-
this.displayInitialView(view);
|
39
|
-
} else {
|
40
|
-
var definition=Lanes.Data.Screens.all.findWhere({view: this.view});
|
41
|
-
if (definition){
|
42
|
-
definition.getScreen().then( (screen)=>{
|
43
|
-
// break out of the promise so an errors during render get thrown properly
|
44
|
-
_.defer( ()=>{ this.displayInitialView(screen); } );
|
45
|
-
}, (msg)=>{
|
46
|
-
Lanes.fatal("Unable to load initial screen ${this.view}", msg);
|
47
|
-
});
|
48
|
-
} else {
|
49
|
-
Lanes.fatal(this.view + " doesn't exist!");
|
50
|
-
}
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
displayInitialView(view){
|
55
|
-
this.view = new view({parent: this, model: this.viewport}).render();
|
56
|
-
this.viewport.el = this.view.$el;
|
57
|
-
|
58
|
-
this.root.append( this.view.el );
|
59
|
-
|
60
|
-
Lanes.Views.Keys.initialize();
|
61
|
-
Lanes.Data.PubSub.initialize();
|
62
|
-
Lanes.Extensions.fireOnAvailable(this);
|
63
|
-
}
|
64
|
-
};
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Lanes::Concerns
|
2
|
-
|
3
|
-
|
4
|
-
# SanitizeJson is responsible for only cleaning a hash of attributes that should not
|
5
|
-
# be written to the model by the given user
|
6
|
-
module SanitizeApiData
|
7
|
-
extend ActiveSupport::Concern
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
end
|
11
|
-
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
|
-
end
|
data/spec/api/user_spec.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
require_relative "../spec_helper"
|
2
|
-
|
3
|
-
class ApiUserTest < Lanes::ApiTestCase
|
4
|
-
|
5
|
-
def test_query
|
6
|
-
get "/users/#{admin.id}.json"
|
7
|
-
refute_ok
|
8
|
-
login!
|
9
|
-
get "/users/#{admin.id}.json"
|
10
|
-
assert_ok
|
11
|
-
assert_equal admin.id, json_data.id
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_create
|
15
|
-
login!
|
16
|
-
assert_difference ->{User.count}, 1 do
|
17
|
-
post "/users.json", {
|
18
|
-
login: "nas", name: "Nathan", email: "test@test.com", password: 'testing1234'
|
19
|
-
}
|
20
|
-
assert_ok
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_update_by_self
|
25
|
-
user = lanes_users(:support)
|
26
|
-
login!(user)
|
27
|
-
assert User.can_write_attributes?({id: user.id, :foo=>1}, user)
|
28
|
-
put "/users/#{user.id}.json", { name: 'Updated Name', password: 'pass1234', email: 'sam@test.com' }
|
29
|
-
assert_ok
|
30
|
-
user.reload
|
31
|
-
assert_equal 'Updated Name', user.name
|
32
|
-
assert_equal 'sam@test.com', user.email
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_updating_roles
|
36
|
-
login!
|
37
|
-
user = lanes_users(:support)
|
38
|
-
put "/users/#{user.id}.json", { name: 'Sam', role_names:['administrator'] }
|
39
|
-
assert_ok
|
40
|
-
user.reload
|
41
|
-
assert_equal 'Sam', user.name
|
42
|
-
assert_equal ['administrator'], user.role_names
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_delete
|
46
|
-
login!
|
47
|
-
assert_difference ->{User.count}, -1 do
|
48
|
-
delete "/users/#{admin.id}.json"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
admin:
|
2
|
-
login: admin
|
3
|
-
name: Administrator Jane
|
4
|
-
email: admin@test.com
|
5
|
-
password_digest: <%= BCrypt::Password.create('password') %>
|
6
|
-
role_names: ['administrator']
|
7
|
-
|
8
|
-
support:
|
9
|
-
login: support
|
10
|
-
name: Supporter Joe
|
11
|
-
email: support@test.com
|
12
|
-
password_digest: <%= BCrypt::Password.create('password') %>
|
13
|
-
role_names: ['support']
|
data/spec/locked_fields_spec.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
class Customer < Lanes::Model
|
4
|
-
def self.attribute_names
|
5
|
-
[:terms_id]
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
Lanes::Access::Roles::Support.read << Customer
|
10
|
-
Lanes::Access::Roles::Administrator.lock Customer, :terms_id
|
11
|
-
|
12
|
-
class LockedFieldsTest < Lanes::TestCase
|
13
|
-
|
14
|
-
def setup
|
15
|
-
@user = Lanes::User.new( login: 'test', email: 'bob@test.com', name: 'Bob', password: 'testtest')
|
16
|
-
@purchaser = Lanes::User.new( login: 'test', email: 'bob@test.com', name: 'Bob', password: 'testtest')
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_validations
|
20
|
-
@user.role_names = ['support']
|
21
|
-
assert_saves @user
|
22
|
-
assert @user.can_read?(Customer), "User with support role cannot read Customer"
|
23
|
-
refute @user.can_write?(Customer), "User can write, but shouldn't be able to"
|
24
|
-
refute @user.can_read?(Customer, :terms_id), "User can read :terms_id but shouldn't be able to"
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
class AccessTester < Lanes::Model
|
6
|
-
def self.attribute_names
|
7
|
-
[:name]
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
class RoleCollectionTest < Lanes::TestCase
|
13
|
-
|
14
|
-
def test_administrator_grants
|
15
|
-
user = lanes_users(:admin)
|
16
|
-
assert_includes user.role_names, 'administrator'
|
17
|
-
assert user.roles.can_read?(AccessTester)
|
18
|
-
end
|
19
|
-
end
|
data/spec/user_role_spec.rb
DELETED
data/spec/user_spec.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require_relative 'spec_helper'
|
2
|
-
|
3
|
-
describe Lanes::User do
|
4
|
-
|
5
|
-
before do
|
6
|
-
@user = Lanes::User.new( login: 'test', email: 'bob@test.com', name: 'Bob', password: 'testtest')
|
7
|
-
end
|
8
|
-
|
9
|
-
it "validates attributes" do
|
10
|
-
user = Lanes::User.new
|
11
|
-
refute_saves user, 'login'
|
12
|
-
user.assign_attributes login: 'test', email: 'bob', name: 'Bob'
|
13
|
-
refute_saves user, 'email'
|
14
|
-
user.email = 'bob@test.com'
|
15
|
-
refute_saves user, 'password'
|
16
|
-
user.password = 'password'
|
17
|
-
assert_saves user
|
18
|
-
end
|
19
|
-
|
20
|
-
it "sets roles" do
|
21
|
-
@user.role_names = ['administrator']
|
22
|
-
assert_saves @user
|
23
|
-
assert_equal [ 'administrator' ], @user.role_names
|
24
|
-
end
|
25
|
-
|
26
|
-
it "can has built-in roles" do
|
27
|
-
@support = Lanes::User.new( login: 'test', email: 'support@test.com', name: 'support Bob',
|
28
|
-
password: 'testtest', role_names:['support'])
|
29
|
-
@admin = Lanes::User.new( login: 'test', email: 'admin@test.com', name: 'admin Bob',
|
30
|
-
password: 'testtest', role_names:['administrator'])
|
31
|
-
|
32
|
-
assert @admin.can_read?(@support)
|
33
|
-
assert @admin.can_write?(@support)
|
34
|
-
|
35
|
-
assert @support.can_read?(@admin)
|
36
|
-
refute @support.can_write?(@admin)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "can be set from attribute data" do
|
40
|
-
attrs = { login: 'test', email: 'bob', name: 'Bob', password:'password' }
|
41
|
-
assert_equal attrs, @user.set_attribute_data( attrs, lanes_users(:admin) )
|
42
|
-
end
|
43
|
-
|
44
|
-
it "users can update themselves" do
|
45
|
-
user = lanes_users(:support)
|
46
|
-
admin = lanes_users(:admin)
|
47
|
-
attrs = { id: 34, login: 'test', email: 'bob', name: 'Bob', password:'password' }
|
48
|
-
assert_empty admin.set_attribute_data( attrs, user )
|
49
|
-
attrs[:id] = user.id
|
50
|
-
assert_equal( {email: 'bob', name: 'Bob', password:'password'}, user.set_attribute_data(attrs, user) )
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|