summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/company.rb8
-rw-r--r--app/models/license.rb2
-rw-r--r--db/migrate/20140221134937_create_companies.rb8
-rw-r--r--db/migrate/20140221135224_add_active_range_to_licenses.rb7
-rw-r--r--db/schema.rb11
-rw-r--r--spec/models/company_spec.rb17
6 files changed, 51 insertions, 2 deletions
diff --git a/app/models/company.rb b/app/models/company.rb
index bff819b..0959d4d 100644
--- a/app/models/company.rb
+++ b/app/models/company.rb
@@ -1,2 +1,8 @@
-class Company
+class Company < ActiveRecord::Base
+ has_many :licenses
+
+ def status(status)
+ today = DateTime.now
+ licenses.where('issued_at < ? AND expired_at > ?', today, today)
+ end
end
diff --git a/app/models/license.rb b/app/models/license.rb
index 8eb7612..d1ce61d 100644
--- a/app/models/license.rb
+++ b/app/models/license.rb
@@ -1,4 +1,6 @@
class License < ActiveRecord::Base
+ belongs_to :company
+
def self.most_recent(page: 1, per_page: 10)
offset = (page - 1) * per_page
offset = offset >= 0 ? offset : 0
diff --git a/db/migrate/20140221134937_create_companies.rb b/db/migrate/20140221134937_create_companies.rb
new file mode 100644
index 0000000..b2fc820
--- /dev/null
+++ b/db/migrate/20140221134937_create_companies.rb
@@ -0,0 +1,8 @@
+class CreateCompanies < ActiveRecord::Migration
+ def change
+ create_table :companies, id: :uuid do |t|
+ t.string :name
+ t.timestamps
+ end
+ end
+end
diff --git a/db/migrate/20140221135224_add_active_range_to_licenses.rb b/db/migrate/20140221135224_add_active_range_to_licenses.rb
new file mode 100644
index 0000000..6342f61
--- /dev/null
+++ b/db/migrate/20140221135224_add_active_range_to_licenses.rb
@@ -0,0 +1,7 @@
+class AddActiveRangeToLicenses < ActiveRecord::Migration
+ def change
+ add_column :licenses, :issued_at, :datetime, default: nil
+ add_column :licenses, :expired_at, :datetime, default: nil
+ add_column :licenses, :company_id, :uuid
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index ace9922..b359b4b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -11,15 +11,24 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20140221025310) do
+ActiveRecord::Schema.define(version: 20140221135224) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
enable_extension "uuid-ossp"
+ create_table "companies", id: :uuid, default: "uuid_generate_v4()", force: true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
create_table "licenses", id: :uuid, default: "uuid_generate_v4()", force: true do |t|
t.datetime "created_at"
t.datetime "updated_at"
+ t.datetime "issued_at"
+ t.datetime "expired_at"
+ t.uuid "company_id"
end
end
diff --git a/spec/models/company_spec.rb b/spec/models/company_spec.rb
new file mode 100644
index 0000000..f9e0a61
--- /dev/null
+++ b/spec/models/company_spec.rb
@@ -0,0 +1,17 @@
+require "spec_helper"
+
+describe Company do
+ describe ".status" do
+ let(:company) { Company.create }
+ let(:today) { DateTime.now }
+ let(:active_license) { company.licenses.create(issued_at: 1.day.ago, expired_at: 1.day.from_now) }
+ let(:expired_license) { company.licenses.create(issued_at: 2.days.ago, expired_at: 1.day.ago ) }
+ let(:pending_license) { company.licenses.create(issued_at: 2.days.from_now, expired_at: 3.days.from_now ) }
+
+ it "returns all the licenses that are active" do
+ licenses = company.status(LicenseStatus::ACTIVE)
+ licenses.count.should == 0
+ licenses.should include(active_license)
+ end
+ end
+end