<commit_before>if(typeof require === 'function') {
  const buster    = require("buster")
      , Sequelize = require("../../index")
      , config    = require("../config/config")
      , sequelize = new Sequelize(config.database, config.username, config.password, {logging: false})
}

buster.spec.expose()
buster.testRunner.timeout = 500

describe('Testing \'has\' function', function() {
  before(function(done) {
    var self = this

    sequelize
      .getQueryInterface()
      .dropAllTables()
      .success(function() {
        done()
      })
      .error(function(err) { console.log(err) })
  }),
  
  describe('using Article and Labels', function() {
    before(function(done) {
      var self = this
      
      this.Article = sequelize.define('Article', {
        'title': Sequelize.STRING
      }, {
        instanceMethods: {
          item_key: 'article'
        }        
      })
      this.Label = sequelize.define('Label', {
        'text': Sequelize.STRING
      })
      
      this.Article.hasMany(this.Label);
      
      this.Article.sync({ force: true }).success(function() {
        self.Label.sync({ force: true }).success(done).error(function(err) {
          console.log(err)
        })
      }).error(function(err) {
        console.log(err)
      })
    }),
    
	 describe('hasSingle', function() {
		it('does not have any labels assigned to it initially', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.hasLabel(label1).success(function(result) {
							expect(result).toBeFalse();
							
							article.hasLabel(label2).success(function(result) {
								expect(result).toBeFalse();
								done();
							});
						});
					});
				});
			});
		 }),
		 
		 it('only answers true if the label has been assigned', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.addLabel(label1).success(function() {
							article.hasLabel(label1).success(function(result) {
								expect(result).toBeTrue();
								
								article.hasLabel(label2).success(function(result) {
									expect(result).toBeFalse();
									done();
								});
							});
						})
					});
				});
			});
		 })
	 }),
	 
	 describe('hasAll', function() {
		it('answers false if only some labels have been assigned', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.addLabel(label1).success(function() {
							article.hasLabels([label1, label2]).success(function(result) {
								expect(result).toBeFalse();
								done();
							});
						})
					});
				});
			});
		 }),
		 
		it('answers true if all label have been assigned', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.setLabels([label1, label2]).success(function() {
							article.hasLabels([label1, label2]).success(function(result) {
								expect(result).toBeTrue();
								done();
							});
						})
					});
				});
			});
		 })
	 });
  })
})<commit_msg>added hasSingle and hasAll functions to DAO<commit_after>if(typeof require === 'function') {
  const buster    = require("buster")
      , Sequelize = require("../../index")
      , config    = require("../config/config")
      , sequelize = new Sequelize(config.database, config.username, config.password, {logging: false})
}

buster.spec.expose()
buster.testRunner.timeout = 500

describe('Testing \'has\' function', function() {
  before(function(done) {
    var self = this

    sequelize
      .getQueryInterface()
      .dropAllTables()
      .success(function() {
        done()
      })
      .error(function(err) { console.log(err) })
  }),
  
  describe('using Article and Labels', function() {
    before(function(done) {
      var self = this
      
      this.Article = sequelize.define('Article', {
        'title': Sequelize.STRING
      })
      this.Label = sequelize.define('Label', {
        'text': Sequelize.STRING
      })
      
      this.Article.hasMany(this.Label);
      
      this.Article.sync({ force: true }).success(function() {
        self.Label.sync({ force: true }).success(done).error(function(err) {
          console.log(err)
        })
      }).error(function(err) {
        console.log(err)
      })
    }),
    
	 describe('hasSingle', function() {
		it('does not have any labels assigned to it initially', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.hasLabel(label1).success(function(result) {
							expect(result).toBeFalse();
							
							article.hasLabel(label2).success(function(result) {
								expect(result).toBeFalse();
								done();
							});
						});
					});
				});
			});
		 }),
		 
		 it('only answers true if the label has been assigned', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.addLabel(label1).success(function() {
							article.hasLabel(label1).success(function(result) {
								expect(result).toBeTrue();
								
								article.hasLabel(label2).success(function(result) {
									expect(result).toBeFalse();
									done();
								});
							});
						})
					});
				});
			});
		 })
	 }),
	 
	 describe('hasAll', function() {
		it('answers false if only some labels have been assigned', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.addLabel(label1).success(function() {
							article.hasLabels([label1, label2]).success(function(result) {
								expect(result).toBeFalse();
								done();
							});
						})
					});
				});
			});
		 }),
		 
		it('answers true if all label have been assigned', function(done) {
			var self = this;
			
			this.Article.create({
				title: 'Article'
			}).success(function(article) {
				self.Label.create({
					text: 'Awesomeness'
				}).success(function(label1) {
					self.Label.create({
						text: 'Epicness'
					}).success(function(label2) {
						article.setLabels([label1, label2]).success(function() {
							article.hasLabels([label1, label2]).success(function(result) {
								expect(result).toBeTrue();
								done();
							});
						})
					});
				});
			});
		 })
	 });
  })
})
{'fraction_non_alphanumeric': 0.16448230668414154, 'fraction_numerical': 0.0060288335517693315, 'mean_word_length': 2.3885435168738898, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2868404', 'n_tokens_mistral': 3127, 'n_tokens_neox': 2300, 'n_words': 387}