Added Models App, Installation Batch Installation

This commit is contained in:
Ernest Sankeshwar
2015-11-13 15:03:29 +00:00
parent cffea0c31d
commit 5a81168161
15 changed files with 147 additions and 1 deletions

4
app/models/app.rb Normal file
View File

@@ -0,0 +1,4 @@
class App < ActiveRecord::Base
validates :name, :package_name, presence: true
end

View File

@@ -0,0 +1,3 @@
class BatchInstallation < ActiveRecord::Base
belongs_to :app
end

View File

@@ -0,0 +1,9 @@
class Installation < ActiveRecord::Base
enum status: [:pushed, :downloaded, :cancelled, :installed]
belongs_to :device
belongs_to :batch_installation
end

View File

@@ -0,0 +1,10 @@
class CreateApplications < ActiveRecord::Migration
def change
create_table :applications do |t|
t.string :name
t.string :package_name
t.timestamps null: false
end
end
end

View File

@@ -0,0 +1,5 @@
class RenameApplicationToApp < ActiveRecord::Migration
def change
rename_table :applications, :apps
end
end

View File

@@ -0,0 +1,9 @@
class CreateBatchInstallations < ActiveRecord::Migration
def change
create_table :batch_installations do |t|
t.integer :app_id
t.timestamps null: false
end
end
end

View File

@@ -0,0 +1,11 @@
class CreateInstallations < ActiveRecord::Migration
def change
create_table :installations do |t|
t.integer :device_id
t.integer :batch_installation_id
t.integer :status
t.timestamps null: false
end
end
end

View File

@@ -0,0 +1,5 @@
class ChangeStatusDataTypeFromStringToIntegerInInstallation < ActiveRecord::Migration
def change
change_column :installations, :status, :integer
end
end

View File

@@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20151113095735) do ActiveRecord::Schema.define(version: 20151113140645) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"
@@ -49,6 +49,19 @@ ActiveRecord::Schema.define(version: 20151113095735) do
add_index "admin_users", ["email"], name: "index_admin_users_on_email", unique: true, using: :btree add_index "admin_users", ["email"], name: "index_admin_users_on_email", unique: true, using: :btree
add_index "admin_users", ["reset_password_token"], name: "index_admin_users_on_reset_password_token", unique: true, using: :btree add_index "admin_users", ["reset_password_token"], name: "index_admin_users_on_reset_password_token", unique: true, using: :btree
create_table "apps", force: :cascade do |t|
t.string "name"
t.string "package_name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "batch_installations", force: :cascade do |t|
t.integer "app_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "devices", force: :cascade do |t| create_table "devices", force: :cascade do |t|
t.string "model" t.string "model"
t.string "unique_id" t.string "unique_id"
@@ -69,5 +82,13 @@ ActiveRecord::Schema.define(version: 20151113095735) do
add_index "heartbeats", ["device_id"], name: "index_heartbeats_on_device_id", using: :btree add_index "heartbeats", ["device_id"], name: "index_heartbeats_on_device_id", using: :btree
create_table "installations", force: :cascade do |t|
t.integer "device_id"
t.integer "batch_installation_id"
t.integer "status"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_foreign_key "heartbeats", "devices" add_foreign_key "heartbeats", "devices"
end end

7
spec/factories/app.rb Normal file
View File

@@ -0,0 +1,7 @@
FactoryGirl.define do
factory :app do
name "My Ultimate Application"
package_name "my.ultimate.application"
end
end

View File

@@ -0,0 +1,6 @@
FactoryGirl.define do
factory :batch_installation do
app_id 1
end
end

View File

@@ -0,0 +1,8 @@
FactoryGirl.define do
factory :installation do
device_id 1
batch_installation_id 1
status 1
end
end

11
spec/models/app.rb Normal file
View File

@@ -0,0 +1,11 @@
require 'rails_helper'
RSpec.describe App, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
let!(:app) { create(:app) }
it { should validate_presence_of :name }
it { should validate_presence_of :package_name }
end

View File

@@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe BatchInstallation, type: :model do
it {should belong_to(:app)}
end

View File

@@ -0,0 +1,32 @@
require 'rails_helper'
RSpec.describe Installation, type: :model do
it { should belong_to(:device) }
it { should belong_to(:batch_installation) }
# Create Installation Model [Device ID, batch installation ID, status(Pushed, Downloaded, Cancelled, Installed)]
describe "Installation status" do
let!(:installation){FactoryGirl.create(:installation)}
it "Pushed" do
installation.pushed!
expect(installation.status).to eql Installation.statuses.keys[0]
end
it "Downloaded" do
installation.downloaded!
expect(installation.status).to eql Installation.statuses.keys[1]
end
it "Cancelled" do
installation.cancelled!
expect(installation.status).to eql Installation.statuses.keys[2]
end
it "Installed" do
installation.installed!
expect(installation.status).to eql Installation.statuses.keys[3]
end
end
end