robeaux 0.1.1 → 0.2.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 +4 -4
- data/.gitignore +1 -0
- data/Makefile +3 -4
- data/README.markdown +2 -0
- data/js/controllers/device_commands_ctrl.js +1 -1
- data/js/controllers/device_events_ctrl.js +1 -1
- data/js/controllers/index_ctrl.js +2 -2
- data/js/controllers/robot_commands_ctrl.js +1 -2
- data/js/controllers/robot_ctrl.js +2 -2
- data/package.json +9 -7
- data/partials/robot.html +1 -1
- data/robeaux.gemspec +3 -3
- data/test/karma.conf.js +80 -0
- data/test/main.js +248 -0
- data/test/support/myDevice.json +15 -0
- data/test/support/myRobot.json +31 -0
- data/test/support/robots.json +33 -0
- data/test/vendor/angular-mocks.js +2163 -0
- data/test/vendor/jasmine-jquery.js +704 -0
- data/test/vendor/jquery.js +8755 -0
- metadata +13 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: fb64bdd58fcc2541db81dc55c3a21750db37af3f
         | 
| 4 | 
            +
              data.tar.gz: e873c183975f9dd68f66a1dc975eec90894da0f0
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 863dc02ee4c0e0905b537d4f0fe676ca5c0d85556437478688565e99b32b3037a0230cfe69d7d407d9fa5158c31540a0ab8284ec9f1c457b33ac753461bafe0b
         | 
| 7 | 
            +
              data.tar.gz: 77ae747880626efcbfdeb149ce4c1a18d4f7134a446033d6a3d66640d37ceeb5a042e3b00c24b556c5315baa90e014d91ac00781aca11aa51c1458ac71ae3ab8
         | 
    
        data/.gitignore
    ADDED
    
    | @@ -0,0 +1 @@ | |
| 1 | 
            +
            /node_modules/
         | 
    
        data/Makefile
    CHANGED
    
    | @@ -1,10 +1,9 @@ | |
| 1 1 | 
             
            VERSION := $(shell node -e "console.log(require('./package.json').version)")
         | 
| 2 2 |  | 
| 3 | 
            -
            .PHONY:  | 
| 3 | 
            +
            .PHONY: test release
         | 
| 4 4 |  | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
            	@echo "Default Make Task"
         | 
| 5 | 
            +
            test:
         | 
| 6 | 
            +
            	@./node_modules/karma/bin/karma start ./test/karma.conf.js --no-auto-watch --single-run 
         | 
| 8 7 |  | 
| 9 8 | 
             
            release:
         | 
| 10 9 | 
             
            	@git tag -m "$(VERSION)" v$(VERSION)
         | 
    
        data/README.markdown
    CHANGED
    
    
| @@ -22,7 +22,7 @@ var DeviceCommandsCtrl = function DeviceCommandsCtrl($scope, $http) { | |
| 22 22 | 
             
                    command = $scope.command,
         | 
| 23 23 | 
             
                    params = parseParams($scope.device.params);
         | 
| 24 24 |  | 
| 25 | 
            -
                var url ='/robots/' + robot + "/devices/" + device + "/commands/" + command;
         | 
| 25 | 
            +
                var url ='/api/robots/' + robot + "/devices/" + device + "/commands/" + command;
         | 
| 26 26 |  | 
| 27 27 | 
             
                $http.post(url, params).success(function(data) {
         | 
| 28 28 | 
             
                  if (data.result) {
         | 
| @@ -9,7 +9,7 @@ var DeviceEventsCtrl = function DeviceEventsCtrl($scope, $filter) { | |
| 9 9 | 
             
                    device = $scope.device.name,
         | 
| 10 10 | 
             
                    event = $scope.eventName;
         | 
| 11 11 |  | 
| 12 | 
            -
                var uri = "/robots/" + robot + "/devices/" + device + "/events/" + event;
         | 
| 12 | 
            +
                var uri = "/api/robots/" + robot + "/devices/" + device + "/events/" + event;
         | 
| 13 13 | 
             
                var $device = $scope.device;
         | 
| 14 14 | 
             
                var source = new EventSource(uri);
         | 
| 15 15 |  | 
| @@ -7,7 +7,6 @@ var RobotCommandsCtrl = function RobotCommandsCtrl($scope, $http) { | |
| 7 7 | 
             
              };
         | 
| 8 8 |  | 
| 9 9 | 
             
              $scope.addParam = function(last) {
         | 
| 10 | 
            -
                console.log("HEY");
         | 
| 11 10 | 
             
                if (!last) { return; }
         | 
| 12 11 | 
             
                $scope.robot.params.push({ name: '', value: '', type: 'string' });
         | 
| 13 12 | 
             
              };
         | 
| @@ -22,7 +21,7 @@ var RobotCommandsCtrl = function RobotCommandsCtrl($scope, $http) { | |
| 22 21 | 
             
                    command = $scope.command,
         | 
| 23 22 | 
             
                    params = parseParams($scope.robot.params);
         | 
| 24 23 |  | 
| 25 | 
            -
                var url ='/robots/' + robot + "/commands/" + command;
         | 
| 24 | 
            +
                var url ='/api/robots/' + robot + "/commands/" + command;
         | 
| 26 25 |  | 
| 27 26 | 
             
                $http.post(url, params).success(function(data) {
         | 
| 28 27 | 
             
                  if (data.result) {
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            var RobotCtrl = function RobotCtrl($scope, $http, $routeParams) {
         | 
| 2 | 
            -
              $http.get("/robots/" + $routeParams.robot).success(function(data) {
         | 
| 3 | 
            -
                $scope.robot = data;
         | 
| 2 | 
            +
              $http.get("/api/robots/" + $routeParams.robot).success(function(data) {
         | 
| 3 | 
            +
                $scope.robot = data.robot;
         | 
| 4 4 |  | 
| 5 5 | 
             
                $scope.robot.params = [ { name: '', value: '', type: 'string' } ];
         | 
| 6 6 | 
             
                $scope.robot.results = [];
         | 
    
        data/package.json
    CHANGED
    
    | @@ -1,16 +1,18 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "robeaux",
         | 
| 3 | 
            -
              "version": "0. | 
| 4 | 
            -
              "description": "An AngularJS interface for the  | 
| 3 | 
            +
              "version": "0.2.0",
         | 
| 4 | 
            +
              "description": "An AngularJS interface for the CPPP-IO API spec",
         | 
| 5 5 | 
             
              "homepage": "http://cylonjs.com",
         | 
| 6 | 
            -
              "bugs": "https://github.com/hybridgroup/ | 
| 7 | 
            -
             | 
| 6 | 
            +
              "bugs": "https://github.com/hybridgroup/robeaux/issues",
         | 
| 8 7 | 
             
              "author": "The Hybrid Group <cylonjs@hybridgroup.com>",
         | 
| 9 | 
            -
             | 
| 10 8 | 
             
              "repository": {
         | 
| 11 9 | 
             
                "type": "git",
         | 
| 12 10 | 
             
                "url": "https://github.com/hybridgroup/robeaux"
         | 
| 13 11 | 
             
              },
         | 
| 14 | 
            -
             | 
| 15 | 
            -
              " | 
| 12 | 
            +
              "license": "Apache 2.0",
         | 
| 13 | 
            +
              "devDependencies": {
         | 
| 14 | 
            +
                "karma": "~0.12.16",
         | 
| 15 | 
            +
                "karma-phantomjs-launcher": "~0.1",
         | 
| 16 | 
            +
                "karma-jasmine": "~0.1.5"
         | 
| 17 | 
            +
              }
         | 
| 16 18 | 
             
            }
         | 
    
        data/partials/robot.html
    CHANGED
    
    
    
        data/robeaux.gemspec
    CHANGED
    
    | @@ -2,13 +2,13 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            Gem::Specification.new do |s|
         | 
| 4 4 | 
             
              s.name        = "robeaux"
         | 
| 5 | 
            -
              s.version     = "0. | 
| 5 | 
            +
              s.version     = "0.2.0"
         | 
| 6 6 | 
             
              s.platform    = Gem::Platform::RUBY
         | 
| 7 7 | 
             
              s.authors     = ["Ron Evans", "Adrian Zankich", "Ari Lerner", "Mario Ricalde", "Daniel Fischer", "Andrew Stewart"]
         | 
| 8 8 | 
             
              s.email       = ["artoo@hybridgroup.com"]
         | 
| 9 9 | 
             
              s.homepage    = "https://github.com/hybridgroup/robeaux"
         | 
| 10 | 
            -
              s.summary     = %q{Angular-based front end for  | 
| 11 | 
            -
              s.description = %q{Angular-based front end for  | 
| 10 | 
            +
              s.summary     = %q{Angular-based front end for the CPPP-IO API spec}
         | 
| 11 | 
            +
              s.description = %q{Angular-based front end for the CPPP-IO API spec}
         | 
| 12 12 | 
             
              s.license     = 'Apache 2.0'
         | 
| 13 13 |  | 
| 14 14 | 
             
              s.rubyforge_project = "robeaux"
         | 
    
        data/test/karma.conf.js
    ADDED
    
    | @@ -0,0 +1,80 @@ | |
| 1 | 
            +
            // Karma configuration
         | 
| 2 | 
            +
            // Generated on Tue Jul 01 2014 13:33:46 GMT-0700 (PDT)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module.exports = function(config) {
         | 
| 5 | 
            +
              config.set({
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                // base path that will be used to resolve all patterns (eg. files, exclude)
         | 
| 8 | 
            +
                basePath: '../',
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                // frameworks to use
         | 
| 11 | 
            +
                // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
         | 
| 12 | 
            +
                frameworks: ['jasmine'],
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                // list of files / patterns to load in the browser
         | 
| 15 | 
            +
                files: [
         | 
| 16 | 
            +
                  'js/vendor/angular.min.js',
         | 
| 17 | 
            +
                  'js/vendor/angular-route.min.js',
         | 
| 18 | 
            +
                  'test/vendor/angular-mocks.js',
         | 
| 19 | 
            +
                  'test/vendor/jquery.js',
         | 
| 20 | 
            +
                  'test/vendor/jasmine-jquery.js',
         | 
| 21 | 
            +
                  'js/app.js',
         | 
| 22 | 
            +
                  'js/router.js',
         | 
| 23 | 
            +
                  'js/*.js',
         | 
| 24 | 
            +
                  'js/**/*.js',
         | 
| 25 | 
            +
                  'test/main.js',
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  {pattern: 'test/support/robots.json', watched: true, served: true, included: false},
         | 
| 28 | 
            +
                  {pattern: 'test/support/myRobot.json', watched: true, served: true, included: false},
         | 
| 29 | 
            +
                  {pattern: 'test/support/myDevice.json', watched: true, served: true, included: false}
         | 
| 30 | 
            +
                ],
         | 
| 31 | 
            +
             | 
| 32 | 
            +
             | 
| 33 | 
            +
             | 
| 34 | 
            +
                // list of files to exclude
         | 
| 35 | 
            +
                exclude: [
         | 
| 36 | 
            +
                  
         | 
| 37 | 
            +
                ],
         | 
| 38 | 
            +
             | 
| 39 | 
            +
             | 
| 40 | 
            +
                // preprocess matching files before serving them to the browser
         | 
| 41 | 
            +
                // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
         | 
| 42 | 
            +
                preprocessors: {
         | 
| 43 | 
            +
                
         | 
| 44 | 
            +
                },
         | 
| 45 | 
            +
             | 
| 46 | 
            +
             | 
| 47 | 
            +
                // test results reporter to use
         | 
| 48 | 
            +
                // possible values: 'dots', 'progress'
         | 
| 49 | 
            +
                // available reporters: https://npmjs.org/browse/keyword/karma-reporter
         | 
| 50 | 
            +
                reporters: ['progress'],
         | 
| 51 | 
            +
             | 
| 52 | 
            +
             | 
| 53 | 
            +
                // web server port
         | 
| 54 | 
            +
                port: 9000,
         | 
| 55 | 
            +
             | 
| 56 | 
            +
             | 
| 57 | 
            +
                // enable / disable colors in the output (reporters and logs)
         | 
| 58 | 
            +
                colors: true,
         | 
| 59 | 
            +
             | 
| 60 | 
            +
             | 
| 61 | 
            +
                // level of logging
         | 
| 62 | 
            +
                // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
         | 
| 63 | 
            +
                logLevel: config.LOG_INFO,
         | 
| 64 | 
            +
             | 
| 65 | 
            +
             | 
| 66 | 
            +
                // enable / disable watching file and executing tests whenever any file changes
         | 
| 67 | 
            +
                autoWatch: true,
         | 
| 68 | 
            +
             | 
| 69 | 
            +
             | 
| 70 | 
            +
                // start these browsers
         | 
| 71 | 
            +
                // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
         | 
| 72 | 
            +
                browsers: ['PhantomJS'],
         | 
| 73 | 
            +
             | 
| 74 | 
            +
             | 
| 75 | 
            +
                // Continuous Integration mode
         | 
| 76 | 
            +
                // if true, Karma captures browsers, runs the tests and exits
         | 
| 77 | 
            +
                singleRun: true
         | 
| 78 | 
            +
             
         | 
| 79 | 
            +
              });
         | 
| 80 | 
            +
            };
         | 
    
        data/test/main.js
    ADDED
    
    | @@ -0,0 +1,248 @@ | |
| 1 | 
            +
            describe('IndexCtrl', function() {
         | 
| 2 | 
            +
                var $scope, $rootScope, $httpBackend, $timeout, testController;
         | 
| 3 | 
            +
                beforeEach(inject(function($injector) {
         | 
| 4 | 
            +
                    $timeout = $injector.get('$timeout');
         | 
| 5 | 
            +
                    $httpBackend = $injector.get('$httpBackend');
         | 
| 6 | 
            +
                    $rootScope = $injector.get('$rootScope');
         | 
| 7 | 
            +
                    $scope = $rootScope.$new();
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    var $controller = $injector.get('$controller');
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    testController = function() {
         | 
| 12 | 
            +
                        return $controller('IndexCtrl', {
         | 
| 13 | 
            +
                            '$scope': $scope
         | 
| 14 | 
            +
                        });
         | 
| 15 | 
            +
                    };
         | 
| 16 | 
            +
                }));
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                afterEach(function() {
         | 
| 19 | 
            +
                    $httpBackend.verifyNoOutstandingExpectation();
         | 
| 20 | 
            +
                    $httpBackend.verifyNoOutstandingRequest();
         | 
| 21 | 
            +
                });
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                it('IndexCtrl should get array of robots', function() {
         | 
| 24 | 
            +
                    var controller = testController();
         | 
| 25 | 
            +
                    jasmine.getJSONFixtures().fixturesPath='base/test/support';
         | 
| 26 | 
            +
                    var data = loadJSONFixtures('robots.json')['robots.json'];
         | 
| 27 | 
            +
                    $httpBackend.expect('GET', '/api/robots').respond(data);
         | 
| 28 | 
            +
                    $httpBackend.flush();
         | 
| 29 | 
            +
                    expect($scope.robots).toEqual(data.robots);
         | 
| 30 | 
            +
                });
         | 
| 31 | 
            +
            });
         | 
| 32 | 
            +
             | 
| 33 | 
            +
            describe('RobotCtrl', function() {
         | 
| 34 | 
            +
                beforeEach(module('robeaux'));
         | 
| 35 | 
            +
                var $scope, $rootScope, $httpBackend, $timeout, $routeParams, testController;
         | 
| 36 | 
            +
                beforeEach(inject(function($injector) {
         | 
| 37 | 
            +
                    $timeout = $injector.get('$timeout');
         | 
| 38 | 
            +
                    $httpBackend = $injector.get('$httpBackend');
         | 
| 39 | 
            +
                    $rootScope = $injector.get('$rootScope');
         | 
| 40 | 
            +
                    $routeParams = $injector.get('$routeParams');
         | 
| 41 | 
            +
                    $scope = $rootScope.$new();
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                    var $controller = $injector.get('$controller');
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                    testController = function() {
         | 
| 46 | 
            +
                        return $controller('RobotCtrl', {
         | 
| 47 | 
            +
                            '$scope': $scope
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                        });
         | 
| 50 | 
            +
                    };
         | 
| 51 | 
            +
                    var controller = testController();
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                    jasmine.getJSONFixtures().fixturesPath='base/test/support';
         | 
| 54 | 
            +
                    $httpBackend.expect('GET', '/api/robots/' + $routeParams.robot).respond(loadJSONFixtures('myRobot.json')['myRobot.json']);
         | 
| 55 | 
            +
                    $httpBackend.flush();
         | 
| 56 | 
            +
             | 
| 57 | 
            +
                }));
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                afterEach(function() {
         | 
| 60 | 
            +
                    $httpBackend.verifyNoOutstandingExpectation();
         | 
| 61 | 
            +
                    $httpBackend.verifyNoOutstandingRequest();
         | 
| 62 | 
            +
                });
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                it('RobotCtrl should get robot data', function() {
         | 
| 65 | 
            +
                    var data = loadJSONFixtures('myRobot.json')['myRobot.json'];
         | 
| 66 | 
            +
                    data.robot.params = [ { name: '', value: '', type: 'string' } ];
         | 
| 67 | 
            +
                    data.robot.results = [];
         | 
| 68 | 
            +
                    expect($scope.robot).toEqual(data.robot);
         | 
| 69 | 
            +
                });
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                it('RobotCtrl should select device', function (){
         | 
| 72 | 
            +
                    var robotArray= [{"name": "robo1"},{"name":"robo2"}];
         | 
| 73 | 
            +
                    $scope.robot = robotArray;
         | 
| 74 | 
            +
                    $scope.select($scope.robot[1]);
         | 
| 75 | 
            +
                    expect($scope.robot[1]).toEqual($scope.device);
         | 
| 76 | 
            +
                    expect($scope.robot[0]).toNotEqual($scope.device);
         | 
| 77 | 
            +
                });
         | 
| 78 | 
            +
             | 
| 79 | 
            +
             | 
| 80 | 
            +
                it('RobotCtrl should keep device selected', function (){
         | 
| 81 | 
            +
                    var robotArray= [{"name": "robo1"},{"name":"robo2"}];
         | 
| 82 | 
            +
                    $scope.robot = robotArray;
         | 
| 83 | 
            +
                    $scope.select($scope.robot);
         | 
| 84 | 
            +
                    expect($scope.selected($scope.robot)).toBeTruthy();
         | 
| 85 | 
            +
                });
         | 
| 86 | 
            +
            });
         | 
| 87 | 
            +
             | 
| 88 | 
            +
             | 
| 89 | 
            +
             | 
| 90 | 
            +
            describe('parseParams', function(){
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                beforeEach(module('robeaux'));
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                    
         | 
| 95 | 
            +
                it('should set param name to value', function(){
         | 
| 96 | 
            +
                    var form = [
         | 
| 97 | 
            +
                        { 'name': 'bool', 'value': 'TRUE', 'type': 'boolean' },
         | 
| 98 | 
            +
                        { 'name': 'boole', 'value': 'sadg', 'type': 'boolean' },
         | 
| 99 | 
            +
                        { 'name': 'str', 'value': 'isOn', 'type': 'string' },
         | 
| 100 | 
            +
                        { 'name': 'num', 'value': 100, 'type': 'number' }
         | 
| 101 | 
            +
                    ];
         | 
| 102 | 
            +
                    var params = parseParams(form);
         | 
| 103 | 
            +
                    expect(params['num']).toEqual(100);
         | 
| 104 | 
            +
                    expect(params['bool']).toEqual(true);
         | 
| 105 | 
            +
                    expect(params['boole']).toEqual(false);
         | 
| 106 | 
            +
                    expect(params['str']).toEqual('isOn');
         | 
| 107 | 
            +
                });
         | 
| 108 | 
            +
             | 
| 109 | 
            +
                it('should set empty params to true', function(){
         | 
| 110 | 
            +
                    var form = [
         | 
| 111 | 
            +
                        { 'name': '', 'value': '', 'type': 'boolean' },
         | 
| 112 | 
            +
                        { 'name': '21', 'value': '12','type': 'boolean' },
         | 
| 113 | 
            +
                    ];
         | 
| 114 | 
            +
                     
         | 
| 115 | 
            +
                    expect(paramsAreEmpty([form[1]])).toEqual(false);
         | 
| 116 | 
            +
                    expect(paramsAreEmpty([form[0]])).toEqual(true);
         | 
| 117 | 
            +
                });
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            });
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            describe('RobotCommandsCtrl', function() {
         | 
| 122 | 
            +
                beforeEach(module('robeaux'));
         | 
| 123 | 
            +
                var $scope, $rootScope, $httpBackend, $timeout, testController;
         | 
| 124 | 
            +
                var $injector = angular.injector(['robeaux', 'ng']);
         | 
| 125 | 
            +
                beforeEach(inject(function($injector) {
         | 
| 126 | 
            +
                    $timeout = $injector.get('$timeout');
         | 
| 127 | 
            +
                    $httpBackend = $injector.get('$httpBackend');
         | 
| 128 | 
            +
                    $rootScope = $injector.get('$rootScope');
         | 
| 129 | 
            +
                    $scope = $rootScope.$new();
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                    var $controller = $injector.get('$controller');
         | 
| 132 | 
            +
             | 
| 133 | 
            +
                    testController = function() {
         | 
| 134 | 
            +
                        return $controller('RobotCommandsCtrl', {
         | 
| 135 | 
            +
                            '$scope': $scope
         | 
| 136 | 
            +
                        });
         | 
| 137 | 
            +
                    };
         | 
| 138 | 
            +
                    var controller = testController();
         | 
| 139 | 
            +
             | 
| 140 | 
            +
                    jasmine.getJSONFixtures().fixturesPath='base/test/support';
         | 
| 141 | 
            +
                    var data = loadJSONFixtures('myRobot.json')['myRobot.json'];
         | 
| 142 | 
            +
                    $scope.robot = data.robot;
         | 
| 143 | 
            +
                }));
         | 
| 144 | 
            +
             | 
| 145 | 
            +
                afterEach(function() {
         | 
| 146 | 
            +
                    $httpBackend.verifyNoOutstandingExpectation();
         | 
| 147 | 
            +
                    $httpBackend.verifyNoOutstandingRequest();
         | 
| 148 | 
            +
                });
         | 
| 149 | 
            +
             | 
| 150 | 
            +
                it('RobotCommandsCtrl command should be an empty string', function (){
         | 
| 151 | 
            +
                    $scope.command = "";
         | 
| 152 | 
            +
                    expect($scope.isDisabled()).toBe(true);
         | 
| 153 | 
            +
                });
         | 
| 154 | 
            +
             | 
| 155 | 
            +
                it('RobotCommandsCtrl should add params if last', function (){
         | 
| 156 | 
            +
                    expect($scope.robot.params.length).toBe(1)
         | 
| 157 | 
            +
                    $scope.addParam($scope.robot);
         | 
| 158 | 
            +
                    expect($scope.robot.params.length).toBe(2)
         | 
| 159 | 
            +
                });
         | 
| 160 | 
            +
             | 
| 161 | 
            +
                it('RobotCommandsCtrl command should be an empty string', function (){
         | 
| 162 | 
            +
                    expect($scope.robot.params.length).toBe(2)
         | 
| 163 | 
            +
                    $scope.removeParam($scope.robot);
         | 
| 164 | 
            +
                    expect($scope.robot.params.length).toBe(1)
         | 
| 165 | 
            +
                });
         | 
| 166 | 
            +
             | 
| 167 | 
            +
                it('RobotCommandsCtrl should get robot command results', function (){
         | 
| 168 | 
            +
                    $scope.robot.name = "myRobot";
         | 
| 169 | 
            +
                    $scope.command = "relax";
         | 
| 170 | 
            +
                    $scope.robot.params= [{'name': 'relax', 'value':'true', 'type':'string'}];
         | 
| 171 | 
            +
                    var params  = {'relax': 'true'};
         | 
| 172 | 
            +
                    var data= {'result': "myRobot says relax"};
         | 
| 173 | 
            +
             | 
| 174 | 
            +
                    $scope.submit();
         | 
| 175 | 
            +
                    $httpBackend.expectPOST('/api/robots/myRobot/commands/relax', params).respond(data);
         | 
| 176 | 
            +
                    $httpBackend.flush();
         | 
| 177 | 
            +
                    expect($scope.robot.results).toEqual([{'result': "myRobot says relax"}])
         | 
| 178 | 
            +
                });
         | 
| 179 | 
            +
            });
         | 
| 180 | 
            +
             | 
| 181 | 
            +
            describe('DeviceCommandsCtrl', function() {
         | 
| 182 | 
            +
                beforeEach(module('robeaux'));
         | 
| 183 | 
            +
                var $scope, $rootScope, $httpBackend, $timeout, testController;
         | 
| 184 | 
            +
                beforeEach(inject(function($injector) {
         | 
| 185 | 
            +
                    $timeout = $injector.get('$timeout');
         | 
| 186 | 
            +
                    $httpBackend = $injector.get('$httpBackend');
         | 
| 187 | 
            +
                    $rootScope = $injector.get('$rootScope');
         | 
| 188 | 
            +
                    $scope = $rootScope.$new();
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                    var $controller = $injector.get('$controller');
         | 
| 191 | 
            +
             | 
| 192 | 
            +
                    testController = function() {
         | 
| 193 | 
            +
                        return $controller('DeviceCommandsCtrl', {
         | 
| 194 | 
            +
                            '$scope': $scope
         | 
| 195 | 
            +
                        });
         | 
| 196 | 
            +
                    };
         | 
| 197 | 
            +
                    var controller = testController();
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                    jasmine.getJSONFixtures().fixturesPath='base/test/support';
         | 
| 200 | 
            +
             | 
| 201 | 
            +
                    var data = loadJSONFixtures('myDevice.json')['myDevice.json'];
         | 
| 202 | 
            +
             | 
| 203 | 
            +
                    $scope.device = data[0];
         | 
| 204 | 
            +
                    $scope.device.results = [];
         | 
| 205 | 
            +
                    $scope.device.params = [{ name: '', value: '', type: 'string' }];
         | 
| 206 | 
            +
                }));
         | 
| 207 | 
            +
             | 
| 208 | 
            +
                afterEach(function() {
         | 
| 209 | 
            +
                    $httpBackend.verifyNoOutstandingExpectation();
         | 
| 210 | 
            +
                    $httpBackend.verifyNoOutstandingRequest();
         | 
| 211 | 
            +
                });
         | 
| 212 | 
            +
             | 
| 213 | 
            +
                it('DeviceCommandsCtrl command should be an empty string', function (){
         | 
| 214 | 
            +
                    $scope.command = "";
         | 
| 215 | 
            +
                    expect($scope.isDisabled()).toBe(true);
         | 
| 216 | 
            +
                });
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                it('DeviceCommandsCtrl should add params if last', function (){
         | 
| 219 | 
            +
                    expect($scope.device.params.length).toBe(1)
         | 
| 220 | 
            +
                    $scope.addParam($scope.device);
         | 
| 221 | 
            +
                    expect($scope.device.params.length).toBe(2)
         | 
| 222 | 
            +
                });
         | 
| 223 | 
            +
             | 
| 224 | 
            +
                it('DeviceCommandsCtrl command should be an empty string', function (){
         | 
| 225 | 
            +
                    $scope.device.params = [
         | 
| 226 | 
            +
                      { name: '', value: '', type: 'string' },
         | 
| 227 | 
            +
                      { name: '', value: '', type: 'string' }
         | 
| 228 | 
            +
                    ];
         | 
| 229 | 
            +
                    $scope.removeParam($scope.device);
         | 
| 230 | 
            +
                    expect($scope.device.params.length).toBe(1)
         | 
| 231 | 
            +
                });
         | 
| 232 | 
            +
             | 
| 233 | 
            +
                it('DeviceCommandsCtrl command should be an empty string', function (){
         | 
| 234 | 
            +
                    $scope.robot = {'name':"myRobot"};
         | 
| 235 | 
            +
                    $scope.device.name = "led";
         | 
| 236 | 
            +
                    $scope.command = "brightness";
         | 
| 237 | 
            +
                    $scope.device.params = [{'name': 'brightness', 'value': 255, 'type':'string'}];
         | 
| 238 | 
            +
                    var params = {'brightness': 255};
         | 
| 239 | 
            +
                    var data= {'result': "brightness is 255"};
         | 
| 240 | 
            +
             | 
| 241 | 
            +
                    $scope.submit();
         | 
| 242 | 
            +
                    $httpBackend.expectPOST('/api/robots/myRobot/devices/led/commands/brightness', params).respond(data);
         | 
| 243 | 
            +
                    $httpBackend.flush();
         | 
| 244 | 
            +
                    expect($scope.device.results[0]).toEqual({'result': "brightness is 255"})
         | 
| 245 | 
            +
                });
         | 
| 246 | 
            +
             | 
| 247 | 
            +
            });
         | 
| 248 | 
            +
             | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            [
         | 
| 2 | 
            +
              {
         | 
| 3 | 
            +
                "commands": [ "isOn", "turnOn", "turnOff", "toggle", "brightness" ],
         | 
| 4 | 
            +
                "connection": "arduino",
         | 
| 5 | 
            +
                "driver": "Led",
         | 
| 6 | 
            +
                "name": "led",
         | 
| 7 | 
            +
                "pin": 3
         | 
| 8 | 
            +
              }, {
         | 
| 9 | 
            +
                "commands": [ "isPressed" ],
         | 
| 10 | 
            +
                "connection": "arduino",
         | 
| 11 | 
            +
                "driver": "Button",
         | 
| 12 | 
            +
                "name": "button",
         | 
| 13 | 
            +
                "pin": 2
         | 
| 14 | 
            +
              }
         | 
| 15 | 
            +
            ]
         | 
| @@ -0,0 +1,31 @@ | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
              "robot": {
         | 
| 3 | 
            +
                "name": "myRobot",
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                "connections": [
         | 
| 6 | 
            +
                  {
         | 
| 7 | 
            +
                    "adaptor": "Adaptor",
         | 
| 8 | 
            +
                    "name": "arduino",
         | 
| 9 | 
            +
                    "port": "/dev/ttyACM0"
         | 
| 10 | 
            +
                  }
         | 
| 11 | 
            +
                ],
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                "devices": [
         | 
| 14 | 
            +
                  {
         | 
| 15 | 
            +
                    "commands": [ "isOn", "turnOn", "turnOff", "toggle", "brightness" ],
         | 
| 16 | 
            +
                    "connection": "arduino",
         | 
| 17 | 
            +
                    "driver": "Led",
         | 
| 18 | 
            +
                    "name": "led",
         | 
| 19 | 
            +
                    "pin": 13
         | 
| 20 | 
            +
                  }, {
         | 
| 21 | 
            +
                    "commands": [ "isPressed" ],
         | 
| 22 | 
            +
                    "connection": "arduino",
         | 
| 23 | 
            +
                    "driver": "Button",
         | 
| 24 | 
            +
                    "name": "button",
         | 
| 25 | 
            +
                    "pin": 2
         | 
| 26 | 
            +
                  }
         | 
| 27 | 
            +
                ],
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                "commands": []
         | 
| 30 | 
            +
              }
         | 
| 31 | 
            +
            }
         | 
| @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            {
         | 
| 2 | 
            +
              "robots": [
         | 
| 3 | 
            +
                {
         | 
| 4 | 
            +
                  "name": "myRobot",
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                  "connections": [
         | 
| 7 | 
            +
                    {
         | 
| 8 | 
            +
                      "adaptor": "Adaptor",
         | 
| 9 | 
            +
                      "name": "arduino",
         | 
| 10 | 
            +
                      "port": "/dev/ttyACM0"
         | 
| 11 | 
            +
                    }
         | 
| 12 | 
            +
                  ],
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  "devices": [
         | 
| 15 | 
            +
                    {
         | 
| 16 | 
            +
                      "commands": [ "isOn", "turnOn", "turnOff", "toggle", "brightness" ],
         | 
| 17 | 
            +
                      "connection": "arduino",
         | 
| 18 | 
            +
                      "driver": "Led",
         | 
| 19 | 
            +
                      "name": "led",
         | 
| 20 | 
            +
                      "pin": 13
         | 
| 21 | 
            +
                    }, {
         | 
| 22 | 
            +
                      "commands": [ "isPressed" ],
         | 
| 23 | 
            +
                      "connection": "arduino",
         | 
| 24 | 
            +
                      "driver": "Button",
         | 
| 25 | 
            +
                      "name": "button",
         | 
| 26 | 
            +
                      "pin": 2
         | 
| 27 | 
            +
                    }
         | 
| 28 | 
            +
                  ],
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  "commands": []
         | 
| 31 | 
            +
                }
         | 
| 32 | 
            +
              ]
         | 
| 33 | 
            +
            }
         |