| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- SandboxedModule = require('sandboxed-module')
- sinon = require 'sinon'
- should = require("chai").should()
- modulePath = '../../../../app/js/Features/Subscription/SubscriptionViewModelBuilder'
- describe 'SubscriptionViewModelBuilder', ->
- mockSubscription =
- uuid: "subscription-123-active"
- plan:
- name: "Gold"
- plan_code: "gold"
- current_period_ends_at: new Date()
- state: "active"
- unit_amount_in_cents: 999
- account:
- account_code: "user-123"
- beforeEach ->
- @user =
- email:"tom@yahoo.com",
- _id: 'one',
- signUpDate: new Date('2000-10-01')
- @plan =
- name: "test plan"
- @SubscriptionFormatters =
- formatDate: sinon.stub().returns("Formatted date")
- formatPrice: sinon.stub().returns("Formatted price")
- @RecurlyWrapper =
- sign: sinon.stub().callsArgWith(1, null, "something")
- getSubscription: sinon.stub().callsArgWith 2, null,
- account:
- hosted_login_token: "hosted_login_token"
- @builder = SandboxedModule.require modulePath, requires:
- "settings-sharelatex": { apis: { recurly: { subdomain: "example.com" }}}
- "./RecurlyWrapper": @RecurlyWrapper
- "./PlansLocator": @PlansLocator = {}
- "./SubscriptionLocator": @SubscriptionLocator = {}
- "./SubscriptionFormatters": @SubscriptionFormatters
- "./LimitationsManager": {}
- "./V1SubscriptionManager": @V1SubscriptionManager = {}
- "logger-sharelatex":
- log:->
- warn:->
- "underscore": {}
- @PlansLocator.findLocalPlanInSettings = sinon.stub().returns(@plan)
- @SubscriptionLocator.getUsersSubscription = sinon.stub().callsArgWith(1, null, mockSubscription)
- @SubscriptionLocator.getMemberSubscriptions = sinon.stub().callsArgWith(1, null, null)
- @V1SubscriptionManager.getSubscriptionsFromV1 = sinon.stub().yields(null, @mockV1Sub = ['mock-v1-subs'])
- it 'builds the user view model', ->
- callback = (error, subscription, memberSubscriptions, billingDetailsLink, v1Sub) =>
- @error = error
- @subscription = subscription
- @memberSubscriptions = memberSubscriptions
- @billingDetailsLink = billingDetailsLink
- @v1Sub = v1Sub
- @builder.buildUsersSubscriptionViewModel(@user, callback)
- @subscription.name.should.eq 'test plan'
- @subscription.nextPaymentDueAt.should.eq 'Formatted date'
- @subscription.price.should.eq 'Formatted price'
- @billingDetailsLink.should.eq "https://example.com.recurly.com/account/billing_info/edit?ht=hosted_login_token"
- @v1Sub.should.deep.equal @mockV1Sub
|