mirror of
				https://github.com/advplyr/audiobookshelf.git
				synced 2025-11-03 19:07:00 -05:00 
			
		
		
		
	* Adds share download endpoint * Adds Downloadable toggle to share modal --------- Co-authored-by: advplyr <advplyr@protonmail.com>
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const chai = require('chai')
 | 
						|
const sinon = require('sinon')
 | 
						|
const { expect } = chai
 | 
						|
 | 
						|
const { DataTypes } = require('sequelize')
 | 
						|
 | 
						|
const { up, down } = require('../../../server/migrations/v2.17.6-share-add-isdownloadable')
 | 
						|
 | 
						|
describe('Migration v2.17.6-share-add-isDownloadable', () => {
 | 
						|
  let queryInterface, logger
 | 
						|
 | 
						|
  beforeEach(() => {
 | 
						|
    queryInterface = {
 | 
						|
      addColumn: sinon.stub().resolves(),
 | 
						|
      removeColumn: sinon.stub().resolves(),
 | 
						|
      tableExists: sinon.stub().resolves(true),
 | 
						|
      describeTable: sinon.stub().resolves({ isDownloadable: undefined }),
 | 
						|
      sequelize: {
 | 
						|
        Sequelize: {
 | 
						|
          DataTypes: {
 | 
						|
            BOOLEAN: DataTypes.BOOLEAN
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    logger = {
 | 
						|
      info: sinon.stub(),
 | 
						|
      error: sinon.stub()
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  describe('up', () => {
 | 
						|
    it('should add the isDownloadable column to mediaItemShares table', async () => {
 | 
						|
      await up({ context: { queryInterface, logger } })
 | 
						|
 | 
						|
      expect(queryInterface.addColumn.calledOnce).to.be.true
 | 
						|
      expect(
 | 
						|
        queryInterface.addColumn.calledWith('mediaItemShares', 'isDownloadable', {
 | 
						|
          type: DataTypes.BOOLEAN,
 | 
						|
          defaultValue: false,
 | 
						|
          allowNull: false
 | 
						|
        })
 | 
						|
      ).to.be.true
 | 
						|
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] UPGRADE BEGIN: 2.17.6-share-add-isdownloadable')).to.be.true
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] Adding isDownloadable column to mediaItemShares table')).to.be.true
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] Added isDownloadable column to mediaItemShares table')).to.be.true
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] UPGRADE END: 2.17.6-share-add-isdownloadable')).to.be.true
 | 
						|
    })
 | 
						|
  })
 | 
						|
 | 
						|
  describe('down', () => {
 | 
						|
    it('should remove the isDownloadable column from mediaItemShares table', async () => {
 | 
						|
      queryInterface.describeTable.resolves({ isDownloadable: true })
 | 
						|
 | 
						|
      await down({ context: { queryInterface, logger } })
 | 
						|
 | 
						|
      expect(queryInterface.removeColumn.calledOnce).to.be.true
 | 
						|
      expect(queryInterface.removeColumn.calledWith('mediaItemShares', 'isDownloadable')).to.be.true
 | 
						|
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] DOWNGRADE BEGIN: 2.17.6-share-add-isdownloadable')).to.be.true
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] Removing isDownloadable column from mediaItemShares table')).to.be.true
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] Removed isDownloadable column from mediaItemShares table')).to.be.true
 | 
						|
      expect(logger.info.calledWith('[2.17.6 migration] DOWNGRADE END: 2.17.6-share-add-isdownloadable')).to.be.true
 | 
						|
    })
 | 
						|
  })
 | 
						|
})
 |